diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetOwner.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetOwner.java
index 45ad2ba..d7cd3d2 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetOwner.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetOwner.java
@@ -34,20 +34,23 @@
 @Singleton
 class GetOwner implements RestReadView<ServiceUserResource> {
   private final GroupsCollection groups;
-  private final ProjectLevelConfig storage;
+  private final String pluginName;
+  private final ProjectCache projectCache;
   private final GroupJson json;
 
   @Inject
   GetOwner(GroupsCollection groups, @PluginName String pluginName,
       ProjectCache projectCache, GroupJson json) {
     this.groups = groups;
-    this.storage = projectCache.getAllProjects().getConfig(pluginName + ".db");
+    this.pluginName = pluginName;
+    this.projectCache = projectCache;
     this.json = json;
   }
 
   @Override
   public Response<GroupInfo> apply(ServiceUserResource rsrc)
       throws ResourceNotFoundException, OrmException {
+    ProjectLevelConfig storage = projectCache.getAllProjects().getConfig(pluginName + ".db");
     String owner = storage.get().getString(USER, rsrc.getUser().getUserName(), KEY_OWNER);
     if (owner != null) {
       GroupDescription.Basic group = groups.parseId(owner);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetServiceUser.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetServiceUser.java
index 6056524..497bc47 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetServiceUser.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetServiceUser.java
@@ -39,7 +39,8 @@
 @Singleton
 class GetServiceUser implements RestReadView<ServiceUserResource> {
   private final Provider<GetAccount> getAccount;
-  private final ProjectLevelConfig storage;
+  private final String pluginName;
+  private final ProjectCache projectCache;
   private final GetOwner getOwner;
   private final AccountInfo.Loader.Factory accountLoader;
 
@@ -48,7 +49,8 @@
       @PluginName String pluginName, ProjectCache projectCache,
       GetOwner getOwner, AccountInfo.Loader.Factory accountLoader) {
     this.getAccount = getAccount;
-    this.storage = projectCache.getAllProjects().getConfig(pluginName + ".db");
+    this.pluginName = pluginName;
+    this.projectCache = projectCache;
     this.getOwner = getOwner;
     this.accountLoader = accountLoader;
   }
@@ -56,6 +58,7 @@
   @Override
   public ServiceUserInfo apply(ServiceUserResource rsrc)
       throws ResourceNotFoundException, OrmException {
+    ProjectLevelConfig storage = projectCache.getAllProjects().getConfig(pluginName + ".db");
     String username = rsrc.getUser().getUserName();
     Config db = storage.get();
     if (!db.getSubsections(USER).contains(username)) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ListServiceUsers.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ListServiceUsers.java
index b295df2..e6e4e06 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ListServiceUsers.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ListServiceUsers.java
@@ -42,7 +42,8 @@
 @Singleton
 class ListServiceUsers implements RestReadView<ConfigResource> {
   private final Provider<CurrentUser> userProvider;
-  private final ProjectLevelConfig storage;
+  private final String pluginName;
+  private final ProjectCache projectCache;
   private final AccountCache accountCache;
   private final Provider<ServiceUserCollection> serviceUsers;
   private final Provider<GetServiceUser> getServiceUser;
@@ -53,7 +54,8 @@
       AccountCache accountCache, Provider<ServiceUserCollection> serviceUsers,
       Provider<GetServiceUser> getServiceUser) {
     this.userProvider = userProvider;
-    this.storage = projectCache.getAllProjects().getConfig(pluginName + ".db");
+    this.pluginName = pluginName;
+    this.projectCache = projectCache;
     this.accountCache = accountCache;
     this.serviceUsers = serviceUsers;
     this.getServiceUser = getServiceUser;
@@ -62,6 +64,7 @@
   @Override
   public Map<String, ServiceUserInfo> apply(ConfigResource rscr)
       throws OrmException, AuthException {
+    ProjectLevelConfig storage = projectCache.getAllProjects().getConfig(pluginName + ".db");
     CurrentUser user = userProvider.get();
     if (user == null || !user.isIdentifiedUser()) {
       throw new AuthException("Authentication required");
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutOwner.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutOwner.java
index be3c3c5..f411dfc 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutOwner.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutOwner.java
@@ -57,7 +57,8 @@
 
   private final Provider<GetConfig> getConfig;
   private final GroupsCollection groups;
-  private final ProjectLevelConfig storage;
+  private final String pluginName;
+  private final ProjectCache projectCache;
   private final Project.NameKey allProjects;
   private final MetaDataUpdate.User metaDataUpdateFactory;
   private final GroupJson json;
@@ -70,7 +71,8 @@
       Provider<CurrentUser> self) {
     this.getConfig = getConfig;
     this.groups = groups;
-    this.storage = projectCache.getAllProjects().getConfig(pluginName + ".db");
+    this.pluginName = pluginName;
+    this.projectCache = projectCache;
     this.allProjects = projectCache.getAllProjects().getProject().getNameKey();
     this.metaDataUpdateFactory = metaDataUpdateFactory;
     this.json = json;
@@ -81,6 +83,7 @@
   public Response<GroupInfo> apply(ServiceUserResource rsrc, Input input)
       throws UnprocessableEntityException, RepositoryNotFoundException,
       MethodNotAllowedException, IOException, OrmException, ResourceConflictException {
+    ProjectLevelConfig storage = projectCache.getAllProjects().getConfig(pluginName + ".db");
     Boolean ownerAllowed = getConfig.get().apply(new ConfigResource()).allowOwner;
     if ((ownerAllowed == null || !ownerAllowed)
         && !self.get().getCapabilities().canAdministrateServer()) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/RefUpdateListener.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/RefUpdateListener.java
index 5d709a2..0638922 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/RefUpdateListener.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/RefUpdateListener.java
@@ -42,7 +42,8 @@
   private final CreateServiceUserNotes.Factory serviceUserNotesFactory;
   private final GitRepositoryManager repoManager;
   private final WorkQueue workQueue;
-  private final PluginConfig cfg;
+  private final PluginConfigFactory cfgFactory;
+  private final String pluginName;
 
   @Inject
   RefUpdateListener(CreateServiceUserNotes.Factory serviceUserNotesFactory,
@@ -51,11 +52,13 @@
     this.serviceUserNotesFactory = serviceUserNotesFactory;
     this.repoManager = repoManager;
     this.workQueue = workQueue;
-    this.cfg = cfgFactory.getFromGerritConfig(pluginName);
+    this.cfgFactory = cfgFactory;
+    this.pluginName = pluginName;
   }
 
   @Override
   public void onGitReferenceUpdated(final Event event) {
+    PluginConfig cfg = cfgFactory.getFromGerritConfig(pluginName);
     if (!cfg.getBoolean("createNotes", true)) {
       return;
     }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserCollection.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserCollection.java
index 19ef84c..12d8d1c 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserCollection.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserCollection.java
@@ -50,7 +50,8 @@
   private final CreateServiceUser.Factory createServiceUserFactory;
   private final Provider<ListServiceUsers> list;
   private final Provider<AccountsCollection> accounts;
-  private final ProjectLevelConfig storage;
+  private final String pluginName;
+  private final ProjectCache projectCache;
   private final Provider<CurrentUser> userProvider;
   private final GroupsCollection groups;
 
@@ -64,7 +65,8 @@
     this.createServiceUserFactory = createServiceUserFactory;
     this.list = list;
     this.accounts = accounts;
-    this.storage = projectCache.getAllProjects().getConfig(pluginName + ".db");
+    this.pluginName = pluginName;
+    this.projectCache = projectCache;
     this.userProvider = userProvider;
     this.groups = groups;
   }
@@ -72,6 +74,7 @@
   @Override
   public ServiceUserResource parse(ConfigResource parent, IdString id)
       throws ResourceNotFoundException, AuthException, OrmException {
+    ProjectLevelConfig storage = projectCache.getAllProjects().getConfig(pluginName + ".db");
     IdentifiedUser serviceUser = accounts.get().parseId(id.get());
     if (serviceUser == null
         || !storage.get().getSubsections(USER)
