diff --git a/xos/synchronizer/models/Makefile.service b/xos/synchronizer/models/Makefile.service
new file mode 100755
index 0000000..9fb96f4
--- /dev/null
+++ b/xos/synchronizer/models/Makefile.service
@@ -0,0 +1,18 @@
+# Replace the line below with the location of xosgen
+PREFIX=.
+XOSGEN=$(PREFIX)/tool/xosgen
+
+DJANGO_TARGET=$(PREFIX)/targets/service.xtarget
+XPROTOS_TMP := $(shell mktemp)
+
+xprotos = $(wildcard *.xproto)
+
+all: models.py
+
+models.py: $(xprotos)
+	$(XOSGEN) --attic attic --target $(DJANGO_TARGET) --output $@ $<
+
+.PHONY: all
+	
+clean:
+	rm -f models.py
diff --git a/xos/synchronizer/models/attic/header.py b/xos/synchronizer/models/attic/header.py
new file mode 100755
index 0000000..b7100ed
--- /dev/null
+++ b/xos/synchronizer/models/attic/header.py
@@ -0,0 +1,22 @@
+
+# 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 django.db import models
+from django.db.models import *
+from core.models import Service
+from core.models import XOSBase
+from core.models import Site
+
+
diff --git a/xos/synchronizer/models/attic/usernetworkinterface_model.py b/xos/synchronizer/models/attic/usernetworkinterface_model.py
new file mode 100755
index 0000000..121611e
--- /dev/null
+++ b/xos/synchronizer/models/attic/usernetworkinterface_model.py
@@ -0,0 +1,35 @@
+
+# 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.
+
+
+def __xos_save_base(self, *args, **kwargs):
+
+    if self.latlng:
+        try:
+            latlng_value = getattr(self, 'latlng').strip()
+            if (latlng_value.startswith('[') and latlng_value.endswith(']') and latlng_value.index(',') > 0):
+                lat = latlng_value[1: latlng_value.index(',')].strip()
+                lng = latlng_value[latlng_value.index(',') + 1: len(latlng_value) - 1].strip()
+
+                # If lat and lng are not floats, the code below should result in an error.
+                lat_validation = float(lat)
+                lng_validation = float(lng)
+            else:
+                raise ValueError("The lat/lng value is not formatted correctly.")
+        except:
+            raise ValueError("The lat/lng value is not formatted correctly.")
+
+    return False # let xosbase know to save the model
+
diff --git a/xos/synchronizer/models/vnaas.xproto b/xos/synchronizer/models/vnaas.xproto
new file mode 100755
index 0000000..00d73b3
--- /dev/null
+++ b/xos/synchronizer/models/vnaas.xproto
@@ -0,0 +1,60 @@
+option name = "vnaas";
+option app_label = "vnaas";
+
+message EnterpriseLocation (XOSBase){
+     option verbose_name = "Enterprise Location";
+
+     required string name = 1 [help_text = "Name for this Enterprise Location", db_index = False, max_length = 256, null = False, blank = False];
+     required string cord_site_ip = 2 [help_text = "IP of the local site", db_index = False, max_length = 64, null = False, blank = False];
+     required int32 cord_site_port = 3 [help_text = "Port of the local site", db_index = False, null = False, blank = False];
+     required string cord_site_username = 4 [help_text = "Username of the local site", db_index = False, max_length = 64, null = False, blank = False];
+     required string cord_site_password  = 5 [help_text = "Password of the local site", db_index = False, max_length = 64, null = False, blank = False];
+     required string cord_site_type = 6 [default = "xos", choices = "(('onos', 'ONOS'), ('xos', 'XOS'))", db_index = False, max_length = 64, null = False, blank = False];
+
+}
+
+message OnosModel (XOSBase){
+     option verbose_name = "Open Network Operating System";
+
+     required string name = 1 [db_index = False, max_length = 256, null = False, blank = False];
+     required string onos_ip = 2 [help_text = "IP of the transport manager", db_index = False, max_length = 64, null = False, blank = False];
+     required int32 onos_port = 3 [help_text = "Port of the transport manager", db_index = False, null = False, blank = False];
+     required string onos_username = 4 [help_text = "Username of the transport manager", db_index = False, max_length = 64, null = False, blank = False];
+     required string onos_password  = 5 [help_text = "Password of the transport manager", db_index = False, max_length = 64, null = False, blank = False];
+     required string onos_type = 6 [default = "local", choices = "(('local', 'Local'), ('global', 'Global'))", db_index = False, max_length = 64, null = False, blank = False];
+
+}
+
+message UserNetworkInterface (XOSBase){
+     option verbose_name = "User Network Interface";
+
+     required string tenant = 1 [help_text = "Tenant name", db_index = False, max_length = 256, null = False, blank = False];
+     required string cpe_id = 2 [db_index = False, max_length = 1024, null = False, blank = False];
+     required string latlng = 3 [help_text = "Location, i.e. [37.773972, -122.431297]", db_index = False, max_length = 256, null = False, blank = False];
+     optional string name = 4 [help_text = "Name for this User Network Interface", db_index = False, max_length = 256, null = False, blank = False];
+}
+
+
+message BandwidthProfile (XOSBase){
+     option verbose_name = "Bandwidth Profile";
+
+     required string name = 1 [help_text = "Name for this Bandwidth Profile", db_index = False, max_length = 256, null = False, blank = False];
+     required int32 cbs = 2 [help_text = "Committed burst size", db_index = False, null = False, blank = False];
+     required int32 ebs = 3 [help_text = "Expected burst size", db_index = False, null = False, blank = False];
+     required int32 cir = 4 [help_text = "Committed information rate", db_index = False, null = False, blank = False];
+     required int32 eir = 5 [help_text = "Expected information rate", db_index = False, null = False, blank = False];
+
+}
+
+message ELine (XOSBase){
+     option verbose_name = "Ethernet Virtual Private Line";
+     option plural = "Elines";
+
+     required string name = 1 [help_text = "Name for this ELine", db_index = False, max_length = 256, null = False, blank = False];
+     required manytoone connect_point_1->UserNetworkInterface:incoming_eline = 2 [help_text = "Cpe_id of the first connection point", db_index = False, max_length = 256, null = False, blank = False];
+     required manytoone connect_point_2->UserNetworkInterface:outgoing_eline = 3 [help_text = "Cpe_id of the second connection point", db_index = False, max_length = 64, null = False, blank = False];
+     required string vlanids = 4 [help_text = "Comma separated list of vlanIds", db_index = False, null = False, blank = False];
+     required string cord_site_name = 5 [help_text = "Name of the CORD site", db_index = False, max_length = 64, null = False, blank = False];
+     required manytoone bwp->BandwidthProfile:elines  = 6 [help_text = "Bandwidth profile name", db_index = False, max_length = 256, null = False, blank = False];
+
+}
diff --git a/xos/synchronizer/steps/test_sync_vnaaseline.py b/xos/synchronizer/steps/test_sync_vnaaseline.py
index 4aa34af..3fcd380 100644
--- a/xos/synchronizer/steps/test_sync_vnaaseline.py
+++ b/xos/synchronizer/steps/test_sync_vnaaseline.py
@@ -54,6 +54,18 @@
 ELINE_VLANIDS = "100"
 ELINE_NAME = "testeline"
 
