diff --git a/xos/synchronizer/ceilometer/ceilometer-plugins/entry_points.txt b/xos/synchronizer/ceilometer/ceilometer-plugins/entry_points.txt
index f2b1a5e..05720f9 100644
--- a/xos/synchronizer/ceilometer/ceilometer-plugins/entry_points.txt
+++ b/xos/synchronizer/ceilometer/ceilometer-plugins/entry_points.txt
@@ -172,6 +172,8 @@
 vcpe.dns.server.queries_failed= ceilometer.network.ext_services.vcpe.notifications:VCPEDNSServerQueriesFailed
 volt.device= ceilometer.network.ext_services.volt.notifications:VOLTDeviceNotification
 volt.device.subscribers= ceilometer.network.ext_services.volt.notifications:VOLTDeviceSubscriberNotification
+broadview.bst.device=ceilometer.network.ext_services.broadview.notifications:BroadViewNotificationBase
+broadview.bst.ingress-port-priority-group=ceilometer.network.ext_services.broadview.notifications:BroadViewNotificationBase
 
 [ceilometer.poll.central]
 energy = ceilometer.energy.kwapi:EnergyPollster
diff --git a/xos/synchronizer/ceilometer/ceilometer-plugins/network/ext_services/broadview/__init__.py b/xos/synchronizer/ceilometer/ceilometer-plugins/network/ext_services/broadview/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/xos/synchronizer/ceilometer/ceilometer-plugins/network/ext_services/broadview/__init__.py
diff --git a/xos/synchronizer/ceilometer/ceilometer-plugins/network/ext_services/broadview/notifications.py b/xos/synchronizer/ceilometer/ceilometer-plugins/network/ext_services/broadview/notifications.py
new file mode 100644
index 0000000..0189e6c
--- /dev/null
+++ b/xos/synchronizer/ceilometer/ceilometer-plugins/network/ext_services/broadview/notifications.py
@@ -0,0 +1,66 @@
+#
+# Copyright 2012 New Dream Network, LLC (DreamHost)
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+"""Handler for producing network counter messages from Neutron notification
+   events.
+
+"""
+
+import oslo_messaging
+from oslo_config import cfg
+
+from ceilometer.agent import plugin_base
+from oslo_log import log
+from ceilometer import sample
+
+OPTS = [
+    cfg.StrOpt('broadview_control_exchange',
+               default='broadview_service',
+               help="Exchange name for Broadview notifications."),
+]
+
+cfg.CONF.register_opts(OPTS)
+
+LOG = log.getLogger(__name__)
+
+
+class BroadViewNotificationBase(plugin_base.NotificationBase):
+
+    resource_name = None
+    event_types = ['broadview.bst.*']
+
+    def get_targets(self,conf):
+        """Return a sequence of oslo.messaging.Target
+
+        This sequence is defining the exchange and topics to be connected for
+        this plugin.
+        """
+        LOG.info("SRIKANTH: get_targets for BroadView Notification Listener")
+        return [oslo_messaging.Target(topic=topic,
+                                      exchange=conf.broadview_control_exchange)
+                for topic in self.get_notification_topics(conf)]
+
+    def process_notification(self, message):
+        if message['payload']:
+            resource_id = 'broadview_' + message["payload"]["asic-id"] 
+            LOG.info('SRIKANTH: Received BroadView %(event_type)s notification: resource_id=%(resource_id)s' % {'event_type': message['event_type'], 'resource_id': resource_id})
+            yield sample.Sample.from_notification(
+                name=message['event_type'],
+                type=sample.TYPE_GAUGE,
+                unit='bv-agent',
+                volume=message['payload']['value'],
+                user_id=None,
+                project_id='default_admin_tenant',
+                resource_id=resource_id,
+                message=message)
