diff --git a/container-images/gerrit-init/tools/gerrit-initializer/initializer/config/init_config.py b/container-images/gerrit-init/tools/gerrit-initializer/initializer/config/init_config.py
index 13e7ef4..ab39275 100644
--- a/container-images/gerrit-init/tools/gerrit-initializer/initializer/config/init_config.py
+++ b/container-images/gerrit-init/tools/gerrit-initializer/initializer/config/init_config.py
@@ -22,6 +22,7 @@
         self.downloaded_plugins = list()
         self.plugin_cache_enabled = False
         self.packaged_plugins = set()
+        self.install_as_library = set()
         self.plugin_cache_dir = None
 
         self.ca_cert_path = True
@@ -40,6 +41,8 @@
             self.downloaded_plugins = config["downloadedPlugins"]
         if "packagedPlugins" in config:
             self.packaged_plugins = set(config["packagedPlugins"])
+        if "installAsLibrary" in config:
+            self.install_as_library = set(config["installAsLibrary"])
         if "pluginCache" in config:
             self.plugin_cache_enabled = config["pluginCache"]
         if "pluginCacheDir" in config and config["pluginCacheDir"]:
diff --git a/container-images/gerrit-init/tools/gerrit-initializer/initializer/tasks/download_plugins.py b/container-images/gerrit-init/tools/gerrit-initializer/initializer/tasks/download_plugins.py
index d2c8e16..2bc2110 100755
--- a/container-images/gerrit-init/tools/gerrit-initializer/initializer/tasks/download_plugins.py
+++ b/container-images/gerrit-init/tools/gerrit-initializer/initializer/tasks/download_plugins.py
@@ -42,6 +42,7 @@
         self.required_plugins = self._get_required_plugins()
 
         self.plugin_dir = os.path.join(site, "plugins")
+        self.lib_dir = os.path.join(site, "lib")
         self.plugins_changed = False
 
     def _create_plugins_dir(self):
@@ -102,6 +103,18 @@
                 os.remove(os.path.join(self.plugin_dir, plugin))
                 LOG.info("Removed plugin %s", plugin)
 
+    def _symlink_plugins_to_lib(self):
+        if not os.path.exists(self.lib_dir):
+            os.makedirs(self.lib_dir)
+        for lib in self.config.install_as_library:
+            plugin_path = os.path.join(self.plugin_dir, "%s.jar" % lib)
+            if os.path.exists(plugin_path):
+                os.symlink(plugin_path, os.path.join(self.lib_dir, "%s.jar" % lib))
+            else:
+                raise FileNotFoundError(
+                    "Could not find plugin %s to symlink to lib-directory." % lib
+                )
+
     def execute(self):
         self._create_plugins_dir()
         self._remove_unwanted_plugins()
@@ -110,6 +123,8 @@
         for plugin in self.config.downloaded_plugins:
             self._install_plugin(plugin)
 
+        self._symlink_plugins_to_lib()
+
     def _download_plugin(self, plugin, target):
         LOG.info("Downloading %s plugin to %s", plugin["name"], target)
         try:
diff --git a/helm-charts/gerrit-replica/templates/gerrit-replica.configmap.yaml b/helm-charts/gerrit-replica/templates/gerrit-replica.configmap.yaml
index 9ba9e1b..12d591e 100644
--- a/helm-charts/gerrit-replica/templates/gerrit-replica.configmap.yaml
+++ b/helm-charts/gerrit-replica/templates/gerrit-replica.configmap.yaml
@@ -34,7 +34,7 @@
 data:
   gerrit-init.yaml: |-
     {{ if .Values.caCert -}}
-    caCertPath: /var/mnt/etc/ca.crt
+    caCertPath: /var/config/ca.crt
     {{- end }}
     pluginCache: {{ .Values.gerritReplica.plugins.cache.enabled }}
     pluginCacheDir: /var/mnt/plugins
@@ -46,3 +46,7 @@
     downloadedPlugins:
 {{ toYaml .Values.gerritReplica.plugins.downloaded | indent 6 }}
     {{- end }}
+    {{- if .Values.gerritReplica.plugins.installAsLibrary }}
+    installAsLibrary:
+{{ toYaml .Values.gerritReplica.plugins.installAsLibrary | indent 6 }}
+    {{- end }}
diff --git a/helm-charts/gerrit-replica/values.yaml b/helm-charts/gerrit-replica/values.yaml
index 58fafd0..aa97ffd 100644
--- a/helm-charts/gerrit-replica/values.yaml
+++ b/helm-charts/gerrit-replica/values.yaml
@@ -283,7 +283,7 @@
     # - name: delete-project
     #   url: https://example.com/gerrit-plugins/delete-project.jar
     #   sha1:
