diff --git a/.bazelversion b/.bazelversion
index 9084fa2..227cea2 100644
--- a/.bazelversion
+++ b/.bazelversion
@@ -1 +1 @@
-1.1.0
+2.0.0
diff --git a/.gitignore b/.gitignore
index 8c58b98..ec6ea01 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,4 @@
 /buck-cache
 /buck-out
 *.iml
+/.apt_generated/
diff --git a/BUILD b/BUILD
index 82c5dfb..9acc76b 100644
--- a/BUILD
+++ b/BUILD
@@ -5,7 +5,7 @@
     srcs = glob(["src/main/java/**/*.java"]),
     manifest_entries = [
         "Gerrit-PluginName: batch",
-        "Gerrit-ApiVersion: 2.15",
+        "Gerrit-ApiVersion: 2.16",
         "Implementation-Title: Batch Plugin",
         "Implementation-URL: https://gerrit-review.googlesource.com/#/admin/projects/plugins/batch",
         "Gerrit-Module: com.googlesource.gerrit.plugins.batch.Module",
diff --git a/WORKSPACE b/WORKSPACE
index 4f05d1e..74abe61 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,7 +3,7 @@
 load("//:bazlets.bzl", "load_bazlets")
 
 load_bazlets(
-    commit = "f53f51fb660552d0581aa0ba52c3836ed63d56a3",
+    commit = "59529f046a5cb855d9fe3ee87110d53305ec69b9",
     #local_path = "/home/<user>/projects/bazlets",
 )
 
diff --git a/pom.xml b/pom.xml
index fecdcb7..e17b6ba 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,7 +22,7 @@
   <groupId>com.googlesource.gerrit.plugins.batch</groupId>
   <artifactId>batch</artifactId>
   <packaging>jar</packaging>
-  <version>2.15.7</version>
+  <version>2.16.11.1</version>
   <name>batch</name>
 
   <properties>
diff --git a/src/main/java/com/google/gerrit/server/git/meta/GitFile.java b/src/main/java/com/google/gerrit/server/git/meta/GitFile.java
index beca5b3..ce9505e 100644
--- a/src/main/java/com/google/gerrit/server/git/meta/GitFile.java
+++ b/src/main/java/com/google/gerrit/server/git/meta/GitFile.java
@@ -18,8 +18,6 @@
 import com.google.gerrit.reviewdb.client.File;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.git.GitRepositoryManager;
-import com.google.gerrit.server.git.MetaDataUpdate;
-import com.google.gerrit.server.git.VersionedMetaData;
 import com.google.gerrit.server.project.NoSuchProjectException;
 import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
@@ -58,7 +56,7 @@
   public String read() throws ConfigInvalidException, IOException, NoSuchProjectException {
     Project.NameKey project = branch.getParentKey();
     try (Repository repo = repos.openRepository(project)) {
-      load(repo);
+      load(project, repo);
       return text;
     } catch (RepositoryNotFoundException e) {
       throw new NoSuchProjectException(project);
diff --git a/src/main/java/com/google/gerrit/server/util/RefUpdater.java b/src/main/java/com/google/gerrit/server/util/RefUpdater.java
index c2c700d..818d857 100644
--- a/src/main/java/com/google/gerrit/server/util/RefUpdater.java
+++ b/src/main/java/com/google/gerrit/server/util/RefUpdater.java
@@ -13,6 +13,7 @@
 // limitations under the License.
 package com.google.gerrit.server.util;
 
+import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.reviewdb.client.Branch;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.CurrentUser;
@@ -32,11 +33,9 @@
 import org.eclipse.jgit.lib.PersonIdent;
 import org.eclipse.jgit.lib.RefUpdate;
 import org.eclipse.jgit.lib.Repository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class RefUpdater {
-  private static final Logger log = LoggerFactory.getLogger(RefUpdater.class);
+  private static final FluentLogger log = FluentLogger.forEnclosingClass();
 
   public class Args {
     public final Branch.NameKey branch;
@@ -142,7 +141,8 @@
           initUpdate();
           handleResult(runUpdate());
         } catch (IOException err) {
-          log.error("RefUpdate failed: branch not updated: " + branch.get(), err);
+          log.atSevere().withCause(err).log(
+              "RefUpdate failed: branch not updated: %s", branch.get());
           throw err;
         } finally {
           repo.close();
@@ -202,8 +202,8 @@
             project, update.getName(), update.getOldObjectId(), args.newObjectId);
       }
       if (userProvider.get().isIdentifiedUser()) {
-        AccountState accountState = accountCache.get(userProvider.get().getAccountId());
-        gitRefUpdated.fire(project, update, accountState.getAccount());
+        AccountState accountState = accountCache.get(userProvider.get().getAccountId()).get();
+        gitRefUpdated.fire(project, update, accountState);
       }
     }
   }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/BatchCleaner.java b/src/main/java/com/googlesource/gerrit/plugins/batch/BatchCleaner.java
index b099fa6..e0fb174 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/batch/BatchCleaner.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/batch/BatchCleaner.java
@@ -17,6 +17,7 @@
 import static java.util.concurrent.TimeUnit.DAYS;
 import static java.util.concurrent.TimeUnit.MINUTES;
 
+import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.events.LifecycleListener;
 import com.google.gerrit.server.CurrentUser;
@@ -30,12 +31,10 @@
 import java.util.ArrayList;
 import java.util.concurrent.ScheduledFuture;
 import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /** Clean up expired batches daily. */
 public class BatchCleaner implements CancelableRunnable {
-  private static final Logger log = LoggerFactory.getLogger(BatchCleaner.class);
+  private static final FluentLogger log = FluentLogger.forEnclosingClass();
 
   public static class Lifecycle implements LifecycleListener {
     public static final long DEFAULT_START_MINUTES = MINUTES.convert(1, MINUTES);
@@ -119,7 +118,7 @@
     try {
       batches = list.getBatches();
     } catch (Exception e) {
-      log.error("getting list of batches to clean.", e);
+      log.atSevere().withCause(e).log("getting list of batches to clean.");
       // Ignore errors and hope someone notices the log file and fixes before the next run
       return;
     }
@@ -131,7 +130,7 @@
       try {
         remover.remove(batch.id);
       } catch (Exception e) {
-        log.error("cleaning batch: " + batch.id, e);
+        log.atSevere().withCause(e).log("cleaning batch: %s", batch.id);
         // Ignore errors and hope someone notices the log file and fixes before the next run
       }
     }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/BatchStore.java b/src/main/java/com/googlesource/gerrit/plugins/batch/BatchStore.java
index 6d693df..9c0db7b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/batch/BatchStore.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/batch/BatchStore.java
@@ -29,7 +29,6 @@
 import java.util.ConcurrentModificationException;
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
 import javax.inject.Singleton;
 import org.eclipse.jgit.errors.ConfigInvalidException;
 import org.eclipse.jgit.lib.Ref;
@@ -62,10 +61,9 @@
   public List<Batch> find(boolean includeBatchInfo) throws IOException {
     List<Batch> batches = new ArrayList<>();
     try (Repository repo = repoManager.openRepository(project)) {
-      for (Map.Entry<String, Ref> entry : repo.getRefDatabase().getRefs(BATCHES_REF).entrySet()) {
+      for (Ref ref : repo.getRefDatabase().getRefsByPrefix(BATCHES_REF)) {
         try {
-          batches.add(
-              (includeBatchInfo == true) ? read(entry.getKey()) : new Batch(entry.getKey()));
+          batches.add((includeBatchInfo == true) ? read(ref.getName()) : new Batch(ref.getName()));
         } catch (NoSuchBatchException e) {
           continue;
         }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/BatchSubmitter.java b/src/main/java/com/googlesource/gerrit/plugins/batch/BatchSubmitter.java
index 7697dab..3893d3c 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/batch/BatchSubmitter.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/batch/BatchSubmitter.java
@@ -14,7 +14,7 @@
 
 package com.googlesource.gerrit.plugins.batch;
 
-import com.google.gerrit.common.TimeUtil;
+import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.extensions.restapi.AuthException;
 import com.google.gerrit.extensions.restapi.RestApiException;
 import com.google.gerrit.reviewdb.client.Branch;
@@ -26,6 +26,8 @@
 import com.google.gerrit.server.PatchSetUtil;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.git.MergedByPushOp;
+import com.google.gerrit.server.logging.RequestId;
+import com.google.gerrit.server.logging.TraceContext;
 import com.google.gerrit.server.notedb.ChangeNotes;
 import com.google.gerrit.server.permissions.ChangePermission;
 import com.google.gerrit.server.permissions.PermissionBackend;
@@ -35,24 +37,21 @@
 import com.google.gerrit.server.update.BatchUpdate;
 import com.google.gerrit.server.update.UpdateException;
 import com.google.gerrit.server.util.RefUpdater;
-import com.google.gerrit.server.util.RequestId;
 import com.google.gerrit.server.util.RequestScopePropagator;
+import com.google.gerrit.server.util.time.TimeUtil;
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
 import com.googlesource.gerrit.plugins.batch.exception.NoSuchBatchException;
 import java.io.IOException;
-import java.util.Collection;
 import org.eclipse.jgit.errors.RepositoryNotFoundException;
 import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.ObjectInserter;
 import org.eclipse.jgit.lib.ObjectReader;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class BatchSubmitter {
-  private static final Logger log = LoggerFactory.getLogger(BatchSubmitter.class);
+  private static final FluentLogger log = FluentLogger.forEnclosingClass();
 
   protected final ReviewDb db;
   protected final GitRepositoryManager repoManager;
@@ -126,9 +125,7 @@
           RestApiException, UpdateException, PermissionBackendException {
     for (Batch.Destination dest : batch.listDestinations()) {
       updateRef(dest);
-      if (dest.changes != null) {
-        closeChanges(dest.changes);
-      }
+      closeChanges(dest);
     }
   }
 
@@ -139,15 +136,17 @@
     refUpdater.forceUpdate(branch, ObjectId.fromString(dest.sha1));
   }
 
-  private void closeChanges(Collection<Batch.Change> changes)
+  private void closeChanges(Batch.Destination dest)
       throws IOException, OrmException, RepositoryNotFoundException, RestApiException,
           UpdateException, PermissionBackendException {
-    for (Batch.Change change : changes) {
-      closeChange(change.toPatchSetId());
+    if (dest.changes != null) {
+      for (Batch.Change change : dest.changes) {
+        closeChange(change.toPatchSetId(), dest.sha1);
+      }
     }
   }
 
-  private void closeChange(PatchSet.Id psId)
+  private void closeChange(PatchSet.Id psId, String sha1)
       throws IOException, OrmException, RepositoryNotFoundException, RestApiException,
           UpdateException, PermissionBackendException {
     ChangeNotes changeNotes = notesFactory.createChecked(psId.getParentKey());
@@ -155,7 +154,7 @@
     Change change = changeNotes.getChange();
     PatchSet ps = psUtil.get(db, changeNotes, psId);
     if (change == null || ps == null) {
-      log.error("" + psId + " is missing");
+      log.atSevere().log("%s is missing", psId);
       return;
     }
 
@@ -166,18 +165,19 @@
     Branch.NameKey destination = change.getDest();
     Project.NameKey project = destination.getParentKey();
 
-    try (Repository repo = repoManager.openRepository(project);
+    try (TraceContext traceContext =
+            TraceContext.open()
+                .addTag(RequestId.Type.SUBMISSION_ID, new RequestId(change.getId().toString()));
+        Repository repo = repoManager.openRepository(project);
         BatchUpdate bu = batchUpdateFactory.create(db, project, user, TimeUtil.nowTs());
         ObjectInserter ins = repo.newObjectInserter();
         ObjectReader reader = ins.newReader();
         RevWalk walk = new RevWalk(reader)) {
       bu.setRepository(repo, walk, ins).updateChangesInParallel();
-      bu.setRequestId(RequestId.forChange(change));
       bu.setRefLogMessage("merged (batch submit)");
-
       bu.addOp(
           psId.getParentKey(),
-          mergedByPushOpFactory.create(requestScopePropagator, psId, destination.get()));
+          mergedByPushOpFactory.create(requestScopePropagator, psId, destination.get(), sha1));
       bu.execute();
     }
   }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/ssh/MergeChangeCommand.java b/src/main/java/com/googlesource/gerrit/plugins/batch/ssh/MergeChangeCommand.java
index 444b148..37b4428 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/batch/ssh/MergeChangeCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/batch/ssh/MergeChangeCommand.java
@@ -18,7 +18,6 @@
 import com.google.gerrit.reviewdb.client.PatchSet;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.reviewdb.server.ReviewDb;
-import com.google.gerrit.server.IdentifiedUser;
 import com.google.gerrit.server.OutputFormat;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.project.NoSuchRefException;
@@ -86,7 +85,6 @@
   @Inject protected MergeBranch.Factory mergeBranchFactory;
   @Inject protected BatchCloser batchCloser;
   @Inject protected ReviewDb db;
-  @Inject protected IdentifiedUser user;
   @Inject protected GitRepositoryManager repoManager;
   protected Map<PatchSet.Id, List<ObjectId>> parentsByPsarg = new HashMap<>();
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/util/MergeBranch.java b/src/main/java/com/googlesource/gerrit/plugins/batch/util/MergeBranch.java
index c766351..5d9323e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/batch/util/MergeBranch.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/batch/util/MergeBranch.java
@@ -14,16 +14,16 @@
 package com.googlesource.gerrit.plugins.batch.util;
 
 import com.google.gerrit.common.Nullable;
-import com.google.gerrit.extensions.client.InheritableBoolean;
 import com.google.gerrit.extensions.restapi.BadRequestException;
+import com.google.gerrit.reviewdb.client.BooleanProjectConfig;
 import com.google.gerrit.reviewdb.client.Branch;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.reviewdb.client.RefNames;
 import com.google.gerrit.server.git.GitRepositoryManager;
-import com.google.gerrit.server.git.IntegrationException;
 import com.google.gerrit.server.project.NoSuchRefException;
 import com.google.gerrit.server.project.ProjectCache;
 import com.google.gerrit.server.project.ProjectState;
+import com.google.gerrit.server.submit.IntegrationException;
 import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
 import com.googlesource.gerrit.plugins.batch.util.MergeBuilder.FastForwardMode;
@@ -112,8 +112,8 @@
 
   protected MergeStrategy defaultStrategy(MergeStrategy strategy) {
     if (strategy == null) {
-      Project project = projectFromName(projectName);
-      if (project != null && project.getUseContentMerge() == InheritableBoolean.TRUE) {
+      ProjectState project = projectFromName(projectName);
+      if (project != null && project.is(BooleanProjectConfig.USE_CONTENT_MERGE)) {
         return MergeStrategy.RESOLVE;
       }
       return MergeStrategy.SIMPLE_TWO_WAY_IN_CORE;
@@ -121,11 +121,8 @@
     return strategy;
   }
 
-  protected Project projectFromName(Project.NameKey name) {
+  protected ProjectState projectFromName(Project.NameKey name) {
     ProjectState ps = projectCache.get(name);
-    if (ps == null) {
-      return null;
-    }
-    return ps.getProject();
+    return ps != null ? ps : null;
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/util/MergeBuilder.java b/src/main/java/com/googlesource/gerrit/plugins/batch/util/MergeBuilder.java
index 6e5c4a8..72bd980 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/batch/util/MergeBuilder.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/batch/util/MergeBuilder.java
@@ -18,7 +18,7 @@
 import com.google.gerrit.server.GerritPersonIdent;
 import com.google.gerrit.server.IdentifiedUser;
 import com.google.gerrit.server.git.GitRepositoryManager;
-import com.google.gerrit.server.git.IntegrationException;
+import com.google.gerrit.server.submit.IntegrationException;
 import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
 import java.io.IOException;
