diff --git a/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpViewMessageHandler.java b/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpViewMessageHandler.java
index 1614985..41d673e 100644
--- a/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpViewMessageHandler.java
+++ b/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpViewMessageHandler.java
@@ -74,7 +74,7 @@
         }
 
         @Override
-        protected String noRowsMessage() {
+        protected String noRowsMessage(ObjectNode payload) {
             return NO_ROWS_MESSAGE;
         }
 
diff --git a/apps/drivermatrix/src/main/java/org/onosproject/drivermatrix/DriverMatrixMessageHandler.java b/apps/drivermatrix/src/main/java/org/onosproject/drivermatrix/DriverMatrixMessageHandler.java
index 4a7decd..edc1b88 100644
--- a/apps/drivermatrix/src/main/java/org/onosproject/drivermatrix/DriverMatrixMessageHandler.java
+++ b/apps/drivermatrix/src/main/java/org/onosproject/drivermatrix/DriverMatrixMessageHandler.java
@@ -77,7 +77,7 @@
         }
 
         @Override
-        protected String noRowsMessage() {
+        protected String noRowsMessage(ObjectNode payload) {
             return NO_ROWS_MESSAGE;
         }
 
diff --git a/apps/faultmanagement/fmgui/src/main/java/org/onosproject/faultmanagement/alarms/gui/AlarmTableMessageHandler.java b/apps/faultmanagement/fmgui/src/main/java/org/onosproject/faultmanagement/alarms/gui/AlarmTableMessageHandler.java
index e3538ad..50b9216 100644
--- a/apps/faultmanagement/fmgui/src/main/java/org/onosproject/faultmanagement/alarms/gui/AlarmTableMessageHandler.java
+++ b/apps/faultmanagement/fmgui/src/main/java/org/onosproject/faultmanagement/alarms/gui/AlarmTableMessageHandler.java
@@ -92,7 +92,7 @@
         }
 
         @Override
-        protected String noRowsMessage() {
+        protected String noRowsMessage(ObjectNode payload) {
             return NO_ROWS_MESSAGE;
         }
 
diff --git a/core/api/src/main/java/org/onosproject/ui/table/TableRequestHandler.java b/core/api/src/main/java/org/onosproject/ui/table/TableRequestHandler.java
index 43700db..5cbf01f 100644
--- a/core/api/src/main/java/org/onosproject/ui/table/TableRequestHandler.java
+++ b/core/api/src/main/java/org/onosproject/ui/table/TableRequestHandler.java
@@ -55,7 +55,7 @@
         String sortDir = JsonUtils.string(payload, "sortDir", "asc");
         tm.sort(sortCol, TableModel.sortDir(sortDir));
 
-        addTableConfigAnnotations(tm);
+        addTableConfigAnnotations(tm, payload);
 
         ObjectNode rootNode = MAPPER.createObjectNode();
         rootNode.set(nodeName, TableUtils.generateRowArrayNode(tm));
@@ -77,12 +77,13 @@
     }
 
     /**
-     * Adds all annotations to table model.
+     * Adds table configuration specific annotations to table model.
      *
      * @param tm a table model
+     * @param payload the event payload from the client
      */
