diff --git a/src/main/java/com/googlesource/gerrit/plugins/replicationstatus/EventHandler.java b/src/main/java/com/googlesource/gerrit/plugins/replicationstatus/EventHandler.java
index 28ed600..a2e708f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replicationstatus/EventHandler.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replicationstatus/EventHandler.java
@@ -25,8 +25,8 @@
 import com.google.gerrit.server.events.RefEvent;
 import com.google.inject.Inject;
 import com.google.inject.name.Named;
-import com.googlesource.gerrit.plugins.replication.RefReplicatedEvent;
-import com.googlesource.gerrit.plugins.replication.ReplicationScheduledEvent;
+import com.googlesource.gerrit.plugins.replication.events.RefReplicatedEvent;
+import com.googlesource.gerrit.plugins.replication.events.ReplicationScheduledEvent;
 
 class EventHandler implements EventListener {
   private final Cache<ReplicationStatus.Key, ReplicationStatus> replicationStatusCache;
@@ -46,10 +46,10 @@
     if (shouldConsume(event)) {
       if (event instanceof RefReplicatedEvent) {
         RefReplicatedEvent replEvent = (RefReplicatedEvent) event;
-        putCacheEntry(replEvent, replEvent.targetNode, replEvent.status);
+        putCacheEntry(replEvent, replEvent.targetUri, replEvent.status);
       } else if (event instanceof ReplicationScheduledEvent) {
         ReplicationScheduledEvent replEvent = (ReplicationScheduledEvent) event;
-        putCacheEntry(replEvent, replEvent.targetNode, SCHEDULED.name());
+        putCacheEntry(replEvent, replEvent.targetUri, SCHEDULED.name());
       }
     }
   }
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replicationstatus/ReplicationStatusIT.java b/src/test/java/com/googlesource/gerrit/plugins/replicationstatus/ReplicationStatusIT.java
index e27fd78..2dc81f1 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/replicationstatus/ReplicationStatusIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/replicationstatus/ReplicationStatusIT.java
@@ -37,13 +37,14 @@
 import com.google.gerrit.server.config.SitePaths;
 import com.google.gson.Gson;
 import com.google.inject.Inject;
-import com.googlesource.gerrit.plugins.replication.RefReplicatedEvent;
-import com.googlesource.gerrit.plugins.replication.ReplicationScheduledEvent;
+import com.googlesource.gerrit.plugins.replication.events.RefReplicatedEvent;
+import com.googlesource.gerrit.plugins.replication.events.ReplicationScheduledEvent;
 import java.io.IOException;
 import java.net.URISyntaxException;
 import java.util.Collections;
 import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.transport.RemoteRefUpdate;
+import org.eclipse.jgit.transport.URIish;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -216,9 +217,10 @@
       String ref,
       String remote,
       RefPushResult status,
-      RemoteRefUpdate.Status refStatus) {
+      RemoteRefUpdate.Status refStatus)
+      throws URISyntaxException {
     RefReplicatedEvent replicatedEvent =
-        new RefReplicatedEvent(project.get(), ref, remote, status, refStatus);
+        new RefReplicatedEvent(project.get(), ref, new URIish(remote), status, refStatus);
     replicatedEvent.instanceId = instanceId;
     replicatedEvent.eventCreatedOn = when;
 
@@ -226,9 +228,9 @@
   }
 
   private ReplicationScheduledEvent scheduledEvent(
-      @Nullable String instanceId, long when, String ref, String remote) {
+      @Nullable String instanceId, long when, String ref, String remote) throws URISyntaxException {
     ReplicationScheduledEvent scheduledEvent =
-        new ReplicationScheduledEvent(project.get(), ref, remote);
+        new ReplicationScheduledEvent(project.get(), ref, new URIish(remote));
     scheduledEvent.instanceId = instanceId;
     scheduledEvent.eventCreatedOn = when;
 
@@ -236,7 +238,7 @@
   }
 
   private RefReplicatedEvent successReplicatedEvent(
-      @Nullable String instanceId, long when, String remoteUrl) {
+      @Nullable String instanceId, long when, String remoteUrl) throws URISyntaxException {
 
     return replicatedEvent(
         instanceId,
@@ -248,7 +250,7 @@
   }
 
   private RefReplicatedEvent failedReplicatedEvent(
-      @Nullable String instanceId, long when, String remoteUrl) {
+      @Nullable String instanceId, long when, String remoteUrl) throws URISyntaxException {
 
     return replicatedEvent(
         instanceId,
