diff --git a/apps/metrics/topology/src/main/java/org/onosproject/metrics/topology/TopologyMetrics.java b/apps/metrics/topology/src/main/java/org/onosproject/metrics/topology/TopologyMetrics.java
index ed446dc..a2f0d5c 100644
--- a/apps/metrics/topology/src/main/java/org/onosproject/metrics/topology/TopologyMetrics.java
+++ b/apps/metrics/topology/src/main/java/org/onosproject/metrics/topology/TopologyMetrics.java
@@ -91,17 +91,20 @@
     private static final String FEATURE_HOST_NAME = "HostEvent";
     private static final String FEATURE_LINK_NAME = "LinkEvent";
     private static final String FEATURE_GRAPH_NAME = "GraphEvent";
+    private static final String FEATURE_GRAPH_REASONS_NAME = "GraphReasonsEvent";
     //
     // Event metrics:
     //  - Device events
     //  - Host events
     //  - Link events
     //  - Topology Graph events
+    //  - Topology Graph Reasons events
     //
     private EventMetric topologyDeviceEventMetric;
     private EventMetric topologyHostEventMetric;
     private EventMetric topologyLinkEventMetric;
     private EventMetric topologyGraphEventMetric;
+    private EventMetric topologyGraphReasonsEventMetric;
 
     @Activate
     protected void activate() {
@@ -160,6 +163,11 @@
         return topologyGraphEventMetric;
     }
 
+    @Override
+    public EventMetric topologyGraphReasonsEventMetric() {
+        return topologyGraphReasonsEventMetric;
+    }
+
     /**
      * Records an event.
      *
@@ -226,6 +234,7 @@
             log.debug("Topology Event: time = {} type = {} event = {}",
                       event.time(), event.type(), event);
             for (Event reason : event.reasons()) {
+                recordEvent(event, topologyGraphReasonsEventMetric);
                 log.debug("Topology Event Reason: time = {} type = {} event = {}",
                           reason.time(), reason.type(), reason);
             }
@@ -257,11 +266,15 @@
         topologyGraphEventMetric =
             new EventMetric(metricsService, COMPONENT_NAME,
                             FEATURE_GRAPH_NAME);
+        topologyGraphReasonsEventMetric =
+            new EventMetric(metricsService, COMPONENT_NAME,
+                            FEATURE_GRAPH_REASONS_NAME);
 
         topologyDeviceEventMetric.registerMetrics();
         topologyHostEventMetric.registerMetrics();
         topologyLinkEventMetric.registerMetrics();
         topologyGraphEventMetric.registerMetrics();
+        topologyGraphReasonsEventMetric.registerMetrics();
     }
 
     /**
@@ -272,5 +285,6 @@
         topologyHostEventMetric.removeMetrics();
         topologyLinkEventMetric.removeMetrics();
         topologyGraphEventMetric.removeMetrics();
+        topologyGraphReasonsEventMetric.removeMetrics();
     }
 }
diff --git a/apps/metrics/topology/src/main/java/org/onosproject/metrics/topology/TopologyMetricsService.java b/apps/metrics/topology/src/main/java/org/onosproject/metrics/topology/TopologyMetricsService.java
index 77809ca..33c772d 100644
--- a/apps/metrics/topology/src/main/java/org/onosproject/metrics/topology/TopologyMetricsService.java
+++ b/apps/metrics/topology/src/main/java/org/onosproject/metrics/topology/TopologyMetricsService.java
@@ -26,35 +26,42 @@
     /**
      * Gets the last saved topology events.
      *
-     * @return the last saved topology events.
+     * @return the last saved topology events
      */
     public List<Event> getEvents();
 
     /**
      * Gets the Event Metric for the Device Events.
      *
-     * @return the Event Metric for the Device Events.
+     * @return the Event Metric for the Device Events
      */
     public EventMetric topologyDeviceEventMetric();
 
     /**
      * Gets the Event Metric for the Host Events.
      *
-     * @return the Event Metric for the Host Events.
+     * @return the Event Metric for the Host Events
      */
     public EventMetric topologyHostEventMetric();
 
     /**
      * Gets the Event Metric for the Link Events.
      *
-     * @return the Event Metric for the Link Events.
+     * @return the Event Metric for the Link Events
      */
     public EventMetric topologyLinkEventMetric();
 
     /**
      * Gets the Event Metric for the Topology Graph Events.
      *
-     * @return the Event Metric for the Topology Graph Events.
+     * @return the Event Metric for the Topology Graph Events
      */
     public EventMetric topologyGraphEventMetric();
+
+    /**
+     * Gets the Event Metric for the Topology Graph Reasons Events.
+     *
+     * @return the Event Metric for the Topology Graph Reasons Events
+     */
+    public EventMetric topologyGraphReasonsEventMetric();
 }
diff --git a/apps/metrics/topology/src/main/java/org/onosproject/metrics/topology/cli/TopologyEventsMetricsCommand.java b/apps/metrics/topology/src/main/java/org/onosproject/metrics/topology/cli/TopologyEventsMetricsCommand.java
index 274a14d..b87762a 100644
--- a/apps/metrics/topology/src/main/java/org/onosproject/metrics/topology/cli/TopologyEventsMetricsCommand.java
+++ b/apps/metrics/topology/src/main/java/org/onosproject/metrics/topology/cli/TopologyEventsMetricsCommand.java
@@ -60,12 +60,16 @@
                           service.topologyLinkEventMetric());
             result = json(mapper, result, "topologyGraphEvent",
                           service.topologyGraphEventMetric());
+            result = json(mapper, result, "topologyGraphReasonsEvent",
+                          service.topologyGraphReasonsEventMetric());
             print("%s", result);
         } else {
             printEventMetric("Device", service.topologyDeviceEventMetric());
             printEventMetric("Host", service.topologyHostEventMetric());
             printEventMetric("Link", service.topologyLinkEventMetric());
             printEventMetric("Graph", service.topologyGraphEventMetric());
+            printEventMetric("Graph Reasons",
+                             service.topologyGraphReasonsEventMetric());
         }
     }
 
