diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/AccountReindexRunnable.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/AccountReindexRunnable.java
index 70ef751..4a3f473 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/AccountReindexRunnable.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/AccountReindexRunnable.java
@@ -54,7 +54,7 @@
   protected Optional<Timestamp> indexIfNeeded(AccountState as, Timestamp sinceTs) {
     try {
       Account a = as.account();
-      Timestamp accountTs = a.registeredOn();
+      Timestamp accountTs = Timestamp.from(a.registeredOn());
       if (accountTs.after(sinceTs)) {
         log.atInfo().log("Index %s/%s/%s/%s", a.id(), a.fullName(), a.preferredEmail(), accountTs);
         accountIdx.index(a.id(), Operation.INDEX, Optional.empty());
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/ChangeReindexRunnable.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/ChangeReindexRunnable.java
index fcd345d..c0b60c3 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/ChangeReindexRunnable.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/ChangeReindexRunnable.java
@@ -101,7 +101,7 @@
   @Override
   protected Optional<Timestamp> indexIfNeeded(Change c, Timestamp sinceTs) {
     try {
-      Timestamp changeTs = c.getLastUpdatedOn();
+      Timestamp changeTs = Timestamp.from(c.getLastUpdatedOn());
       if (changeTs.after(sinceTs)) {
         log.atInfo().log(
             "Index %s/%s/%s was updated after %s", c.getProject(), c.getId(), changeTs, sinceTs);
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/GroupReindexRunnable.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/GroupReindexRunnable.java
index 4ded55e..05efe07 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/GroupReindexRunnable.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/GroupReindexRunnable.java
@@ -30,6 +30,7 @@
 import com.google.inject.Inject;
 import java.io.IOException;
 import java.sql.Timestamp;
+import java.time.Instant;
 import java.util.Comparator;
 import java.util.List;
 import java.util.Objects;
@@ -73,7 +74,7 @@
       Optional<InternalGroup> internalGroup = groups.getGroup(g.getUUID());
       if (internalGroup.isPresent()) {
         InternalGroup group = internalGroup.get();
-        Timestamp groupCreationTs = group.getCreatedOn();
+        Timestamp groupCreationTs = Timestamp.from(group.getCreatedOn());
 
         Repository allUsersRepo = repoManager.openRepository(allUsers);
 
@@ -81,23 +82,24 @@
             groups.getSubgroupsAudit(allUsersRepo, g.getUUID());
         Stream<Timestamp> groupIdAudAddedTs =
             subGroupMembersAud.stream()
-                .map(AccountGroupByIdAudit::addedOn)
+                .map(accountGroupByIdAudit -> Timestamp.from(accountGroupByIdAudit.addedOn()))
                 .filter(Objects::nonNull);
         Stream<Timestamp> groupIdAudRemovedTs =
             subGroupMembersAud.stream()
                 .map(AccountGroupByIdAudit::removedOn)
-                .filter(Optional<Timestamp>::isPresent)
-                .map(Optional<Timestamp>::get);
-
+                .filter(Optional<Instant>::isPresent)
+                .map(inst -> Timestamp.from(inst.get()));
         List<AccountGroupMemberAudit> groupMembersAud =
             groups.getMembersAudit(allUsersRepo, g.getUUID());
         Stream<Timestamp> groupMemberAudAddedTs =
-            groupMembersAud.stream().map(AccountGroupMemberAudit::addedOn).filter(Objects::nonNull);
+            groupMembersAud.stream()
+                .map(accountGroupByIdAudit -> Timestamp.from(accountGroupByIdAudit.addedOn()))
+                .filter(Objects::nonNull);
         Stream<Timestamp> groupMemberAudRemovedTs =
             groupMembersAud.stream()
                 .map(AccountGroupMemberAudit::removedOn)
-                .filter(Optional<Timestamp>::isPresent)
-                .map(Optional<Timestamp>::get);
+                .filter(Optional<Instant>::isPresent)
+                .map(inst -> Timestamp.from(inst.get()));
 
         Optional<Timestamp> groupLastTs =
             Streams.concat(
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/IndexTs.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/IndexTs.java
index 62d9c10..edc11b1 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/IndexTs.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/IndexTs.java
@@ -32,6 +32,7 @@
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.sql.Timestamp;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.Optional;
@@ -138,7 +139,8 @@
                 IndexName.CHANGE,
                 !changeNotes.isPresent()
                     ? LocalDateTime.now()
-                    : changeNotes.get().getChange().getLastUpdatedOn().toLocalDateTime());
+                    : Timestamp.from(changeNotes.get().getChange().getLastUpdatedOn())
+                        .toLocalDateTime());
           } catch (Exception e) {
             log.atWarning().withCause(e).log("Unable to update the latest TS for change %d", id);
           }
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/ChangeCheckerImpl.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/ChangeCheckerImpl.java
index 1a2ebf7..67f5c0b 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/ChangeCheckerImpl.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/ChangeCheckerImpl.java
@@ -177,7 +177,7 @@
 
   private long getTsFromChangeAndDraftComments(ChangeNotes notes) {
     Change change = notes.getChange();
-    Timestamp changeTs = change.getLastUpdatedOn();
+    Timestamp changeTs = Timestamp.from(change.getLastUpdatedOn());
     for (HumanComment comment : commentsUtil.draftByChange(changeNotes.get())) {
       Timestamp commentTs = comment.writtenOn;
       changeTs = commentTs.after(changeTs) ? commentTs : changeTs;
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/ChangeReindexRunnableTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/ChangeReindexRunnableTest.java
index 65001de..28dc451 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/ChangeReindexRunnableTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/ChangeReindexRunnableTest.java
@@ -151,6 +151,6 @@
         Change.id(123),
         Account.id(1000000),
         BranchNameKey.create("projectname", "main"),
-        changeTs);
+        changeTs.toInstant());
   }
 }
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/GroupReindexRunnableTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/GroupReindexRunnableTest.java
index afd6df4..0513d42 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/GroupReindexRunnableTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/GroupReindexRunnableTest.java
@@ -110,7 +110,7 @@
             Collections.singletonList(
                 AccountGroupMemberAudit.builder()
                     .addedBy(Account.Id.tryParse("1").get())
-                    .addedOn(afterCurrentTime)
+                    .addedOn(afterCurrentTime.toInstant())
                     .memberId(Account.Id.tryParse("1").get())
                     .groupId(AccountGroup.Id.parse("1"))
                     .build()));
@@ -130,10 +130,10 @@
     AccountGroupMemberAudit accountGroupMemberAudit =
         AccountGroupMemberAudit.builder()
             .addedBy(Account.Id.tryParse("1").get())
-            .addedOn(beforeCurrentTime)
+            .addedOn(beforeCurrentTime.toInstant())
             .memberId(Account.Id.tryParse("1").get())
             .groupId(AccountGroup.Id.parse("2"))
-            .removed(Account.Id.tryParse("2").get(), afterCurrentTime)
+            .removed(Account.Id.tryParse("2").get(), afterCurrentTime.toInstant())
             .build();
     when(groups.getGroup(uuid)).thenReturn(getInternalGroup(currentTime));
     when(groups.getMembersAudit(any(), any()))
@@ -158,7 +158,7 @@
                     .groupId(AccountGroup.Id.parse("1"))
                     .includeUuid(UUID.parse("123"))
                     .addedBy(Account.Id.tryParse("1").get())
-                    .addedOn(afterCurrentTime)
+                    .addedOn(afterCurrentTime.toInstant())
                     .build()));
     Optional<Timestamp> groupLastTs =
         groupReindexRunnable.indexIfNeeded(groupReference, currentTime);
