diff --git a/xos/synchronizer/Dockerfile.synchronizer b/xos/synchronizer/Dockerfile.synchronizer
new file mode 100644
index 0000000..ae897bf
--- /dev/null
+++ b/xos/synchronizer/Dockerfile.synchronizer
@@ -0,0 +1,39 @@
+# xosproject/vsgwu-synchronizer
+FROM xosproject/xos-synchronizer-base:candidate
+
+COPY . /opt/xos/synchronizers/vsgwu
+
+ENTRYPOINT []
+
+WORKDIR "/opt/xos/synchronizers/vsgwu"
+
+# Label image
+ARG org_label_schema_schema_version=1.0
+ARG org_label_schema_name=vsgwu-synchronizer
+ARG org_label_schema_version=unknown
+ARG org_label_schema_vcs_url=unknown
+ARG org_label_schema_vcs_ref=unknown
+ARG org_label_schema_build_date=unknown
+ARG org_opencord_vcs_commit_date=unknown
+ARG org_opencord_component_chameleon_version=unknown
+ARG org_opencord_component_chameleon_vcs_url=unknown
+ARG org_opencord_component_chameleon_vcs_ref=unknown
+ARG org_opencord_component_xos_version=unknown
+ARG org_opencord_component_xos_vcs_url=unknown
+ARG org_opencord_component_xos_vcs_ref=unknown
+
+LABEL org.label-schema.schema-version=$org_label_schema_schema_version \
+      org.label-schema.name=$org_label_schema_name \
+      org.label-schema.version=$org_label_schema_version \
+      org.label-schema.vcs-url=$org_label_schema_vcs_url \
+      org.label-schema.vcs-ref=$org_label_schema_vcs_ref \
+      org.label-schema.build-date=$org_label_schema_build_date \
+      org.opencord.vcs-commit-date=$org_opencord_vcs_commit_date \
+      org.opencord.component.chameleon.version=$org_opencord_component_chameleon_version \
+      org.opencord.component.chameleon.vcs-url=$org_opencord_component_chameleon_vcs_url \
+      org.opencord.component.chameleon.vcs-ref=$org_opencord_component_chameleon_vcs_ref \
+      org.opencord.component.xos.version=$org_opencord_component_xos_version \
+      org.opencord.component.xos.vcs-url=$org_opencord_component_xos_vcs_url \
+      org.opencord.component.xos.vcs-ref=$org_opencord_component_xos_vcs_ref
+
+CMD bash -c "cd /opt/xos/synchronizers/vsgwu; ./run-from-api.sh"
\ No newline at end of file
diff --git a/xos/synchronizer/manifest b/xos/synchronizer/manifest
new file mode 100644
index 0000000..30b0124
--- /dev/null
+++ b/xos/synchronizer/manifest
@@ -0,0 +1,8 @@
+model-deps
+manifest
+run.sh
+stop.sh
+vsgwu-synchronizer.py
+vsgwu_config
+steps/sync_vsgwu.py
+steps/sync_vsgwu.yaml
diff --git a/xos/synchronizer/model-deps b/xos/synchronizer/model-deps
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/xos/synchronizer/model-deps
@@ -0,0 +1 @@
+{}
diff --git a/xos/synchronizer/run-from-api.sh b/xos/synchronizer/run-from-api.sh
new file mode 100755
index 0000000..dd1e1b8
--- /dev/null
+++ b/xos/synchronizer/run-from-api.sh
@@ -0,0 +1,2 @@
+export XOS_DIR=/opt/xos
+python vsgwu-synchronizer.py  -C $XOS_DIR/synchronizers/vsgwu/vsgwu_from_api_config
\ No newline at end of file
diff --git a/xos/synchronizer/steps/sync_vsgwutenant.py b/xos/synchronizer/steps/sync_vsgwutenant.py
new file mode 100644
index 0000000..5215a34
--- /dev/null
+++ b/xos/synchronizer/steps/sync_vsgwutenant.py
@@ -0,0 +1,40 @@
+import os
+import sys
+from django.db.models import Q, F
+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 SyncVSGWUTenant(SyncInstanceUsingAnsible):
+
+    provides = [VSGWUTenant]
+
+    observes = VSGWUTenant
+
+    requested_interval = 0
+
+    template_name = "vpgwutenant_playbook.yaml"
+
+    service_key_name = "/opt/xos/configurations/mcord/mcord_private_key"
+
+    def __init__(self, *args, **kwargs):
+        super(SyncVSGWUTenant, self).__init__(*args, **kwargs)
+
+    def fetch_pending(self, deleted):
+
+        if (not deleted):
+            objs = VSGWUTenant.get_tenant_objects().filter(
+                Q(enacted__lt=F('updated')) | Q(enacted=None), Q(lazy_blocked=False))
+        else:
+            # If this is a deletion we get all of the deleted tenants..
+            objs = VSGWUTenant.get_deleted_tenant_objects()
+
+        return objs
+
+    def get_extra_attributes(self, o):
+        fields = {}
+        fields['tenant_message'] = o.tenant_message
+        return fields
+
diff --git a/xos/synchronizer/steps/vsgwutenant_playbook.yaml b/xos/synchronizer/steps/vsgwutenant_playbook.yaml
new file mode 100644
index 0000000..ede8674
--- /dev/null
+++ b/xos/synchronizer/steps/vsgwutenant_playbook.yaml
@@ -0,0 +1,11 @@
+---
+- hosts: {{ instance_name }}
+  connection: ssh
+  user: ubuntu
+  become: yes
+  gather_facts: no
+  tasks:
+
+  vars:
+    - tenant_message: "{{ tenant_message }}"
+  
diff --git a/xos/synchronizer/stop.sh b/xos/synchronizer/stop.sh
new file mode 100644
index 0000000..2fc4f94
--- /dev/null
+++ b/xos/synchronizer/stop.sh
@@ -0,0 +1,2 @@
+# Kill the observer
+pkill -9 -f vsgwu-synchronizer.py
diff --git a/xos/synchronizer/vsgwu-synchronizer.py b/xos/synchronizer/vsgwu-synchronizer.py
new file mode 100755
index 0000000..aafdb44
--- /dev/null
+++ b/xos/synchronizer/vsgwu-synchronizer.py
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+
+# Runs the standard XOS synchronizer
+
+import importlib
+import os
+import sys
+
+synchronizer_path = os.path.join(os.path.dirname(
+    os.path.realpath(__file__)), "../../synchronizers/new_base")
+sys.path.append(synchronizer_path)
+mod = importlib.import_module("xos-synchronizer")
+mod.main()
+
diff --git a/xos/synchronizer/vsgwu_from_api_config b/xos/synchronizer/vsgwu_from_api_config
new file mode 100644
index 0000000..b37c255
--- /dev/null
+++ b/xos/synchronizer/vsgwu_from_api_config
@@ -0,0 +1,20 @@
+# Sets options for the synchronizer
+[observer]
+name=vsgwu
+dependency_graph=/opt/xos/synchronizers/vsgwu/model-deps
+steps_dir=/opt/xos/synchronizers/vsgwu/steps
+sys_dir=/opt/xos/synchronizers/vsgwu/sys
+#logfile=/var/log/xos_backend.log
+log_file=console
+log_level=debug
+pretend=False
+backoff_disabled=True
+save_ansible_output=True
+proxy_ssh=True
+proxy_ssh_key=/opt/cord_profile/node_key
+proxy_ssh_user=root
+accessor_kind=api
+accessor_password=@/opt/xos/services/vsgwu/credentials/xosadmin@opencord.org
+
+[networking]
+use_vtn=True
\ No newline at end of file
