diff --git a/.travis.yml b/.travis.yml
index 15abc33..4baa578 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -26,7 +26,7 @@
   - ant
   - export PATH=$PATH:$TRAVIS_BUILD_DIR/../../build/buck/bin
   - cd ..
-  - git clone -b stable-2.10 https://gerrit.googlesource.com/gerrit
+  - git clone -b stable-2.11 https://gerrit.googlesource.com/gerrit
   - cd gerrit
   - ln -s $TRAVIS_BUILD_DIR plugins
   - travis_retry tools/download_all.py > download.log
diff --git a/README.md b/README.md
index 7831fb7..cace79e 100644
--- a/README.md
+++ b/README.md
@@ -11,4 +11,4 @@
 in different gerrit repositories. They will be merged at the same time,
 when all approvals for all reviews are present, and all reviews are mergeable.
 
-Requires Gerrit 2.10 or later.
+Requires Gerrit 2.11 or later.
diff --git a/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java b/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java
index 3f3196e..b910113 100644
--- a/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java
+++ b/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java
@@ -19,6 +19,7 @@
 import com.google.gerrit.server.git.MergeUtil;
 import com.google.gerrit.server.project.ChangeControl;
 import com.google.gerrit.server.project.NoSuchChangeException;
+import com.google.gerrit.server.project.SubmitRuleEvaluator;
 import com.google.gerrit.server.query.change.ChangeData;
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
@@ -107,7 +108,7 @@
    */
   public boolean isSubmittable(final int change) throws OrmException {
     final ChangeData changeData = changeDataFactory.create(db.get(), new Change.Id(change));
-    final List<SubmitRecord> cansubmit = changeData.changeControl().canSubmit(db.get(), changeData.currentPatchSet());
+    final List<SubmitRecord> cansubmit = new SubmitRuleEvaluator(changeData).evaluate();
     log.debug(String.format("Checking if change %d is submitable.", change));
     for (final SubmitRecord submit : cansubmit) {
       if (submit.status != SubmitRecord.Status.OK) {
diff --git a/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java b/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
index 4b293a6..b27e7cf 100644
--- a/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
+++ b/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
@@ -15,11 +15,11 @@
 package com.criteo.gerrit.plugins.automerge;
 
 import com.google.common.collect.Lists;
-import com.google.gerrit.common.ChangeListener;
+import com.google.gerrit.common.EventListener;
 import com.google.gerrit.extensions.api.GerritApi;
 import com.google.gerrit.extensions.api.changes.ChangeApi;
 import com.google.gerrit.extensions.common.ChangeInfo;
-import com.google.gerrit.extensions.common.ListChangesOption;
+import com.google.gerrit.extensions.client.ListChangesOption;
 import com.google.gerrit.extensions.events.LifecycleListener;
 import com.google.gerrit.extensions.restapi.RestApiException;
 import com.google.gerrit.reviewdb.server.ReviewDb;
@@ -28,8 +28,8 @@
 import com.google.gerrit.server.change.Submit;
 import com.google.gerrit.server.data.ApprovalAttribute;
 import com.google.gerrit.server.data.ChangeAttribute;
-import com.google.gerrit.server.events.ChangeEvent;
 import com.google.gerrit.server.events.CommentAddedEvent;
+import com.google.gerrit.server.events.Event;
 import com.google.gerrit.server.events.PatchSetCreatedEvent;
 import com.google.gerrit.server.events.TopicChangedEvent;
 import com.google.gerrit.server.git.MergeUtil;
@@ -50,7 +50,7 @@
  * Starts at the same time as the gerrit server, and sets up our change hook
  * listener.
  */
-public class AutomaticMerger implements ChangeListener, LifecycleListener {
+public class AutomaticMerger implements EventListener, LifecycleListener {
 
   private final static Logger log = LoggerFactory.getLogger(AutomaticMerger.class);
 
@@ -85,7 +85,7 @@
   Submit submitter;
 
   @Override
-  synchronized public void onChangeEvent(final ChangeEvent event) {
+  synchronized public void onEvent(final Event event) {
     if (event instanceof TopicChangedEvent) {
       onTopicChanged((TopicChangedEvent)event);
     }
diff --git a/src/main/java/com/criteo/gerrit/plugins/automerge/AutomergeModule.java b/src/main/java/com/criteo/gerrit/plugins/automerge/AutomergeModule.java
index b5f180e..744bb2d 100644
--- a/src/main/java/com/criteo/gerrit/plugins/automerge/AutomergeModule.java
+++ b/src/main/java/com/criteo/gerrit/plugins/automerge/AutomergeModule.java
@@ -14,7 +14,7 @@
 
 package com.criteo.gerrit.plugins.automerge;
 
-import com.google.gerrit.common.ChangeListener;
+import com.google.gerrit.common.EventListener;
 import com.google.gerrit.extensions.registration.DynamicSet;
 import com.google.inject.AbstractModule;
 
@@ -27,7 +27,7 @@
 
   @Override
   protected void configure() {
-    DynamicSet.bind(binder(), ChangeListener.class).to(AutomaticMerger.class);
+    DynamicSet.bind(binder(), EventListener.class).to(AutomaticMerger.class);
     bind(AutomergeConfig.class).asEagerSingleton();
     bind(AtomicityHelper.class);
     bind(ReviewUpdater.class);
