diff --git a/module/obmc/wsgi/apps/rest_dbus.py b/module/obmc/wsgi/apps/rest_dbus.py
index cda23df..71c8788 100644
--- a/module/obmc/wsgi/apps/rest_dbus.py
+++ b/module/obmc/wsgi/apps/rest_dbus.py
@@ -1181,6 +1181,27 @@
         return self.Checker(content_type, callback)
 
 
+class CheckURLPlugin(object):
+    ''' Ensures that anything read and written using the old /org/openbmc route
+        would not be allowed. '''
+    name = 'url_checker'
+    api = 2
+
+    class Checker:
+        def __init__(self, callback):
+            self.callback = callback
+            self.error_str = "org.freedesktop.DBus.Error.FileNotFound: path " \
+                             + "or object not found: '%s'"
+
+        def __call__(self, *a, **kw):
+            if "/org/openbmc" in request.url:
+                abort(404, self.error_str % (request.url))
+            return self.callback(*a, **kw)
+
+    def apply(self, callback, route):
+        return self.Checker(callback)
+
+
 class App(Bottle):
     def __init__(self, **kw):
         super(App, self).__init__(autojson=False)
@@ -1207,6 +1228,7 @@
         self.install(JsonApiResponsePlugin(self))
         self.install(JsonApiRequestPlugin())
         self.install(JsonApiRequestTypePlugin())
+        self.install(CheckURLPlugin())
 
     def install_hooks(self):
         self.error_handler_type = type(self.default_error_handler)
