diff --git a/WORKSPACE b/WORKSPACE
index abab995..64d7675 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,7 +3,7 @@
 load("//:bazlets.bzl", "load_bazlets")
 
 load_bazlets(
-    commit = "a88174652e6f853ead5bbc5dacc1030dbb2d50c3",
+    commit = "321fab31e6fbb63c940aad3252f0167f88d52e2e",
 )
 
 load(
diff --git a/src/main/java/com/googlesource/gerrit/plugins/events/BranchHelper.java b/src/main/java/com/googlesource/gerrit/plugins/events/BranchHelper.java
index a30b758..8dfa2ae 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/events/BranchHelper.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/events/BranchHelper.java
@@ -14,8 +14,8 @@
 
 package com.googlesource.gerrit.plugins.events;
 
-import com.google.gerrit.reviewdb.client.Branch;
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.entities.BranchNameKey;
+import com.google.gerrit.entities.Project;
 import com.google.gerrit.server.IdentifiedUser;
 import com.google.gerrit.server.permissions.PermissionBackend;
 import com.google.gerrit.server.permissions.PermissionBackendException;
@@ -44,20 +44,20 @@
     }
   }
 
-  public boolean isVisibleTo(Branch.NameKey branchName, IdentifiedUser user)
+  public boolean isVisibleTo(BranchNameKey branchName, IdentifiedUser user)
       throws PermissionBackendException {
     if (branchName == null) {
       return false;
     }
-    ProjectState pe = projectCache.get(branchName.getParentKey());
+    ProjectState pe = projectCache.get(branchName.project());
     if (pe == null) {
       return false;
     }
     return permissionBackend.user(user).ref(branchName).test(RefPermission.READ);
   }
 
-  public static Branch.NameKey getBranch(JsonElement event) {
-    Branch.NameKey b = null;
+  public static BranchNameKey getBranch(JsonElement event) {
+    BranchNameKey b = null;
     if (event != null) {
       JsonObject obj = event.getAsJsonObject();
       // Known events of this type:
@@ -78,7 +78,7 @@
     return b;
   }
 
-  protected static Branch.NameKey getBranch(JsonObject projectParent) {
+  protected static BranchNameKey getBranch(JsonObject projectParent) {
     Project.NameKey project = getProject(projectParent);
     if (project != null) {
       // Known events of this type:
@@ -99,7 +99,7 @@
       if (branch != null) {
         String name = asString(branch);
         if (name != null) {
-          return new Branch.NameKey(project, name);
+          return BranchNameKey.create(project, name);
         }
       }
     }
@@ -120,7 +120,7 @@
           }
         }
         if (name != null) {
-          return new Project.NameKey(name);
+          return Project.nameKey(name);
         }
       }
     }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/events/CoreListener.java b/src/main/java/com/googlesource/gerrit/plugins/events/CoreListener.java
index b71e1c2..dd1463f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/events/CoreListener.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/events/CoreListener.java
@@ -15,11 +15,13 @@
 package com.googlesource.gerrit.plugins.events;
 
 import com.google.common.base.Supplier;
+import com.google.gerrit.entities.Change;
+import com.google.gerrit.entities.Project;
 import com.google.gerrit.extensions.registration.DynamicSet;
-import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.server.change.ChangeKeyAdapter;
 import com.google.gerrit.server.events.Event;
 import com.google.gerrit.server.events.EventListener;
-import com.google.gerrit.server.events.ProjectNameKeySerializer;
+import com.google.gerrit.server.events.ProjectNameKeyAdapter;
 import com.google.gerrit.server.events.SupplierSerializer;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
@@ -36,7 +38,8 @@
   protected static final Gson gson =
       new GsonBuilder()
           .registerTypeAdapter(Supplier.class, new SupplierSerializer())
-          .registerTypeAdapter(Project.NameKey.class, new ProjectNameKeySerializer())
+          .registerTypeAdapter(Project.NameKey.class, new ProjectNameKeyAdapter())
+          .registerTypeAdapter(Change.Key.class, new ChangeKeyAdapter())
           .create();
   protected final DynamicSet<StreamEventListener> listeners;
   protected final EventStore store;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/events/StreamEvents.java b/src/main/java/com/googlesource/gerrit/plugins/events/StreamEvents.java
index ce9ff2b..b424923 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/events/StreamEvents.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/events/StreamEvents.java
@@ -33,6 +33,7 @@
 import java.util.concurrent.Future;
 import java.util.concurrent.ScheduledThreadPoolExecutor;
 import org.apache.sshd.server.Environment;
+import org.apache.sshd.server.channel.ChannelSession;
 import org.kohsuke.args4j.Option;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -100,7 +101,7 @@
   protected volatile boolean shuttingDown = false;
 
   @Override
-  public void start(final Environment env) throws IOException {
+  public void start(ChannelSession channel, Environment env) throws IOException {
     try {
       parseCommandLine();
     } catch (UnloggedFailure e) {
@@ -163,7 +164,7 @@
   }
 
   @Override
-  protected void onExit(final int rc) {
+  protected void onExit(int rc) {
     unsubscribe();
     synchronized (crossThreadlock) {
       shuttingDown = true;
@@ -172,7 +173,7 @@
   }
 
   @Override
-  public void destroy() {
+  public void destroy(ChannelSession channel) {
     unsubscribe();
     synchronized (crossThreadlock) {
       boolean alreadyShuttingDown = shuttingDown;
diff --git a/test/docker/gerrit/Dockerfile b/test/docker/gerrit/Dockerfile
index e60e289..73be59b 100755
--- a/test/docker/gerrit/Dockerfile
+++ b/test/docker/gerrit/Dockerfile
@@ -1,4 +1,4 @@
-FROM gerritcodereview/gerrit:3.0.16-ubuntu18
+FROM gerritcodereview/gerrit:3.1.15-ubuntu18
 
 USER root
 
diff --git a/test/test_events_plugin.sh b/test/test_events_plugin.sh
index 73f7641..e76532a 100755
--- a/test/test_events_plugin.sh
+++ b/test/test_events_plugin.sh
@@ -244,12 +244,12 @@
 result_type "$GROUP $type" "ref-updated" 2
 
 type=change-abandoned
-capture_events 3
+capture_events 2
 review "$ch1,1" --abandon
 result_type "$GROUP" "$type"
 
 type=change-restored
-capture_events 3
+capture_events 2
 review "$ch1,1" --restore
 result_type "$GROUP" "$type"
 
