diff --git a/xos/synchronizer/models/models.py b/xos/synchronizer/models/models.py
new file mode 100644
index 0000000..4e7c71a
--- /dev/null
+++ b/xos/synchronizer/models/models.py
@@ -0,0 +1,31 @@
+
+# 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 ONOSApp(ONOSApp_decl):
+    class Meta:
+        proxy = True
+
+    def __init__(self, *args, **kwargs):
+        onos_services = ONOSService.objects.all()
+        if onos_services:
+            self._meta.get_field("owner").default = onos_services[0].id
+        super(ONOSApp, self).__init__(*args, **kwargs)
+
+class ONOSService(ONOSService_decl):
+    class Meta:
+        proxy = True
diff --git a/xos/synchronizer/models/onos.xproto b/xos/synchronizer/models/onos.xproto
new file mode 100644
index 0000000..bc8a590
--- /dev/null
+++ b/xos/synchronizer/models/onos.xproto
@@ -0,0 +1,22 @@
+option kind="onos";
+option app_label = "onos";
+option name="onos";
+option legacy="True";
+
+message ONOSApp (ServiceInstance){
+    option verbose_name="ONOS Application";
+
+    optional string install_dependencies = 1 [db_index = False, null = True, blank = True];
+    optional string dependencies = 2 [db_index = False, null = True, blank = True];
+}
+
+message ONOSService (Service){
+    option verbose_name="ONOS Service";
+
+    optional string rest_hostname = 1 [db_index = False, max_length = 255, null = True, content_type = "stripped", blank = True];
+    required int32 rest_port = 2 [default = 8181, null = False, db_index = False, blank = False];
+    required bool no_container = 3 [default = False, null = False, db_index = False, blank = True];
+    optional string node_key = 4 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+    optional string rest_username = 5 [db_index = False, max_length = 255, null = True, content_type = "stripped", blank = True, default="karaf"];
+    optional string rest_password = 6 [db_index = False, max_length = 255, null = True, content_type = "stripped", blank = True, default="karaf"];
+}
