diff --git a/xos/make_synchronizer_manifest.sh b/xos/make_synchronizer_manifest.sh
new file mode 100755
index 0000000..4058982
--- /dev/null
+++ b/xos/make_synchronizer_manifest.sh
@@ -0,0 +1,2 @@
+#! /bin/bash
+find synchronizer -type f | cut -b 14- > synchronizer/manifest 
diff --git a/xos/models.py b/xos/models.py
new file mode 100644
index 0000000..3c8ef23
--- /dev/null
+++ b/xos/models.py
@@ -0,0 +1,57 @@
+from core.models.plcorebase import *
+from models_decl import VSGWUService_decl
+from models_decl import VSGWUTenant_decl
+
+from django.db import models
+from core.models import Service, PlCoreBase, Slice, Instance, Tenant, TenantWithContainer, Node, Image, User, Flavor, NetworkParameter, NetworkParameterType, Port, AddressPool
+from core.models.plcorebase import StrippedCharField
+import os
+from django.db import models, transaction
+from django.forms.models import model_to_dict
+from django.db.models import *
+from operator import itemgetter, attrgetter, methodcaller
+from core.models import Tag
+from core.models.service import LeastLoadedNodeScheduler
+import traceback
+from xos.exceptions import *
+from xos.config import Config
+from django.contrib.contenttypes.models import ContentType
+from django.contrib.contenttypes.fields import GenericForeignKey
+
+class VSGWUService(VSGWUService_decl):
+   class Meta:
+        proxy = True 
+
+class VSGWUTenant(VSGWUTenant_decl):
+   class Meta:
+        proxy = True 
+        
+   def __init__(self, *args, **kwargs):
+       vsgwuservice = VSGWUService.get_service_objects().all()
+       if vsgwuservice:
+           self._meta.get_field(
+                   "provider_service").default = vsgwuservice[0].id
+       super(VSGWUTenant, self).__init__(*args, **kwargs)
+
+   def save(self, *args, **kwargs):
+       super(VSGWUTenant, self).save(*args, **kwargs)
+       # This call needs to happen so that an instance is created for this
+       # tenant is created in the slice. One instance is created per tenant.
+       model_policy_vsgwutenant(self.pk)
+
+   def delete(self, *args, **kwargs):
+       # Delete the instance that was created for this tenant
+       self.cleanup_container()
+       super(VSGWUTenant, self).delete(*args, **kwargs)
+
+def model_policy_vsgwutenant(pk):
+    # This section of code is atomic to prevent race conditions
+    with transaction.atomic():
+        # We find all of the tenants that are waiting to update
+        tenant = VSGWUTenant.objects.select_for_update().filter(pk=pk)
+        if not tenant:
+            return
+        # Since this code is atomic it is safe to always use the first tenant
+        tenant = tenant[0]
+        tenant.manage_container()
+
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
diff --git a/xos/tosca/custom_types/macros.m4 b/xos/tosca/custom_types/macros.m4
new file mode 100644
index 0000000..1f48f10
--- /dev/null
+++ b/xos/tosca/custom_types/macros.m4
@@ -0,0 +1,84 @@
+# Note: Tosca derived_from isn't working the way I think it should, it's not
+#    inheriting from the parent template. Until we get that figured out, use
+#    m4 macros do our inheritance
+
+define(xos_base_props,
+            no-delete:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to delete this object
+            no-create:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to create this object
+            no-update:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to update this object
+            replaces:
+                type: string
+                required: false
+                descrption: Replaces/renames this object)
+# Service
+define(xos_base_service_caps,
+            scalable:
+                type: tosca.capabilities.Scalable
+            service:
+                type: tosca.capabilities.xos.Service)
+define(xos_base_service_props,
+            kind:
+                type: string
+                default: generic
+                description: Type of service.
+            view_url:
+                type: string
+                required: false
+                description: URL to follow when icon is clicked in the Service Directory.
+            icon_url:
+                type: string
+                required: false
+                description: ICON to display in the Service Directory.
+            enabled:
+                type: boolean
+                default: true
+            published:
+                type: boolean
+                default: true
+                description: If True then display this Service in the Service Directory.
+            public_key:
+                type: string
+                required: false
+                description: Public key to install into Instances to allows Services to SSH into them.
+            private_key_fn:
+                type: string
+                required: false
+                description: Location of private key file
+            versionNumber:
+                type: string
+                required: false
+                description: Version number of Service.)
+# Subscriber
+define(xos_base_subscriber_caps,
+            subscriber:
+                type: tosca.capabilities.xos.Subscriber)
+define(xos_base_subscriber_props,
+            kind:
+                type: string
+                default: generic
+                description: Kind of subscriber
+            service_specific_id:
+                type: string
+                required: false
+                description: Service specific ID opaque to XOS but meaningful to service)
+define(xos_base_tenant_props,
+            kind:
+                type: string
+                default: generic
+                description: Kind of tenant
+            service_specific_id:
+                type: string
+                required: false
+                description: Service specific ID opaque to XOS but meaningful to service)
+
+# end m4 macros
+
diff --git a/xos/tosca/custom_types/vsgwu.m4 b/xos/tosca/custom_types/vsgwu.m4
new file mode 100644
index 0000000..a0e4983
--- /dev/null
+++ b/xos/tosca/custom_types/vsgwu.m4
@@ -0,0 +1,27 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+# compile this with "m4 vsgwu.m4 > vsgwu.yaml"
+
+# include macros
+include(macros.m4)
+
+node_types:
+    tosca.nodes.VSGWUService:
+        derived_from: tosca.nodes.Root
+        description: >
+            VSGWU Service
+        capabilities:
+            xos_base_service_caps
+        properties:
+            xos_base_props
+            xos_base_service_props
+
+    tosca.nodes.VSGWUTenant:
+        derived_from: tosca.nodes.Root
+        description: >
+            VSGWU Tenant
+        properties:
+            xos_base_tenant_props
+            tenant_message:
+                type: string
+                required: false
diff --git a/xos/tosca/custom_types/vsgwu.yaml b/xos/tosca/custom_types/vsgwu.yaml
new file mode 100644
index 0000000..662794f
--- /dev/null
+++ b/xos/tosca/custom_types/vsgwu.yaml
@@ -0,0 +1,97 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+# compile this with "m4 vsgwu.m4 > vsgwu.yaml"
+
+# include macros
+# Note: Tosca derived_from isn't working the way I think it should, it's not
+#    inheriting from the parent template. Until we get that figured out, use
+#    m4 macros do our inheritance
+
+
+# Service
+
+
+# Subscriber
+
+
+
+
+# end m4 macros
+
+
+
+node_types:
+    tosca.nodes.VSGWUService:
+        derived_from: tosca.nodes.Root
+        description: >
+            VSGWU Service
+        capabilities:
+            scalable:
+                type: tosca.capabilities.Scalable
+            service:
+                type: tosca.capabilities.xos.Service
+        properties:
+            no-delete:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to delete this object
+            no-create:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to create this object
+            no-update:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to update this object
+            replaces:
+                type: string
+                required: false
+                descrption: Replaces/renames this object
+            kind:
+                type: string
+                default: generic
+                description: Type of service.
+            view_url:
+                type: string
+                required: false
+                description: URL to follow when icon is clicked in the Service Directory.
+            icon_url:
+                type: string
+                required: false
+                description: ICON to display in the Service Directory.
+            enabled:
+                type: boolean
+                default: true
+            published:
+                type: boolean
+                default: true
+                description: If True then display this Service in the Service Directory.
+            public_key:
+                type: string
+                required: false
+                description: Public key to install into Instances to allows Services to SSH into them.
+            private_key_fn:
+                type: string
+                required: false
+                description: Location of private key file
+            versionNumber:
+                type: string
+                required: false
+                description: Version number of Service.
+
+    tosca.nodes.VSGWUTenant:
+        derived_from: tosca.nodes.Root
+        description: >
+            VSGWU Tenant
+        properties:
+            kind:
+                type: string
+                default: generic
+                description: Kind of tenant
+            service_specific_id:
+                type: string
+                required: false
+                description: Service specific ID opaque to XOS but meaningful to service
+            tenant_message:
+                type: string
+                required: false
diff --git a/xos/tosca/resources/vsgwuservice.py b/xos/tosca/resources/vsgwuservice.py
new file mode 100644
index 0000000..bd01699
--- /dev/null
+++ b/xos/tosca/resources/vsgwuservice.py
@@ -0,0 +1,9 @@
+# from services.vsgwu.models import VSGWService
+from service import XOSService
+from services.vsgwu.models import VSGWUService
+
+class XOSVSGWUService(XOSService):
+    provides = "tosca.nodes.VSGWUService"
+    xos_model = VSGWUService
+    copyin_props = ["view_url", "icon_url", "enabled", "published", "public_key", "private_key_fn", "versionNumber"]
+
diff --git a/xos/tosca/resources/vsgwutenant.py b/xos/tosca/resources/vsgwutenant.py
new file mode 100644
index 0000000..c44459a
--- /dev/null
+++ b/xos/tosca/resources/vsgwutenant.py
@@ -0,0 +1,28 @@
+from xosresource import XOSResource
+from core.models import Service, Tenant
+from services.vsgwu.models import VSGWUTenant
+
+class XOSVSGWUTenant(XOSResource):
+    provides = "tosca.nodes.VSGWUTenant"
+    xos_model = VSGWUTenant
+    name_field = "service_specific_id"
+    copyin_props = ("tenant_message",)
+
+    def get_xos_args(self, throw_exception=True):
+        args = super(XOSVSGWUTenant, self).get_xos_args()
+
+        # ExampleTenant must always have a provider_service
+        provider_name = self.get_requirement("tosca.relationships.TenantOfService", throw_exception=throw_exception)
+        if provider_name:
+            args["provider_service"] = self.get_xos_object(Service, throw_exception=throw_exception, name=provider_name)
+
+        return args
+
+    def get_existing_objs(self):
+        args = self.get_xos_args(throw_exception=False)
+        return VSGWUTenant.get_tenant_objects().filter(provider_service=args["provider_service"], service_specific_id=args["service_specific_id"])
+        return []
+
+    def can_delete(self, obj):
+        return super(XOSVSGWUTenant, self).can_delete(obj)
+
diff --git a/xos/vsgwu-onboard.yaml b/xos/vsgwu-onboard.yaml
new file mode 100644
index 0000000..e70a6c8
--- /dev/null
+++ b/xos/vsgwu-onboard.yaml
@@ -0,0 +1,23 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+description: Onboard the vsgwu
+
+imports:
+   - custom_types/xos.yaml
+
+topology_template:
+  node_templates:
+    servicecontroller#vsgwu:
+      type: tosca.nodes.ServiceController
+      properties:
+          base_url: file:///opt/xos_services/vsgwu/xos/
+          # The following will concatenate with base_url automatically, if
+          # base_url is non-null.
+          xproto: ./
+          synchronizer: synchronizer/manifest
+          synchronizer_run: vsgwu-synchronizer.py
+          tosca_custom_types: tosca/custom_types/vsgwu.yaml
+          tosca_resource: tosca/resources/vsgwutenant.py, tosca/resources/vsgwuservice.py
+          private_key: file:///opt/xos/key_import/mcord_rsa
+          public_key: file:///opt/xos/key_import/mcord_rsa.pub
+
diff --git a/xos/vsgwu.xproto b/xos/vsgwu.xproto
new file mode 100644
index 0000000..ea64d77
--- /dev/null
+++ b/xos/vsgwu.xproto
@@ -0,0 +1,16 @@
+option name = "vSGWU";
+option verbose_name = "Virtual Serving Gateway User Plane";
+option app_label = "vsgwu";
+option kind = "vEPC";
+option legacy = "True";
+
+message VSGWUService (Service){
+    option name = "VSGWUService";
+    option verbose_name = "Virtual Serving Gateway User Plane Service ";
+}
+
+message VSGWUTenant (TenantWithContainer){
+     option name = "VSGWUTenant";
+     option verbose_name = "Virtual Serving Gateway User Plane Tenant";
+     required string tenant_message = 1 [help_text = "Tenant Message to Display", max_length = 254, null = False, db_index = False, blank = False];
+}