+# While transitioning from static to dynamic load, the path to find neighboring xproto files has changed. So check
+# both possible locations...
+def get_models_fn(service_name, xproto_name):
+    name = os.path.join(service_name, "xos", xproto_name)
+    if os.path.exists(os.path.join(services_dir, name)):
+        return name
+    else:
+        name = os.path.join(service_name, "xos", "synchronizer", "models", xproto_name)
+        if os.path.exists(os.path.join(services_dir, name)):
+            return name
+    raise Exception("Unable to find service=%s xproto=%s" % (service_name, xproto_name))
+
 class TestSyncvNaaSEline(unittest.TestCase):
     def setUp(self):
         global SyncvNaaSEline, MockObjectList
@@ -68,7 +80,7 @@
         Config.init(config, 'synchronizer-config-schema.yaml')
 
         from synchronizers.new_base.mock_modelaccessor_build import build_mock_modelaccessor
-        build_mock_modelaccessor(xos_dir, services_dir, ["vnaas/xos/vnaas.xproto"])
+        build_mock_modelaccessor(xos_dir, services_dir, [get_models_fn("vnaas", "vnaas.xproto")])
 
         import synchronizers.new_base.modelaccessor
         import synchronizers.new_base.model_policies.model_policy_tenantwithcontainer
diff --git a/xos/synchronizer/vnaas_config.yaml b/xos/synchronizer/vnaas_config.yaml
index 0c8fb1e..f2bae31 100755
--- a/xos/synchronizer/vnaas_config.yaml
+++ b/xos/synchronizer/vnaas_config.yaml
@@ -12,10 +12,17 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-name: vnaas-synchronizer
+name: vnaas
 accessor:
   username: xosadmin@opencord.org
   password: "@/opt/xos/services/vnaas/credentials/xosadmin@opencord.org"
+required_models:
+  - ELine
+  - BandwidthProfile
+  - UserNetworkInterface
+  - OnosModel
+  - EnterpriseLocation
 dependency_graph: "/opt/xos/synchronizers/vnaas/model-deps"
 steps_dir: "/opt/xos/synchronizers/vnaas/steps"
 sys_dir: "/opt/xos/synchronizers/vnaas/sys"
+models_dir: "/opt/xos/synchronizers/vnaas/models"