-    protected void addTableConfigAnnotations(TableModel tm) {
-        tm.addAnnotation(NO_ROWS_MSG_KEY, noRowsMessage());
+    protected void addTableConfigAnnotations(TableModel tm, ObjectNode payload) {
+        tm.addAnnotation(NO_ROWS_MSG_KEY, noRowsMessage(payload));
     }
 
     /**
@@ -110,9 +111,10 @@
      * are no rows to display. For example, a host table might return
      * "No hosts found".
      *
+     * @param payload request payload
      * @return the message
      */
-    protected abstract String noRowsMessage();
+    protected abstract String noRowsMessage(ObjectNode payload);
 
     /**
      * Subclasses should populate the table model by adding
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/ApplicationViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/ApplicationViewMessageHandler.java
index 2e1e7a0..6f8eee9 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/ApplicationViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/ApplicationViewMessageHandler.java
@@ -78,7 +78,7 @@
         }
 
         @Override
-        protected String noRowsMessage() {
+        protected String noRowsMessage(ObjectNode payload) {
             return NO_ROWS_MESSAGE;
         }
 
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/ClusterViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/ClusterViewMessageHandler.java
index 8c6c1eb..a7eaaee 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/ClusterViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/ClusterViewMessageHandler.java
@@ -72,7 +72,7 @@
         }
 
         @Override
-        protected String noRowsMessage() {
+        protected String noRowsMessage(ObjectNode payload) {
             return NO_ROWS_MESSAGE;
         }
 
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/DeviceViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/DeviceViewMessageHandler.java
index bbcbc91..dff127c 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/DeviceViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/DeviceViewMessageHandler.java
@@ -139,7 +139,7 @@
         }
 
         @Override
-        protected String noRowsMessage() {
+        protected String noRowsMessage(ObjectNode payload) {
             return NO_ROWS_MESSAGE;
         }
 
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/FlowViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/FlowViewMessageHandler.java
index 5860a6d..348edac 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/FlowViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/FlowViewMessageHandler.java
@@ -87,7 +87,7 @@
         }
 
         @Override
-        protected String noRowsMessage() {
+        protected String noRowsMessage(ObjectNode payload) {
             return NO_ROWS_MESSAGE;
         }
 
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/GroupViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/GroupViewMessageHandler.java
index ab61a6a..cc7f5e6 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/GroupViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/GroupViewMessageHandler.java
@@ -19,7 +19,9 @@
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableSet;
+import org.onosproject.net.Device;
 import org.onosproject.net.DeviceId;
+import org.onosproject.net.device.DeviceService;
 import org.onosproject.net.group.Group;
 import org.onosproject.net.group.GroupBucket;
 import org.onosproject.net.group.GroupService;
@@ -45,6 +47,9 @@
     private static final String GROUP_DATA_RESP = "groupDataResponse";
     private static final String GROUPS = "groups";
 
+    private static final String PROTOCOL = "protocol";
+    private static final String OF_10 = "OF_10";
+
     private static final String ID = "id";
     private static final String APP_ID = "app_id";
     private static final String STATE = "state";
@@ -62,10 +67,16 @@
         return ImmutableSet.of(new GroupDataRequest());
     }
 
+    private static String deviceProtocol(Device device) {
+        String protocol = device.annotations().value(PROTOCOL);
+        return protocol != null ? protocol : "";
+    }
+
     // handler for group table requests
     private final class GroupDataRequest extends TableRequestHandler {
 
         private static final String NO_ROWS_MESSAGE = "No groups found";
+        private static final String NOT_SUPPORT_MESSAGE = "Groups not supported";
 
         private GroupDataRequest() {
             super(GROUP_DATA_REQ, GROUP_DATA_RESP, GROUPS);
@@ -77,8 +88,17 @@
         }
 
         @Override
-        protected String noRowsMessage() {
-            // TODO: if devices with OF 1.0, should return not support message
+        protected String noRowsMessage(ObjectNode payload) {
+            String uri = string(payload, "devId");
+            if (!Strings.isNullOrEmpty(uri)) {
+                DeviceService ds = get(DeviceService.class);
+                Device dev = ds.getDevice(DeviceId.deviceId(uri));
+
+                // TODO: replace with a less brittle solution...
+                if (deviceProtocol(dev).equals(OF_10)) {
+                    return NOT_SUPPORT_MESSAGE;
+                }
+            }
             return NO_ROWS_MESSAGE;
         }
 
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/HostViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/HostViewMessageHandler.java
index 47137ee..72da5a0 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/HostViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/HostViewMessageHandler.java
@@ -74,7 +74,7 @@
         }
 
         @Override
-        protected String noRowsMessage() {
+        protected String noRowsMessage(ObjectNode payload) {
             return NO_ROWS_MESSAGE;
         }
 
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/IntentViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/IntentViewMessageHandler.java
index 7f9b5a9..34b0312 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/IntentViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/IntentViewMessageHandler.java
@@ -88,7 +88,7 @@
         }
 
         @Override
-        protected String noRowsMessage() {
+        protected String noRowsMessage(ObjectNode payload) {
             return NO_ROWS_MESSAGE;
         }
 
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/LinkViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/LinkViewMessageHandler.java
index 9b8750e..e61fa50 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/LinkViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/LinkViewMessageHandler.java
@@ -77,7 +77,7 @@
         }
 
         @Override
-        protected String noRowsMessage() {
+        protected String noRowsMessage(ObjectNode payload) {
             return NO_ROWS_MESSAGE;
         }
 
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/MeterViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/MeterViewMessageHandler.java
index ceb643a..d3ba9c5 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/MeterViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/MeterViewMessageHandler.java
@@ -19,7 +19,9 @@
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableSet;
+import org.onosproject.net.Device;
 import org.onosproject.net.DeviceId;
+import org.onosproject.net.device.DeviceService;
 import org.onosproject.net.meter.Band;
 import org.onosproject.net.meter.Meter;
 import org.onosproject.net.meter.MeterService;
@@ -42,6 +44,9 @@
     private static final String METER_DATA_RESP = "meterDataResponse";
     private static final String METERS = "meters";
 
+    private static final String PROTOCOL = "protocol";
+    private static final String OF_10 = "OF_10";
+
     private static final String ID = "id";
     private static final String APP_ID = "app_id";
     private static final String STATE = "state";
@@ -58,10 +63,16 @@
         return ImmutableSet.of(new MeterDataRequest());
     }
 
+    private static String deviceProtocol(Device device) {
+        String protocol = device.annotations().value(PROTOCOL);
+        return protocol != null ? protocol : "";
+    }
+
     // handler for meter table requests
     private final class MeterDataRequest extends TableRequestHandler {
 
         private static final String NO_ROWS_MESSAGE = "No meters found";
+        private static final String NOT_SUPPORT_MESSAGE = "Meters not supported";
 
         private MeterDataRequest() {
             super(METER_DATA_REQ, METER_DATA_RESP, METERS);
@@ -73,8 +84,17 @@
         }
 
         @Override
-        protected String noRowsMessage() {
-            // TODO: if the device with OF 1.0, return not support message
+        protected String noRowsMessage(ObjectNode payload) {
+            String uri = string(payload, "devId");
+            if (!Strings.isNullOrEmpty(uri)) {
+                DeviceService ds = get(DeviceService.class);
+                Device dev = ds.getDevice(DeviceId.deviceId(uri));
+
+                // TODO: replace with a less brittle solution...
+                if (deviceProtocol(dev).equals(OF_10)) {
+                    return NOT_SUPPORT_MESSAGE;
+                }
+            }
             return NO_ROWS_MESSAGE;
         }
 
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/PortViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/PortViewMessageHandler.java
index c196642..d67251d 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/PortViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/PortViewMessageHandler.java
@@ -74,7 +74,7 @@
         }
 
         @Override
-        protected String noRowsMessage() {
+        protected String noRowsMessage(ObjectNode payload) {
             return NO_ROWS_MESSAGE;
         }
 
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/ProcessorViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/ProcessorViewMessageHandler.java
index 1353538..7eaccf8 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/ProcessorViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/ProcessorViewMessageHandler.java
@@ -76,7 +76,7 @@
         }
 
         @Override
-        protected String noRowsMessage() {
+        protected String noRowsMessage(ObjectNode payload) {
             return NO_ROWS_MESSAGE;
         }
 
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/SettingsViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/SettingsViewMessageHandler.java
index 76171c0..0d37d75 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/SettingsViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/SettingsViewMessageHandler.java
@@ -65,7 +65,7 @@
         }
 
         @Override
-        protected String noRowsMessage() {
+        protected String noRowsMessage(ObjectNode payload) {
             return NO_ROWS_MESSAGE;
         }
 
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/TunnelViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/TunnelViewMessageHandler.java
index 2abc321..5588ae4 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/TunnelViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/TunnelViewMessageHandler.java
@@ -67,7 +67,7 @@
         }
 
         @Override
-        protected String noRowsMessage() {
+        protected String noRowsMessage(ObjectNode payload) {
             return NO_ROWS_MESSAGE;
         }
 
diff --git a/web/gui/src/main/webapp/app/fw/widget/tableBuilder.js b/web/gui/src/main/webapp/app/fw/widget/tableBuilder.js
index f4e0783..c7e585e 100644
--- a/web/gui/src/main/webapp/app/fw/widget/tableBuilder.js
+++ b/web/gui/src/main/webapp/app/fw/widget/tableBuilder.js
@@ -64,6 +64,7 @@
             cancelTardy();
             ls.stop();
             o.scope.tableData = data[root];
+            o.scope.annots = data.annots;
             onResp && onResp();
 
             // checks if data changed for row flashing
diff --git a/web/gui/src/main/webapp/app/view/app/app.html b/web/gui/src/main/webapp/app/view/app/app.html
index 4ec1e01..f3c892e 100644
--- a/web/gui/src/main/webapp/app/view/app/app.html
+++ b/web/gui/src/main/webapp/app/view/app/app.html
@@ -53,7 +53,7 @@
             <table onos-flash-changes id-prop="id">
                 <tr ng-if="!tableData.length" class="no-data">
                     <td colspan="5">
-                        No Applications found
+                        {{annots.no_rows_msg}}
                     </td>
                 </tr>
 
diff --git a/web/gui/src/main/webapp/app/view/cluster/cluster.html b/web/gui/src/main/webapp/app/view/cluster/cluster.html
index 50bb01b..0923529 100644
--- a/web/gui/src/main/webapp/app/view/cluster/cluster.html
+++ b/web/gui/src/main/webapp/app/view/cluster/cluster.html
@@ -43,7 +43,7 @@
             <table onos-flash-changes id-prop="id">
                 <tr ng-if="!tableData.length" class="no-data">
                     <td colspan="5">
-                        No Cluster Nodes found
+                        {{annots.no_rows_msg}}
                     </td>
                 </tr>
 
diff --git a/web/gui/src/main/webapp/app/view/device/device.html b/web/gui/src/main/webapp/app/view/device/device.html
index f2b6f8d..9f9e37d 100644
--- a/web/gui/src/main/webapp/app/view/device/device.html
+++ b/web/gui/src/main/webapp/app/view/device/device.html
@@ -56,7 +56,7 @@
             <table onos-flash-changes id-prop="id">
                 <tr ng-if="!tableData.length" class="no-data">
                     <td colspan="9">
-                        No Devices found
+                        {{annots.no_rows_msg}}
                     </td>
                 </tr>
 
diff --git a/web/gui/src/main/webapp/app/view/flow/flow.html b/web/gui/src/main/webapp/app/view/flow/flow.html
index 796a563..175daab 100644
--- a/web/gui/src/main/webapp/app/view/flow/flow.html
+++ b/web/gui/src/main/webapp/app/view/flow/flow.html
@@ -60,7 +60,7 @@
             <table onos-flash-changes id-prop="id">
                 <tr ng-if="!tableData.length" class="no-data">
                     <td colspan="10">
-                        No Flows found
+                        {{annots.no_rows_msg}}
                     </td>
                 </tr>
 
diff --git a/web/gui/src/main/webapp/app/view/group/group.html b/web/gui/src/main/webapp/app/view/group/group.html
index df5afeb..8d2ab02 100644
--- a/web/gui/src/main/webapp/app/view/group/group.html
+++ b/web/gui/src/main/webapp/app/view/group/group.html
@@ -56,7 +56,7 @@
             <table onos-flash-changes id-prop="id">
                 <tr ng-if="!tableData.length" class="no-data">
                     <td colspan="6">
-                        No Groups found
+                        {{annots.no_rows_msg}}
                     </td>
                 </tr>
 
diff --git a/web/gui/src/main/webapp/app/view/host/host.html b/web/gui/src/main/webapp/app/view/host/host.html
index 41e4bd8..a103dac 100644
--- a/web/gui/src/main/webapp/app/view/host/host.html
+++ b/web/gui/src/main/webapp/app/view/host/host.html
@@ -28,7 +28,7 @@
             <table onos-flash-changes id-prop="id">
                 <tr ng-if="!tableData.length" class="no-data">
                     <td colspan="6">
-                        No Hosts found
+                        {{annots.no_rows_msg}}
                     </td>
                 </tr>
 
diff --git a/web/gui/src/main/webapp/app/view/intent/intent.html b/web/gui/src/main/webapp/app/view/intent/intent.html
index b0238c3..2610c35 100644
--- a/web/gui/src/main/webapp/app/view/intent/intent.html
+++ b/web/gui/src/main/webapp/app/view/intent/intent.html
@@ -32,7 +32,7 @@
             <table onos-flash-changes id-prop="key">
                 <tr ng-if="!tableData.length" class="no-data">
                     <td colspan="5">
-                        No Intents found
+                        {{annots.no_rows_msg}}
                     </td>
                 </tr>
 
diff --git a/web/gui/src/main/webapp/app/view/link/link.html b/web/gui/src/main/webapp/app/view/link/link.html
index f62a628..3138bd4 100644
--- a/web/gui/src/main/webapp/app/view/link/link.html
+++ b/web/gui/src/main/webapp/app/view/link/link.html
@@ -44,7 +44,7 @@
             <table onos-flash-changes id-prop="one">
                 <tr ng-if="!tableData.length" class="no-data">
                     <td colspan="6">
-                        No Links found
+                        {{annots.no_rows_msg}}
                     </td>
                 </tr>
 
diff --git a/web/gui/src/main/webapp/app/view/meter/meter.html b/web/gui/src/main/webapp/app/view/meter/meter.html
index b068908..a35cbbd 100644
--- a/web/gui/src/main/webapp/app/view/meter/meter.html
+++ b/web/gui/src/main/webapp/app/view/meter/meter.html
@@ -55,7 +55,7 @@
             <table onos-flash-changes id-prop="id">
                 <tr ng-if="!tableData.length" class="no-data">
                     <td colspan="5">
-                        No Meters found
+                        {{annots.no_rows_msg}}
                     </td>
                 </tr>
 
diff --git a/web/gui/src/main/webapp/app/view/port/port.html b/web/gui/src/main/webapp/app/view/port/port.html
index 7400433..2a012b3 100644
--- a/web/gui/src/main/webapp/app/view/port/port.html
+++ b/web/gui/src/main/webapp/app/view/port/port.html
@@ -58,7 +58,7 @@
             <table onos-flash-changes id-prop="id">
                 <tr ng-if="!tableData.length" class="no-data">
                     <td colspan="8">
-                        No Ports found
+                        {{annots.no_rows_msg}}
                     </td>
                 </tr>
 
diff --git a/web/gui/src/main/webapp/app/view/processor/processor.html b/web/gui/src/main/webapp/app/view/processor/processor.html
index 11aa83f..f2594b4 100644
--- a/web/gui/src/main/webapp/app/view/processor/processor.html
+++ b/web/gui/src/main/webapp/app/view/processor/processor.html
@@ -40,7 +40,7 @@
             <table onos-flash-changes id-prop="id">
                 <tr ng-if="!tableData.length" class="no-data">
                     <td colspan="5">
-                        No Processors found
+                        {{annots.no_rows_msg}}
                     </td>
                 </tr>
 
diff --git a/web/gui/src/main/webapp/app/view/settings/settings.html b/web/gui/src/main/webapp/app/view/settings/settings.html
index 419ad2c..bc8bf5d 100644
--- a/web/gui/src/main/webapp/app/view/settings/settings.html
+++ b/web/gui/src/main/webapp/app/view/settings/settings.html
@@ -28,7 +28,7 @@
             <table onos-flash-changes id-prop="id">
                 <tr ng-if="!tableData.length" class="no-data">
                     <td colspan="6">
-                        No Settings found
+                        {{annots.no_rows_msg}}
                     </td>
                 </tr>
 
diff --git a/web/gui/src/main/webapp/app/view/tunnel/tunnel.html b/web/gui/src/main/webapp/app/view/tunnel/tunnel.html
index abeb9f9..46a5a67 100644
--- a/web/gui/src/main/webapp/app/view/tunnel/tunnel.html
+++ b/web/gui/src/main/webapp/app/view/tunnel/tunnel.html
@@ -46,7 +46,7 @@
             <table onos-flash-changes id-prop="one">
                 <tr ng-if="!tableData.length" class="no-data">
                     <td colspan="6">
-                        No tunnels found
+                        {{annots.no_rows_msg}}
                     </td>
                 </tr>
 