@@ -178,8 +178,8 @@
             .groupId(AccountGroup.Id.parse("1"))
             .includeUuid(UUID.parse("123"))
             .addedBy(Account.Id.tryParse("1").get())
-            .addedOn(beforeCurrentTime)
-            .removed(Account.Id.tryParse("2").get(), afterCurrentTime)
+            .addedOn(beforeCurrentTime.toInstant())
+            .removed(Account.Id.tryParse("2").get(), afterCurrentTime.toInstant())
             .build();
 
     when(groups.getGroup(uuid)).thenReturn(getInternalGroup(beforeCurrentTime));
@@ -201,7 +201,7 @@
             .setOwnerGroupUUID(uuid)
             .setVisibleToAll(true)
             .setGroupUUID(UUID.parse("12"))
-            .setCreatedOn(timestamp)
+            .setCreatedOn(timestamp.toInstant())
             .setMembers(ImmutableSet.<Id>builder().build())
             .setSubgroups(ImmutableSet.<UUID>builder().build())
             .build());
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedIndexChangeHandlerTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedIndexChangeHandlerTest.java
index 7c1e6df..ba0c8c5 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedIndexChangeHandlerTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedIndexChangeHandlerTest.java
@@ -30,8 +30,8 @@
 import com.google.gerrit.server.index.change.ChangeIndexer;
 import com.google.gerrit.server.notedb.ChangeNotes;
 import com.google.gerrit.server.util.OneOffRequestContext;
-import com.google.gerrit.server.util.time.TimeUtil;
 import java.io.IOException;
+import java.time.Instant;
 import java.util.Optional;
 import java.util.concurrent.ScheduledExecutorService;
 import org.junit.Before;
@@ -67,7 +67,7 @@
   @Before
   public void setUp() throws Exception {
     id = Change.id(TEST_CHANGE_NUMBER);
-    Change change = new Change(null, id, null, null, TimeUtil.nowTs());
+    Change change = new Change(null, id, null, null, Instant.now());
     when(changeNotes.getChange()).thenReturn(change);
     when(configMock.index()).thenReturn(indexMock);
     when(changeCheckerFactoryMock.create(any())).thenReturn(changeCheckerAbsentMock);
