diff --git a/src/main/java/com/googlesource/gerrit/plugins/refprotection/BackupRef.java b/src/main/java/com/googlesource/gerrit/plugins/refprotection/BackupRef.java
index 30eaeca..dd4e21b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/refprotection/BackupRef.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/refprotection/BackupRef.java
@@ -38,9 +38,9 @@
 import com.google.gerrit.server.events.RefUpdatedEvent;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.permissions.PermissionBackendException;
-import com.google.gerrit.server.project.CreateBranch;
 import com.google.gerrit.server.project.NoSuchProjectException;
 import com.google.gerrit.server.project.ProjectResource;
+import com.google.gerrit.server.restapi.project.CreateBranch;
 import com.google.inject.Inject;
 import java.io.IOException;
 import java.text.SimpleDateFormat;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/refprotection/RefProtectionModule.java b/src/main/java/com/googlesource/gerrit/plugins/refprotection/RefProtectionModule.java
index 0f00282..f4e755a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/refprotection/RefProtectionModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/refprotection/RefProtectionModule.java
@@ -23,8 +23,8 @@
  */
 package com.googlesource.gerrit.plugins.refprotection;
 
-import com.google.gerrit.common.EventListener;
 import com.google.gerrit.extensions.registration.DynamicSet;
+import com.google.gerrit.server.events.EventListener;
 import com.google.inject.AbstractModule;
 
 public class RefProtectionModule extends AbstractModule {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/refprotection/RefUpdateListener.java b/src/main/java/com/googlesource/gerrit/plugins/refprotection/RefUpdateListener.java
index bca99a1..fba7e2b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/refprotection/RefUpdateListener.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/refprotection/RefUpdateListener.java
@@ -26,18 +26,19 @@
 import static org.eclipse.jgit.lib.Constants.R_HEADS;
 import static org.eclipse.jgit.lib.Constants.R_TAGS;
 
-import com.google.gerrit.common.EventListener;
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.CurrentUser;
 import com.google.gerrit.server.config.PluginConfigFactory;
 import com.google.gerrit.server.data.RefUpdateAttribute;
 import com.google.gerrit.server.events.Event;
+import com.google.gerrit.server.events.EventListener;
 import com.google.gerrit.server.events.RefUpdatedEvent;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.project.NoSuchProjectException;
-import com.google.gerrit.server.project.ProjectControl;
+import com.google.gerrit.server.project.ProjectCache;
 import com.google.gerrit.server.project.ProjectResource;
+import com.google.gerrit.server.project.ProjectState;
 import com.google.inject.Inject;
 import java.io.IOException;
 import org.eclipse.jgit.errors.RepositoryNotFoundException;
@@ -51,7 +52,7 @@
 class RefUpdateListener implements EventListener {
 
   private static final Logger log = LoggerFactory.getLogger(RefUpdateListener.class);
-  private final ProjectControl.GenericFactory projectControl;
+  private final ProjectCache projectCache;
   private final CurrentUser user;
   private final GitRepositoryManager repoManager;
   private final BackupRef backupRef;
@@ -60,13 +61,13 @@
 
   @Inject
   RefUpdateListener(
-      ProjectControl.GenericFactory p,
+      ProjectCache projectCache,
       CurrentUser user,
       GitRepositoryManager repoManager,
       BackupRef backupRef,
       PluginConfigFactory cfg,
       @PluginName String pluginName) {
-    this.projectControl = p;
+    this.projectCache = projectCache;
     this.user = user;
     this.repoManager = repoManager;
     this.backupRef = backupRef;
@@ -80,9 +81,8 @@
     if (event instanceof RefUpdatedEvent) {
       RefUpdatedEvent refUpdate = (RefUpdatedEvent) event;
       if ((protectDeleted || protectFastForward) && isRelevantRef(refUpdate)) {
-        Project.NameKey nameKey = refUpdate.getProjectNameKey();
         try {
-          ProjectResource project = new ProjectResource(projectControl.controlFor(nameKey, user));
+          ProjectResource project = getProjectResource(refUpdate.getProjectNameKey());
           if ((protectDeleted && isRefDeleted(refUpdate))
               || (protectFastForward && isNonFastForwardUpdate(refUpdate, project))) {
             backupRef.createBackup(refUpdate, project);
@@ -94,6 +94,15 @@
     }
   }
 
+  private ProjectResource getProjectResource(Project.NameKey nameKey)
+      throws IOException, NoSuchProjectException {
+    ProjectState state = projectCache.checkedGet(nameKey);
+    if (state == null) {
+      throw new NoSuchProjectException(nameKey);
+    }
+    return new ProjectResource(state, user);
+  }
+
   /**
    * Is the event on a relevant ref?
    *
