diff --git a/src/main/java/net/onrc/onos/core/topology/TopologyManager.java b/src/main/java/net/onrc/onos/core/topology/TopologyManager.java
index aeb06c2..dccef16 100644
--- a/src/main/java/net/onrc/onos/core/topology/TopologyManager.java
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyManager.java
@@ -81,16 +81,16 @@
     private static final MetricsFeature METRICS_FEATURE_EVENT_NOTIFICATION =
         METRICS_COMPONENT.registerFeature("EventNotification");
     //
-    // Timestamp of the last Topology event (system nanoseconds)
-    private volatile long lastEventTimestamp = 0;
-    private final Gauge<Long> gaugeLastEventTimestamp =
+    // Timestamp of the last Topology event (ms from the Epoch)
+    private volatile long lastEventTimestampEpochMs = 0;
+    private final Gauge<Long> gaugeLastEventTimestampEpochMs =
         OnosMetrics.registerMetric(METRICS_COMPONENT,
                                    METRICS_FEATURE_EVENT_NOTIFICATION,
-                                   "LastEventTimestamp",
+                                   "LastEventTimestamp.EpochMs",
                                    new Gauge<Long>() {
                                        @Override
                                        public Long getValue() {
-                                           return lastEventTimestamp;
+                                           return lastEventTimestampEpochMs;
                                        }
                                    });
     // Rate of the Topology events published to the Topology listeners
@@ -506,14 +506,14 @@
             apiAddedLinkEvents.size() + apiRemovedLinkEvents.size() +
             apiAddedHostEvents.size() + apiRemovedHostEvents.size();
         this.listenerEventRate.mark(totalEvents);
-        this.lastEventTimestamp = System.nanoTime();
+        this.lastEventTimestampEpochMs = System.currentTimeMillis();
 
         //
         // Deliver the events
         //
         for (ITopologyListener listener : this.topologyListeners) {
             TopologyEvents events =
-                new TopologyEvents(lastEventTimestamp,
+                new TopologyEvents(lastEventTimestampEpochMs,
                                    kryo.copy(apiAddedSwitchEvents),
                                    kryo.copy(apiRemovedSwitchEvents),
                                    kryo.copy(apiAddedPortEvents),