-
+    installAsLibrary: []
     # Only downloaded plugins will be cached. This will be ignored, if no plugins
     # are downloaded.
     cache:
diff --git a/helm-charts/gerrit/templates/gerrit.configmap.yaml b/helm-charts/gerrit/templates/gerrit.configmap.yaml
index 1e6b744..b4ec036 100644
--- a/helm-charts/gerrit/templates/gerrit.configmap.yaml
+++ b/helm-charts/gerrit/templates/gerrit.configmap.yaml
@@ -46,3 +46,7 @@
     downloadedPlugins:
 {{ toYaml .Values.gerrit.plugins.downloaded | indent 6 }}
     {{- end }}
+    {{- if .Values.gerrit.plugins.installAsLibrary }}
+    installAsLibrary:
+{{ toYaml .Values.gerrit.plugins.installAsLibrary | indent 6 }}
+    {{- end }}
diff --git a/helm-charts/gerrit/templates/gerrit.stateful-set.yaml b/helm-charts/gerrit/templates/gerrit.stateful-set.yaml
index e22c71b..4334e60 100644
--- a/helm-charts/gerrit/templates/gerrit.stateful-set.yaml
+++ b/helm-charts/gerrit/templates/gerrit.stateful-set.yaml
@@ -121,7 +121,7 @@
         {{ if .Values.caCert -}}
         - name: tls-ca
           subPath: ca.crt
-          mountPath: "/var/mnt/etc/ca.crt"
+          mountPath: "/var/config/ca.crt"
         {{- end }}
       containers:
       - name: gerrit
diff --git a/helm-charts/gerrit/values.yaml b/helm-charts/gerrit/values.yaml
index a61b777..cc43bcf 100644
--- a/helm-charts/gerrit/values.yaml
+++ b/helm-charts/gerrit/values.yaml
@@ -185,7 +185,7 @@
     # - name: delete-project
     #   url: https://example.com/gerrit-plugins/delete-project.jar
     #   sha1:
-
+    installAsLibrary: []
     # Only downloaded plugins will be cached. This will be ignored, if no plugins
     # are downloaded.
     cache:
diff --git a/tests/container-images/gerrit-init/test_container_integration_gerrit_init.py b/tests/container-images/gerrit-init/test_container_integration_gerrit_init.py
index 566f8f7..3a4c369 100644
--- a/tests/container-images/gerrit-init/test_container_integration_gerrit_init.py
+++ b/tests/container-images/gerrit-init/test_container_integration_gerrit_init.py
@@ -158,3 +158,49 @@
             assert os.path.exists(
                 os.path.join(tmp_site_dir, "plugins", "%s.jar" % plugin)
             )
+
+    def test_libraries_are_symlinked(
+        self, container_run_endless, init_config_dir, tmp_site_dir
+    ):
+        with open(os.path.join(init_config_dir, "init.yaml"), "w") as f:
+            yaml.dump(
+                {"packagedPlugins": ["hooks"], "installAsLibrary": ["hooks"]},
+                f,
+                default_flow_style=False,
+            )
+
+        exit_code, _ = container_run_endless.exec_run(
+            "python3 /var/tools/gerrit-initializer -s /var/gerrit -c /var/config/init.yaml init"
+        )
+        assert exit_code == 0
+
+        assert os.path.exists(os.path.join(tmp_site_dir, "plugins", "%s.jar" % "hooks"))
+        assert os.path.islink(os.path.join(tmp_site_dir, "lib", "%s.jar" % "hooks"))
+
+        exit_code, output = container_run_endless.exec_run(
+            "readlink -f /var/gerrit/lib/hooks.jar"
+        )
+        assert exit_code == 0
+        assert output.decode("utf-8").strip() == "/var/gerrit/plugins/hooks.jar"
+
+    def test_library_symlink_fails_without_plugin(
+        self, container_run_endless, init_config_dir
+    ):
+        with open(os.path.join(init_config_dir, "init.yaml"), "w") as f:
+            yaml.dump(
+                {"packagedPlugins": ["hooks"], "installAsLibrary": ["saml"]},
+                f,
+                default_flow_style=False,
+            )
+
+        exit_code, output = container_run_endless.exec_run(
+            "python3 /var/tools/gerrit-initializer -s /var/gerrit -c /var/config/init.yaml init"
+        )
+        assert exit_code == 1
+        assert (
+            output.decode("utf-8")
+            .strip()
+            .endswith(
+                "FileNotFoundError: Could not find plugin saml to symlink to lib-directory."
+            )
+        )
