diff --git a/WORKSPACE b/WORKSPACE
index 89eeeb3..0024912 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,7 +3,7 @@
 load("//:bazlets.bzl", "load_bazlets")
 
 load_bazlets(
-    commit = "c827ba79413585ab9dfc1bbd0d7f609eedd6aa80",
+    commit = "316b66f48048c1ee05d8525568f2533cff5ea252",
     #local_path = "/home/<user>/projects/bazlets",
 )
 
diff --git a/src/main/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatDaemon.java b/src/main/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatDaemon.java
index 9115e0a..3def212 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatDaemon.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatDaemon.java
@@ -19,7 +19,6 @@
 import com.google.gerrit.extensions.registration.DynamicItem;
 import com.google.gerrit.server.events.EventDispatcher;
 import com.google.gerrit.server.permissions.PermissionBackendException;
-import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 import java.util.Timer;
@@ -66,7 +65,7 @@
     public void run() {
       try {
         dispatcher.get().postEvent(new HeartbeatEvent());
-      } catch (OrmException | PermissionBackendException e) {
+      } catch (PermissionBackendException e) {
         logger.atSevere().withCause(e).log("Failed to post heartbeat event");
       }
     }
diff --git a/src/test/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatConfigTest.java b/src/test/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatConfigTest.java
index 08821a7..273fcc8 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatConfigTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatConfigTest.java
@@ -17,8 +17,6 @@
 import static org.junit.Assert.assertEquals;
 
 import com.google.gerrit.server.config.SitePaths;
-import com.google.gwtorm.client.KeyUtil;
-import com.google.gwtorm.server.StandardKeyEncoder;
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
@@ -29,11 +27,6 @@
 import org.junit.Test;
 
 public class HeartbeatConfigTest {
-
-  static {
-    KeyUtil.setEncoderImpl(new StandardKeyEncoder());
-  }
-
   private SitePaths sitePaths;
   private HeartbeatConfig heartbeatConfig;
 
diff --git a/src/test/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatDaemonTest.java b/src/test/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatDaemonTest.java
index 90de35b..35c8347 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatDaemonTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatDaemonTest.java
@@ -24,21 +24,12 @@
 import static org.easymock.EasyMock.verify;
 
 import com.google.gerrit.extensions.registration.DynamicItem;
-import com.google.gerrit.reviewdb.server.ReviewDb;
 import com.google.gerrit.server.events.EventDispatcher;
-import com.google.gwtorm.client.KeyUtil;
-import com.google.gwtorm.server.SchemaFactory;
-import com.google.gwtorm.server.StandardKeyEncoder;
 import java.util.concurrent.TimeUnit;
 import org.junit.Before;
 import org.junit.Test;
 
 public class HeartbeatDaemonTest {
-
-  static {
-    KeyUtil.setEncoderImpl(new StandardKeyEncoder());
-  }
-
   private EventDispatcher eventDispatcherMock;
   private HeartbeatDaemon heartbeatDaemon;
 
@@ -53,9 +44,6 @@
     HeartbeatConfig heartbeatConfigMock = createMock(HeartbeatConfig.class);
     expect(heartbeatConfigMock.getDelay()).andReturn(1).anyTimes();
     replay(heartbeatConfigMock);
-    SchemaFactory<ReviewDb> schemaFactoryMock = createNiceMock(SchemaFactory.class);
-    expect(schemaFactoryMock.open()).andReturn(createNiceMock(ReviewDb.class)).anyTimes();
-    replay(schemaFactoryMock);
     heartbeatDaemon = new HeartbeatDaemon(dynamicEventDispatcherMock, heartbeatConfigMock);
   }
 
diff --git a/src/test/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatIT.java b/src/test/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatIT.java
index f537fa2..98d87ad 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatIT.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/heartbeat/HeartbeatIT.java
@@ -55,7 +55,7 @@
 
               @Override
               public CurrentUser getUser() {
-                return identifiedUserFactory.create(user.id);
+                return identifiedUserFactory.create(user.id());
               }
             });
     assertWithMessage("heartbeat event received")
