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)
