diff --git a/xos/synchronizer/steps/sync_vbbu.py b/xos/synchronizer/steps/sync_vbbu.py
deleted file mode 100644
index a000230..0000000
--- a/xos/synchronizer/steps/sync_vbbu.py
+++ /dev/null
@@ -1,37 +0,0 @@
-import os
-import sys
-from django.db.models import Q, F
-from services.vbbu.models import MCORDService, VBBUComponent
-from synchronizers.base.SyncInstanceUsingAnsible import SyncInstanceUsingAnsible
-
-parentdir = os.path.join(os.path.dirname(__file__), "..")
-sys.path.insert(0, parentdir)
-
-class SyncVBBUComponent(SyncInstanceUsingAnsible):
-
-    provides = [VBBUComponent]
-
-    observes = VBBUComponent
-
-    requested_interval = 0
-
-    template_name = "sync_vbbu.yaml"
-
-    service_key_name = "/opt/xos/configurations/mcord/mcord_private_key"
-
-    def __init__(self, *args, **kwargs):
-        super(SyncVBBUComponent, self).__init__(*args, **kwargs)
-
-    def fetch_pending(self, deleted):
-
-        if (not deleted):
-            objs = VBBUComponent.get_tenant_objects().filter(
-                Q(enacted__lt=F('updated')) | Q(enacted=None), Q(lazy_blocked=False))
-        else:
-
-            objs = VBBUComponent.get_deleted_tenant_objects()
-
-        return objs
-
-    def get_extra_attributes(self, o):
-        return {"display_message": o.display_message, "s1u_tag": o.s1u_tag, "s1mme_tag": o.s1mme_tag, "rru_tag": o.rru_tag}
diff --git a/xos/synchronizer/steps/sync_vbbutenant.py b/xos/synchronizer/steps/sync_vbbutenant.py
new file mode 100644
index 0000000..1ec4528
--- /dev/null
+++ b/xos/synchronizer/steps/sync_vbbutenant.py
@@ -0,0 +1,39 @@
+import os
+import sys
+from django.db.models import Q, F
+# from services.vbbu.models import MCORDService, VBBUTenant
+from synchronizers.new_base.modelaccessor import *
+from synchronizers.new_base.SyncInstanceUsingAnsible import SyncInstanceUsingAnsible
+
+parentdir = os.path.join(os.path.dirname(__file__), "..")
+sys.path.insert(0, parentdir)
+
+class SyncVBBUTenant(SyncInstanceUsingAnsible):
+
+
+    provides = [VBBUTenant]
+
+    observes = VBBUTenant
+
+    requested_interval = 0
+
+    template_name = "vbbutenant_playbook.yaml"
+
+    service_key_name = "/opt/xos/configurations/mcord/mcord_private_key"
+
+    def __init__(self, *args, **kwargs):
+        super(SyncVBBUTenant, self).__init__(*args, **kwargs)
+
+    def fetch_pending(self, deleted):
+
+        if (not deleted):
+            objs = VBBUTenant.get_tenant_objects().filter(
+                Q(enacted__lt=F('updated')) | Q(enacted=None), Q(lazy_blocked=False))
+        else:
+
+            objs = VBBUTenant.get_deleted_tenant_objects()
+
+        return objs
+
+    def get_extra_attributes(self, o):
+        return {"display_message": o.display_message, "s1u_tag": o.s1u_tag, "s1mme_tag": o.s1mme_tag, "rru_tag": o.rru_tag}
diff --git a/xos/synchronizer/steps/sync_vbbu.yaml b/xos/synchronizer/steps/vbbutenant_playbook.yaml
similarity index 100%
rename from xos/synchronizer/steps/sync_vbbu.yaml
rename to xos/synchronizer/steps/vbbutenant_playbook.yaml
