diff --git a/xos/synchronizer/Dockerfile.synchronizer b/xos/synchronizer/Dockerfile.synchronizer
new file mode 100644
index 0000000..2ce888a
--- /dev/null
+++ b/xos/synchronizer/Dockerfile.synchronizer
@@ -0,0 +1,13 @@
+FROM xosproject/xos-synchronizer-base
+
+ADD . /opt/xos/synchronizers/vtn
+
+ADD __init__.py /opt/xos/services/__init__.py
+ADD __init__.py /opt/xos/services/vtn/__init__.py
+ADD tmp.vtnnetport.py /opt/xos/services/vtn/vtnnetport.py
+
+ENTRYPOINT []
+
+WORKDIR "/opt/xos/synchronizers/vtn"
+
+CMD bash -c "cd /opt/xos/synchronizers/vtn; ./run-from-api.sh"
diff --git a/xos/synchronizer/Makefile b/xos/synchronizer/Makefile
new file mode 100644
index 0000000..a07b843
--- /dev/null
+++ b/xos/synchronizer/Makefile
@@ -0,0 +1,6 @@
+synchronizer:
+	cp ../vtnnetport.py tmp.vtnnetport.py
+	sudo docker build --rm -f Dockerfile.synchronizer -t xosproject/vtn-synchronizer .
+
+up:
+	docker-compose -p vtn up -d
diff --git a/xos/synchronizer/__init__.py b/xos/synchronizer/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/xos/synchronizer/__init__.py
diff --git a/xos/synchronizer/docker-compose.yml b/xos/synchronizer/docker-compose.yml
new file mode 100644
index 0000000..bc7500a
--- /dev/null
+++ b/xos/synchronizer/docker-compose.yml
@@ -0,0 +1,23 @@
+version: '2'
+
+networks:
+  xos:
+    external: true
+
+services:
+  synchronizer:
+    image: xosproject/vtn-synchronizer
+    networks:
+      - xos
+    #command: bash -c "sleep 86400"
+    volumes:
+        - /opt/cord_profile/key_import/vtn_rsa:/opt/xos/services/vtn/keys/vtn_rsa:ro
+        - /opt/cord_profile/node_key:/opt/cord_profile/node_key:ro
+        - /opt/cord/build/platform-install/credentials/xosadmin@opencord.org:/opt/xos/services/vtn/credentials/xosadmin@opencord.org
+    external_links: 
+        - rcordbs_xos_redis_1:redis
+    logging:
+      driver: "json-file"
+      options:
+        max-size: "1000k"
+        max-file: "5"
diff --git a/xos/synchronizer/run-from-api.sh b/xos/synchronizer/run-from-api.sh
new file mode 100755
index 0000000..4744fc4
--- /dev/null
+++ b/xos/synchronizer/run-from-api.sh
@@ -0,0 +1,2 @@
+export XOS_DIR=/opt/xos
+python vtn-synchronizer.py  -C $XOS_DIR/synchronizers/vtn/vtn_from_api_config
diff --git a/xos/synchronizer/steps/sync_onos_netcfg.py b/xos/synchronizer/steps/sync_onos_netcfg.py
index b6f427d..056c1be 100644
--- a/xos/synchronizer/steps/sync_onos_netcfg.py
+++ b/xos/synchronizer/steps/sync_onos_netcfg.py
@@ -27,7 +27,9 @@
             self.call()
 
     def get_node_tag(self, node, tagname):
-        tags = Tag.select_by_content_object(node).filter(name=tagname)
+        tags = Tag.objects.filter(content_type=model_accessor.get_content_type_id(node),
+                                  object_id=node.id,
+                                  name=tagname)
         return tags[0].value
 
     def get_tenants_who_want_config(self):
@@ -41,7 +43,7 @@
         return tenants
 
     def save_tenant_attribute(self, tenant, name, value):
-        tas = TenantAttribute.objects.filter(tenant=tenant, name=name)
+        tas = TenantAttribute.objects.filter(tenant_id=tenant.id, name=name)
         if tas:
             ta = tas[0]
             if ta.value != value:
@@ -145,10 +147,8 @@
 
         # Generate apps->org.onosproject.cordvtn->cordvtn->publicGateways
         # Pull the gateway information from vRouter
-        try:
-            from services.vrouter.models import VRouterService
-
-            vrouters = VRouterService.get_service_objects().all()
+        if model_accessor.has_model_class("VRouterService"):
+            vrouters = VRouterService.objects.all()
             if vrouters:
                 for gateway in vrouters[0].get_gateways():
                     gatewayIp = gateway['gateway_ip'].split('/',1)[0]
@@ -158,13 +158,13 @@
                         "gatewayMac": gatewayMac
                     }
                     data["apps"]["org.opencord.vtn"]["cordvtn"]["publicGateways"].append(gateway_dict)
-        except:
+        else:
             logger.info("No VRouter service present, not adding publicGateways to config")
 
         return json.dumps(data, indent=4, sort_keys=True)
 
     def call(self, **args):
-        vtn_service = VTNService.get_service_objects().all()
+        vtn_service = VTNService.objects.all()
         if not vtn_service:
             raise Exception("No VTN Service")
 
diff --git a/xos/synchronizer/steps/sync_port_addresses.py b/xos/synchronizer/steps/sync_port_addresses.py
index 57de70b..029755b 100644
--- a/xos/synchronizer/steps/sync_port_addresses.py
+++ b/xos/synchronizer/steps/sync_port_addresses.py
@@ -10,6 +10,8 @@
 
 logger = Logger(level=logging.INFO)
 
+# TODO: This file seems obsolete -- evaluate for deletion.
+
 # XXX should save and load this
 glo_saved_vtn_maps = []
 
diff --git a/xos/synchronizer/steps/sync_vtn_service.py b/xos/synchronizer/steps/sync_vtn_service.py
index 44e29d7..6db26f8 100644
--- a/xos/synchronizer/steps/sync_vtn_service.py
+++ b/xos/synchronizer/steps/sync_vtn_service.py
@@ -212,7 +212,7 @@
                     logger.error("Received error from vtn service (%d)" % r.status_code)
 
     def call(self, **args):
-        vtn_service = VTNService.get_service_objects().all()
+        vtn_service = VTNService.objects.all()
         if not vtn_service:
             raise Exception("No VTN Service")
 
diff --git a/xos/synchronizer/vtn_from_api_config b/xos/synchronizer/vtn_from_api_config
new file mode 100644
index 0000000..ed8289c
--- /dev/null
+++ b/xos/synchronizer/vtn_from_api_config
@@ -0,0 +1,20 @@
+# Sets options for the synchronizer
+[observer]
+name=vtn
+dependency_graph=/opt/xos/synchronizers/vtn/model-deps
+steps_dir=/opt/xos/synchronizers/vtn/steps
+sys_dir=/opt/xos/synchronizers/vtn/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/vtn/credentials/xosadmin@opencord.org
+
+[networking]
+use_vtn=True
