diff --git a/apps/cpman/app/src/main/java/org/onosproject/cpman/gui/CpmanViewMessageHandler.java b/apps/cpman/app/src/main/java/org/onosproject/cpman/gui/CpmanViewMessageHandler.java
index 5a11419..0ba1f83 100644
--- a/apps/cpman/app/src/main/java/org/onosproject/cpman/gui/CpmanViewMessageHandler.java
+++ b/apps/cpman/app/src/main/java/org/onosproject/cpman/gui/CpmanViewMessageHandler.java
@@ -15,10 +15,12 @@
  */
 package org.onosproject.cpman.gui;
 
+import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.joda.time.LocalDateTime;
@@ -27,6 +29,7 @@
 import org.onosproject.cpman.ControlMetricType;
 import org.onosproject.cpman.ControlPlaneMonitorService;
 import org.onosproject.net.DeviceId;
+import org.onosproject.net.device.DeviceService;
 import org.onosproject.ui.RequestHandler;
 import org.onosproject.ui.UiMessageHandler;
 import org.onosproject.ui.chart.ChartModel;
@@ -56,8 +59,10 @@
     private static final String CPMAN_DATA_RESP = "cpmanDataResponse";
     private static final String CPMANS = "cpmans";
 
+    private static final String DEVICE_IDS = "deviceIds";
+
     // TODO: we assume that server side always returns 20 data points
-    // to feed 1 hour time slots, later this should make to be configurable
+    // to feed 20 minutes time slots, later this should make to be configurable
     private static final int NUM_OF_DATA_POINTS = 20;
 
     private static final int MILLI_CONV_UNIT = 1000;
@@ -90,6 +95,8 @@
             String uri = string(payload, "devId");
             ControlPlaneMonitorService cpms = get(ControlPlaneMonitorService.class);
             ClusterService cs = get(ClusterService.class);
+            DeviceService ds = get(DeviceService.class);
+
             if (!Strings.isNullOrEmpty(uri)) {
                 DeviceId deviceId = DeviceId.deviceId(uri);
                 if (cpms.availableResources(CONTROL_MESSAGE).contains(deviceId.toString())) {
@@ -97,6 +104,10 @@
                     LocalDateTime ldt = new LocalDateTime(timestamp * MILLI_CONV_UNIT);
 
                     populateMetrics(cm, data, ldt, NUM_OF_DATA_POINTS);
+
+                    Set<DeviceId> deviceIds = Sets.newHashSet();
+                    ds.getAvailableDevices().forEach(device -> deviceIds.add(device.id()));
+                    attachDeviceList(cm, deviceIds);
                 }
             } else {
                 Set<String> deviceIds = cpms.availableResources(CONTROL_MESSAGE);
@@ -189,7 +200,13 @@
 
         private void populateMetric(ChartModel.DataPoint dataPoint,
                                     Map<String, Object> data) {
-            data.forEach((k, v) -> dataPoint.data(k, v));
+            data.forEach(dataPoint::data);
+        }
+
+        private void attachDeviceList(ChartModel cm, Set<DeviceId> deviceIds) {
+            ArrayNode array = arrayNode();
+            deviceIds.forEach(id -> array.add(id.toString()));
+            cm.addAnnotation(DEVICE_IDS, array);
         }
     }
 }
diff --git a/apps/cpman/app/src/main/resources/app/view/cpman/cpman.html b/apps/cpman/app/src/main/resources/app/view/cpman/cpman.html
index edf24ad..a970f22 100644
--- a/apps/cpman/app/src/main/resources/app/view/cpman/cpman.html
+++ b/apps/cpman/app/src/main/resources/app/view/cpman/cpman.html
@@ -13,6 +13,12 @@
         <h2>
             Chart for Device {{devId || "(No device selected)"}}
         </h2>
+        <div class="ctrl-btns">
+            <select ng-options="deviceId as deviceId for deviceId in deviceIds"
+                    ng-model="selectedItem" ng-change="onChange(selectedItem)">
+                <option value="">-- select a device --</option>
+            </select>
+        </div>
         <canvas id="line" class="chart chart-line" chart-data="data"
                 chart-labels="labels" chart-legend="true"
                 chart-series="series" chart-options="options" height="100%">
diff --git a/apps/cpman/app/src/main/resources/app/view/cpman/cpman.js b/apps/cpman/app/src/main/resources/app/view/cpman/cpman.js
index 4b603ee..603bd53 100644
--- a/apps/cpman/app/src/main/resources/app/view/cpman/cpman.js
+++ b/apps/cpman/app/src/main/resources/app/view/cpman/cpman.js
@@ -66,7 +66,6 @@
                 $scope.devId = params['devId'];
                 hasDeviceId = true;
             } else {
-                $scope.type = 'StackedBar';
                 hasDeviceId = false;
             }
 
@@ -113,6 +112,14 @@
                         $log.log(points[0].label);
                     }
                 };
+
+                if (!fs.isEmptyObject($scope.annots)) {
+                    $scope.deviceIds = JSON.parse($scope.annots.deviceIds);
+                }
+
+                $scope.onChange = function (deviceId) {
+                    ns.navTo('cpman', { devId: deviceId });
+                };
             });
 
             $scope.series = ['INBOUND', 'OUTBOUND', 'FLOW-MOD',
