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 98d67b3..ee8801f 100644
--- a/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java
+++ b/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java
@@ -22,6 +22,7 @@
 import com.google.gerrit.server.permissions.PermissionBackend;
 import com.google.gerrit.server.permissions.PermissionBackendException;
 import com.google.gerrit.server.project.NoSuchChangeException;
+import com.google.gerrit.server.project.NoSuchProjectException;
 import com.google.gerrit.server.project.SubmitRuleEvaluator;
 import com.google.gerrit.server.query.change.ChangeData;
 import com.google.gwtorm.server.OrmException;
@@ -67,10 +68,13 @@
    * @return true or false
    * @throws IOException
    * @throws NoSuchChangeException
+   * @throws NoSuchProjectException
    * @throws OrmException
+   * @throws PermissionBackendException
    */
   public boolean hasDependentReview(String project, int number)
-      throws IOException, NoSuchChangeException, OrmException {
+      throws IOException, NoSuchChangeException, NoSuchProjectException, OrmException,
+          PermissionBackendException {
     RevisionResource r = getRevisionResource(project, number);
     RelatedInfo related = getRelated.apply(r);
     log.debug(String.format("Checking for related changes on review %d", number));
@@ -135,7 +139,7 @@
     // For draft reviews, the patchSet must be set to avoid an NPE.
     final List<SubmitRecord> cansubmit =
         submitRuleEvaluatorFactory
-            .create(changeData)
+            .create(getBotUser(), changeData)
             .setPatchSet(changeData.currentPatchSet())
             .evaluate();
     log.debug(String.format("Checking if change %d is submitable.", change));
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 864de7d..404d038 100644
--- a/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
+++ b/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
@@ -30,7 +30,6 @@
 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.DraftPublishedEvent;
 import com.google.gerrit.server.events.Event;
 import com.google.gerrit.server.events.PatchSetCreatedEvent;
 import com.google.gerrit.server.events.RefUpdatedEvent;
@@ -73,7 +72,6 @@
   @Override
   public synchronized void onEvent(final Event event) {
     if (event instanceof TopicChangedEvent
-        || event instanceof DraftPublishedEvent
         || event instanceof ReviewerDeletedEvent
         || // A blocking score might be removed when a reviewer is deleted.
         event instanceof PatchSetCreatedEvent) {
diff --git a/test.rb b/test.rb
index 92ccfab..3df4ebe 100755
--- a/test.rb
+++ b/test.rb
@@ -165,16 +165,6 @@
     check_status(commit2, 'MERGED')
   end
 
-  def test_published_draft_is_autosubmitted
-    commit_id = create_review(PROJECT1, "review0 on #{PROJECT1}", draft: true)
-    approve_review(commit_id)
-    check_status(commit_id, 'DRAFT')
-
-    publish_draft(commit_id)
-
-    check_status(commit_id, 'MERGED')
-  end
-
   private
 
   def project_dir(project_name)
@@ -191,11 +181,7 @@
     reviews = gerrit_query(query)
     reviews.each do |review|
       review_number = review['number']
-      if review['status'] == 'DRAFT'
-        execute("#{GERRIT_SSH} gerrit review --delete #{review_number},1")
-      else
-        execute("#{GERRIT_SSH} gerrit review --abandon #{review_number},1")
-      end
+      execute("#{GERRIT_SSH} gerrit review --abandon #{review_number},1")
     end
   end
 
@@ -207,14 +193,14 @@
     change_id
   end
 
-  def create_review(project_name, message, topic = nil, change_id = nil, draft: false)
+  def create_review(project_name, message, topic = nil, change_id = nil)
     topic_suffix = "/#{topic}" if topic
     message = "#{message}\n\nChange-Id: #{change_id}" if change_id
     execute(["cd #{project_dir(project_name)}",
              "echo 0 >> a",
              "git add .",
              %Q(git commit -m "#{message}"),
-             "git push origin HEAD:refs/#{draft ? 'drafts' : 'for'}/master#{topic_suffix}"
+             "git push origin HEAD:refs/for/master#{topic_suffix}"
             ].join(" && "))
     commit_id = execute("cd #{project_dir(project_name)} && git rev-parse HEAD")
     refute(commit_id.empty?, "missing commit-id")
@@ -225,10 +211,6 @@
     execute("#{GERRIT_SSH} gerrit review --strict-labels --verified 1 --code-review 2 #{commit_id}")
   end
 
-  def publish_draft(commit_id)
-    execute("#{GERRIT_SSH} gerrit review --publish #{commit_id}")
-  end
-
   def abandon_review(commit_id)
     execute("#{GERRIT_SSH} gerrit review --abandon #{commit_id}")
   end
