diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/IndexEventHandler.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/IndexEventHandler.java
index 3010689..122327e 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/IndexEventHandler.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/IndexEventHandler.java
@@ -83,23 +83,38 @@
 
   private void executeIndexChangeTask(String projectName, int id, boolean deleted) {
     if (!Context.isForwardedEvent()) {
-      ChangeChecker checker = changeChecker.create(projectName + "~" + id);
-      try {
-        checker
-            .newIndexEvent()
-            .map(event -> new IndexChangeTask(projectName, id, deleted, event))
-            .ifPresent(
-                task -> {
-                  if (queuedTasks.add(task)) {
-                    executor.execute(task);
-                  }
-                });
-      } catch (Exception e) {
-        log.warn("Unable to create task to handle change {}~{}", projectName, id, e);
+      if (deleted) {
+        deleteChangeFromIndex(projectName, id);
+      } else {
+        reindexChange(projectName, id);
       }
     }
   }
 
+  private void reindexChange(String projectName, int id) {
+    ChangeChecker checker = changeChecker.create(projectName + "~" + id);
+    try {
+      checker
+          .newIndexEvent()
+          .map(event -> new IndexChangeTask(projectName, id, false, event))
+          .ifPresent(
+              task -> {
+                if (queuedTasks.add(task)) {
+                  executor.execute(task);
+                }
+              });
+    } catch (Exception e) {
+      log.warn("Unable to create task to reindex change {}~{}", projectName, id, e);
+    }
+  }
+
+  private void deleteChangeFromIndex(String projectName, int id) {
+    IndexChangeTask task = new IndexChangeTask(projectName, id, true, new IndexEvent());
+    if (queuedTasks.add(task)) {
+      executor.execute(task);
+    }
+  }
+
   abstract class IndexTask implements Runnable {
     protected final IndexEvent indexEvent;
 
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/index/IndexEventHandlerTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/index/IndexEventHandlerTest.java
index 3ec979c..3240b84 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/index/IndexEventHandlerTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/index/IndexEventHandlerTest.java
@@ -86,6 +86,8 @@
   public void shouldDeleteFromIndexInRemoteOnChangeDeletedEvent() throws Exception {
     indexEventHandler.onChangeDeleted(changeId.get());
     verify(forwarder).deleteChangeFromIndex(eq(CHANGE_ID), any());
+    verifyZeroInteractions(
+        changeCheckerMock); // Deleted changes should not be checked against NoteDb
   }
 
   @Test
