diff --git a/.travis.yml b/.travis.yml
index dfb6c36..15abc33 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -26,12 +26,13 @@
   - ant
   - export PATH=$PATH:$TRAVIS_BUILD_DIR/../../build/buck/bin
   - cd ..
-  - git clone https://gerrit.googlesource.com/gerrit
+  - git clone -b stable-2.10 https://gerrit.googlesource.com/gerrit
   - cd gerrit
   - ln -s $TRAVIS_BUILD_DIR plugins
   - travis_retry tools/download_all.py > download.log
 
 script:
+  - buck clean
   - buck build gerrit > buck.log
   - buck build plugins/automerge-plugin:automerge-plugin >> buck.log
 
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 e9779f5..4b293a6 100644
--- a/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
+++ b/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
@@ -17,6 +17,7 @@
 import com.google.common.collect.Lists;
 import com.google.gerrit.common.ChangeListener;
 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.events.LifecycleListener;
@@ -157,12 +158,12 @@
       related.addAll(api.changes().query("status: open AND topic: " + change.topic)
           .withOption(ListChangesOption.CURRENT_REVISION).get());
     } else {
-      related.add(api.changes().id(change.id).get(EnumSet.of(ListChangesOption.CURRENT_REVISION)));
+      ChangeApi changeApi = api.changes().id(change.project, change.branch, change.id);
+      related.add(changeApi.get(EnumSet.of(ListChangesOption.CURRENT_REVISION)));
     }
     boolean submittable = true;
     boolean mergeable = true;
     for (final ChangeInfo info : related) {
-      api.changes().id(change.id).get(EnumSet.of(ListChangesOption.CURRENT_REVISION));
       if (!info.mergeable) {
         mergeable = false;
       }
diff --git a/test.rb b/test.rb
index 37296f2..ec3f2b3 100755
--- a/test.rb
+++ b/test.rb
@@ -72,6 +72,18 @@
     check_status(commit2, 'MERGED')
   end
 
+  def test_two_reviews_with_same_changed_id
+    commit1 = create_review(PROJECT1, "review1 on #{PROJECT1}")
+    change_id = read_change_id(PROJECT1)
+    abandon_review(commit1)
+    # Reuse Change-Id of abandoned review
+    commit2 = create_review(PROJECT2, "review2 on #{PROJECT2}", nil, change_id)
+
+    approve_review(commit2)
+
+    check_status(commit2, 'MERGED')
+  end
+
   private
 
   def project_dir(project_name)
@@ -92,8 +104,17 @@
     end
   end
 
-  def create_review(project_name, message, topic = nil)
+  def read_change_id(project_name, commit_id = "HEAD")
+    change_id = execute(["cd #{project_dir(project_name)}",
+                         "git show #{commit_id} | grep Change-Id | sed 's/^.*Change-Id: \\([Ia-f0-9]*\\)$/\\1/'"
+                        ].join(" && "))
+    refute(change_id.empty?, "missing change-id")
+    change_id
+  end
+
+  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",
              %Q(git commit -m "#{message}" .),
@@ -108,6 +129,10 @@
     execute("#{GERRIT_SSH} gerrit review --verified 1 --code-review 2 #{commit_id}")
   end
 
+  def abandon_review(commit_id)
+    execute("#{GERRIT_SSH} gerrit review --abandon #{commit_id}")
+  end
+
   def check_status(commit_id, expected_status)
     reviews = gerrit_query("commit:#{commit_id}")
     assert_equal(1, reviews.size, "missing review with commit #{commit_id}")
