diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncindex/IndexEventHandler.java b/src/main/java/com/ericsson/gerrit/plugins/syncindex/IndexEventHandler.java
index f8e2f31..1027565 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/syncindex/IndexEventHandler.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/syncindex/IndexEventHandler.java
@@ -16,9 +16,7 @@
 
 import com.google.common.base.Objects;
 import com.google.gerrit.extensions.annotations.PluginName;
-import com.google.gerrit.reviewdb.client.Change;
-import com.google.gerrit.server.extensions.events.ChangeIndexedListener;
-import com.google.gerrit.server.query.change.ChangeData;
+import com.google.gerrit.extensions.events.ChangeIndexedListener;
 import com.google.inject.Inject;
 
 import java.util.Collections;
@@ -43,18 +41,18 @@
   }
 
   @Override
-  public void onChangeIndexed(ChangeData cd) {
-    executeIndexTask(cd.getId(), false);
+  public void onChangeIndexed(int id) {
+    executeIndexTask(id, false);
   }
 
   @Override
-  public void onChangeDeleted(Change.Id id) {
+  public void onChangeDeleted(int id) {
     executeIndexTask(id, true);
   }
 
-  private void executeIndexTask(Change.Id id, boolean deleted) {
+  private void executeIndexTask(int id, boolean deleted) {
     if (!Context.isForwardedEvent()) {
-      SyncIndexTask syncIndexTask = new SyncIndexTask(id.get(), deleted);
+      SyncIndexTask syncIndexTask = new SyncIndexTask(id, deleted);
       if (queuedTasks.add(syncIndexTask)) {
         executor.execute(syncIndexTask);
       }
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncindex/Module.java b/src/main/java/com/ericsson/gerrit/plugins/syncindex/Module.java
index 5b278c3..314d119 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/syncindex/Module.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/syncindex/Module.java
@@ -14,9 +14,9 @@
 
 package com.ericsson.gerrit.plugins.syncindex;
 
+import com.google.gerrit.extensions.events.ChangeIndexedListener;
 import com.google.gerrit.extensions.registration.DynamicSet;
 import com.google.gerrit.lifecycle.LifecycleModule;
-import com.google.gerrit.server.extensions.events.ChangeIndexedListener;
 import com.google.inject.Provides;
 import com.google.inject.Scopes;
 
diff --git a/src/test/java/com/ericsson/gerrit/plugins/syncindex/IndexEventHandlerTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncindex/IndexEventHandlerTest.java
index 614d30f..6489602 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/syncindex/IndexEventHandlerTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/syncindex/IndexEventHandlerTest.java
@@ -67,7 +67,7 @@
   public void shouldIndexInRemoteOnChangeIndexedEvent() throws Exception {
     expect(restClientMock.index(CHANGE_ID)).andReturn(true);
     replayAll();
-    indexEventHandler.onChangeIndexed(cd);
+    indexEventHandler.onChangeIndexed(id.get());
     verifyAll();
   }
 
@@ -77,7 +77,7 @@
     reset(cd);
     expect(restClientMock.deleteFromIndex(CHANGE_ID)).andReturn(true);
     replayAll();
-    indexEventHandler.onChangeDeleted(id);
+    indexEventHandler.onChangeDeleted(id.get());
     verifyAll();
   }
 
@@ -86,8 +86,8 @@
     reset(poolMock);
     replayAll();
     Context.setForwardedEvent(true);
-    indexEventHandler.onChangeIndexed(cd);
-    indexEventHandler.onChangeDeleted(id);
+    indexEventHandler.onChangeIndexed(id.get());
+    indexEventHandler.onChangeDeleted(id.get());
     Context.unsetForwardedEvent();
     verifyAll();
   }
@@ -98,8 +98,8 @@
     poolMock.execute(indexEventHandler.new SyncIndexTask(CHANGE_ID, false));
     expectLastCall().once();
     replayAll();
-    indexEventHandler.onChangeIndexed(cd);
-    indexEventHandler.onChangeIndexed(cd);
+    indexEventHandler.onChangeIndexed(id.get());
+    indexEventHandler.onChangeIndexed(id.get());
     verifyAll();
   }
 
