diff --git a/xos/synchronizer/models/models.py b/xos/synchronizer/models/models.py
new file mode 100644
index 0000000..108de2f
--- /dev/null
+++ b/xos/synchronizer/models/models.py
@@ -0,0 +1,41 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from xos.exceptions import *
+from models_decl import *
+
+class VSGServiceInstance(VSGServiceInstance_decl):
+    class Meta:
+        proxy = True
+
+    def __init__(self, *args, **kwargs):
+        super(VSGServiceInstance, self).__init__(*args, **kwargs)
+
+    def save(self, *args, **kwargs):
+        if not self.creator:
+            if not getattr(self, "caller", None):
+                # caller must be set when creating a vCPE since it creates a slice
+                raise XOSProgrammingError("VSGServiceInstance's self.caller was not set")
+            self.creator = self.caller
+            if not self.creator:
+                raise XOSProgrammingError("VSGServiceInstance's self.creator was not set")
+
+        super(VSGServiceInstance, self).save(*args, **kwargs)
+
+class VSGService(VSGService_decl):
+    class Meta:
+        proxy = True
+
+    pass
diff --git a/xos/synchronizer/models/vsg.xproto b/xos/synchronizer/models/vsg.xproto
new file mode 100644
index 0000000..6202ef4
--- /dev/null
+++ b/xos/synchronizer/models/vsg.xproto
@@ -0,0 +1,21 @@
+option name = "vsg";
+option app_label = "vsg";
+option kind = "vCPE";
+option legacy="True";
+
+message VSGService (Service){
+    option verbose_name = "vSG Service";
+
+    optional string url_filter_kind = 1 [choices = "((None, 'None'), ('safebrowsing', 'Safe Browsing'), ('answerx', 'AnswerX'))", max_length = 30, content_type = "stripped", blank = True, null = True, db_index = False];
+    required string dns_servers = 2 [default = "8.8.8.8", max_length = 255, content_type = "stripped", blank = False, null = False, db_index = False];
+    optional string node_label = 3 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+    required string docker_image_name = 4 [default = "docker.io/xosproject/vsg", max_length = 255, content_type = "stripped", blank = False, null = False, db_index = False];
+    required bool docker_insecure_registry = 5 [default = False, null = False, db_index = False, blank = True];
+}
+
+
+message VSGServiceInstance (TenantWithContainer){
+    option verbose_name = "vSG Service Instance";
+    
+    optional string last_ansible_hash = 1 [db_index = False, max_length = 128, null = True, content_type = "stripped", blank = True];
+}
