diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/IndexChangeRestApiServlet.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/IndexChangeRestApiServlet.java
index 77baf15..ff6391a 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/IndexChangeRestApiServlet.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/IndexChangeRestApiServlet.java
@@ -50,20 +50,23 @@
   void index(Change.Id id, Operation operation) throws IOException, OrmException {
     switch (operation) {
       case INDEX:
+        Change change = null;
         try (ReviewDb db = schemaFactory.open()) {
-          Change change = db.changes().get(id);
-          if (change == null) {
-            indexer.delete(id);
-            return;
+          change = db.changes().get(id);
+          if (change != null) {
+            indexer.index(db, change);
+            logger.debug("Change {} successfully indexed", id);
           }
-          indexer.index(db, change);
-          logger.debug("Change {} successfully indexed", id);
         } catch (Exception e) {
           if (!isCausedByNoSuchChangeException(e)) {
             throw e;
           }
           logger.debug("Change {} was deleted, aborting forwarded indexing the change.", id.get());
         }
+        if (change == null) {
+          indexer.delete(id);
+          logger.debug("Change {} not found, deleted from index", id);
+        }
         break;
       case DELETE:
         indexer.delete(id);
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/IndexChangeRestApiServletTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/IndexChangeRestApiServletTest.java
index 15069b3..2e63fa7 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/IndexChangeRestApiServletTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/IndexChangeRestApiServletTest.java
@@ -103,6 +103,7 @@
   public void indexerThrowsNoSuchChangeExceptionTryingToPostChange() throws Exception {
     doThrow(new NoSuchChangeException(id)).when(schemaFactory).open();
     indexRestApiServlet.doPost(req, rsp);
+    verify(indexer, times(1)).delete(id);
     verify(rsp).setStatus(SC_NO_CONTENT);
   }
 
@@ -111,6 +112,7 @@
     OrmException e = new OrmException("test", new NoSuchChangeException(id));
     doThrow(e).when(schemaFactory).open();
     indexRestApiServlet.doPost(req, rsp);
+    verify(indexer, times(1)).delete(id);
     verify(rsp).setStatus(SC_NO_CONTENT);
   }
 
