diff --git a/xos/admin.py b/xos/admin.py
index f1fdddb..cffd99d 100644
--- a/xos/admin.py
+++ b/xos/admin.py
@@ -1,7 +1,9 @@
 # admin.py - MetroNetworkService Django Admin
 
 from core.admin import ReadOnlyAwareAdmin
+from core.admin import XOSBaseAdmin
 from django.contrib import admin
+from django import forms
 from services.metronetwork.models import *
 
 
@@ -15,5 +17,71 @@
         'fields': ['name', 'administrativeState', 'description'],
         'classes': ['suit-tab suit-tab-general']})]
 
+class NetworkDeviceAdminForm(forms.ModelForm):
+
+    password = forms.CharField(required=False, widget = forms.PasswordInput(render_value=True))
+
+    class Meta:
+        model = NetworkDevice
+        fields = '__all__'
+
+
+class NetworkDeviceAdmin(XOSBaseAdmin):
+
+    form = NetworkDeviceAdminForm
+    list_display = ('id', 'restCtrlUrl', 'administrativeState', 'username')
+    list_display_links = ('id', 'restCtrlUrl', 'administrativeState', 'username')
+
+    fields = ('id', 'restCtrlUrl', 'administrativeState', 'username', 'password')
+
+class NetworkPortAdmin(XOSBaseAdmin):
+    list_display = ('id', 'element')
+    list_display_links = ('id', 'element')
+
+    fields = ('id', 'element')
+    readonly_fields = ('id', 'element')
+
+class NetworkEdgePortAdmin(XOSBaseAdmin):
+    list_display = ('id', 'pid', 'element', 'bwpCfgCbs', 'bwpCfgEbs', 'bwpCfgCir', 'bwpCfgEir', 'name', 'location', 'latlng')
+    list_display_links = ('id', 'pid', 'element', 'bwpCfgCbs', 'bwpCfgEbs', 'bwpCfgCir', 'bwpCfgEir')
+
+    fields = ('id', 'pid', 'element', 'bwpCfgCbs', 'bwpCfgEbs', 'bwpCfgCir', 'bwpCfgEir', 'name', 'location', 'latlng')
+    readonly_fields = ('id', 'pid', 'element', 'bwpCfgCbs', 'bwpCfgEbs', 'bwpCfgCir', 'bwpCfgEir')
+
+
+class NetworkInterLinkAdmin(XOSBaseAdmin):
+    list_display = ('discovery', 'src', 'dest', 'state')
+    list_display_links = ('discovery', 'src', 'dest', 'state')
+
+    fields = ('discovery', 'src', 'dest', 'state')
+    readonly_fields = ('discovery', 'src', 'dest', 'state')
+
+class NetworkPointToPointConnectionAdmin(XOSBaseAdmin):
+    list_display = ('id', 'sid', 'type', 'src', 'dest', 'adminstate', 'operstate')
+    list_display_links = ('id', 'sid', 'type', 'src', 'dest', 'adminstate', 'operstate')
+
+    fields = ('id', 'sid', 'type', 'src', 'dest', 'adminstate', 'operstate')
+    readonly_fields = ('id', 'type', 'src', 'dest', 'operstate')
+
+class NetworkEdgePointToEdgePointConnectionAdmin(XOSBaseAdmin):
+    list_display = ('id', 'sid', 'type', 'uni1', 'uni2', 'adminstate', 'operstate')
+    list_display_links = ('id', 'sid', 'type', 'uni1', 'uni2', 'adminstate', 'operstate')
+
+    fields = ('id', 'sid', 'type', 'uni1', 'uni2', 'adminstate', 'operstate', 'backend_status')
+    readonly_fields = ('id', 'type', 'uni1', 'uni2', 'operstate', 'backend_status')
+
+class NetworkMultipointConnectionAdmin(XOSBaseAdmin):
+    list_display = ('type', 'state')
+    list_display_links = ('type', 'state')
+
+    fields = ('type', 'eps', 'state')
+    readonly_fields = ('type', 'eps', 'state')
 
 admin.site.register(MetroNetworkService, MetroServiceAdmin)
+admin.site.register(NetworkDevice, NetworkDeviceAdmin)
+admin.site.register(NetworkPort, NetworkPortAdmin)
+admin.site.register(NetworkEdgePort, NetworkEdgePortAdmin)
+admin.site.register(NetworkInterLink, NetworkInterLinkAdmin)
+admin.site.register(NetworkPointToPointConnection, NetworkPointToPointConnectionAdmin)
+admin.site.register(NetworkEdgeToEdgePointConnection, NetworkEdgePointToEdgePointConnectionAdmin)
+admin.site.register(NetworkMultipointConnection, NetworkMultipointConnectionAdmin)
diff --git a/xos/api/service/metronetworkservice.py b/xos/api/service/metronetworkservice.py
index 0a80034..a7945fc 100644
--- a/xos/api/service/metronetworkservice.py
+++ b/xos/api/service/metronetworkservice.py
@@ -1,8 +1,7 @@
 from rest_framework.response import Response
 from rest_framework import serializers, filters, status
 from api.xosapi_helpers import PlusModelSerializer, XOSViewSet, ReadOnlyField
-from services.metronetwork.models import MetroNetworkService
-from core.models.netw import NetworkEdgePort, NetworkEdgeToEdgePointConnection
+from services.metronetwork.models import MetroNetworkService, NetworkEdgePort, NetworkEdgeToEdgePointConnection
 from django.core.exceptions import ObjectDoesNotExist
 from django.core import serializers as jsonserializer
 
diff --git a/xos/models.py b/xos/models.py
index 2c68fab..adaad3d 100644
--- a/xos/models.py
+++ b/xos/models.py
@@ -2,6 +2,7 @@
 
 from django.db import models
 from core.models import Service
+from core.models import PlCoreBase
 
 METRONETWORK_KIND = "metronetwork"
 SERVICE_NAME = 'metronetwork'
@@ -53,4 +54,257 @@
         return self.operationalState
 
     def getRestUrl(self):
-        return self.restUrl
\ No newline at end of file
+        return self.restUrl
+
+
+class NetworkDevice(PlCoreBase):
+
+    class Meta:
+        app_label = SERVICE_NAME
+
+    ADMINISTRATIVE_STATE = (
+        ('enabled', 'Enabled'),
+        ('disabled', 'Disabled'),
+        ('syncrequested', 'SyncRequested'),
+        ('syncinprogress', 'SyncInProgress')
+    )
+
+    AUTH_TYPE = (
+        ('basic', 'Basic'),
+        ('key', 'Key'),
+        ('oauth', 'OAuth')
+    )
+
+    # Leaving out the attributes below for now - not clear we will need them
+    # type = models.CharField(choices=TYPE, verbose_name="Type", max_length=256, editable=False)
+    # manufacturer = models.CharField(unique=False, verbose_name="Manufacturer", max_length=256, editable=False)
+    # serialNumber = models.CharField(unique=True, verbose_name="Serial Number", max_length=256, editable=False)
+    # chassisId = models.CharField(unique=False, verbose_name="Chassis ID", max_length=256, editable=False)
+
+    restCtrlUrl = models.CharField(unique=True,
+                               verbose_name="RestCtrlURL",
+                               max_length=256,
+                               editable=True)
+    authType = models.CharField(choices=AUTH_TYPE, verbose_name='Auth Type', max_length=16, editable=True)
+    username = models.CharField(verbose_name='Username', max_length=32, editable=True, blank=True)
+    password = models.CharField(max_length=32, verbose_name='Password', editable=True, blank=True)
+    administrativeState = models.CharField(choices=ADMINISTRATIVE_STATE,
+                                           default='disabled',
+                                           verbose_name="AdministrativeState",
+                                           max_length=16,
+                                           editable=True)
+    id = models.CharField(unique=True,
+                          verbose_name="Element Id",
+                          primary_key=True,
+                          max_length=256,
+                          editable=True)
+
+    def __init__(self, *args, **kwargs):
+        super(NetworkDevice, self).__init__(*args, **kwargs)
+
+class NetworkPort(PlCoreBase):
+
+    class Meta:
+        app_label = SERVICE_NAME
+
+    element = models.ForeignKey(NetworkDevice, on_delete=models.CASCADE)
+    id = models.AutoField(verbose_name="id", primary_key=True, editable=False)
+    pid = models.CharField(unique=True, verbose_name="Port ID", max_length=256, editable=False)
+
+    def __init__(self, *args, **kwargs):
+        super(NetworkPort, self).__init__(*args, **kwargs)
+
+class NetworkEdgePort(PlCoreBase):
+
+    class Meta:
+        app_label = SERVICE_NAME
+
+    element = models.ForeignKey(NetworkDevice, on_delete=models.CASCADE)
+    id = models.AutoField(verbose_name="id", primary_key=True, editable=False)
+    pid = models.CharField(unique=True, verbose_name="Port ID", max_length=256, editable=False)
+    bwpCfgCbs = models.IntegerField(verbose_name="Committed Burst Size", editable=False, blank=True)
+    bwpCfgEbs = models.IntegerField(verbose_name="Excess Burst Size", editable=False, blank=True)
+    bwpCfgCir = models.IntegerField(verbose_name="Committed Information Rate", editable=False, blank=True)
+    bwpCfgEir = models.IntegerField(verbose_name="Excess Information Rate", editable=False, blank=True)
+    name = models.CharField(verbose_name="Name", max_length=256, editable=True, blank=True)
+    location = models.CharField(verbose_name="Location", max_length=256, editable=True, blank=True)
+    latlng = models.CharField(verbose_name="Latitude/Longitude", max_length=50, editable=True, blank=True)
+
+    def __init__(self, *args, **kwargs):
+        super(NetworkEdgePort, self).__init__(*args, **kwargs)
+
+    def save(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.")
+
+        super(NetworkEdgePort, self).save(*args, **kwargs)
+
+class NetworkPointToPointConnection(PlCoreBase):
+
+    class Meta:
+        app_label = SERVICE_NAME
+
+    TYPE = (
+        ('direct', 'Direct'),
+        ('indirect', 'Indirect'),
+        ('edge', 'Edge'),
+        ('tunnel', 'Tunnel'),
+        ('optical', 'Optical'),
+        ('virtual', 'Virtual'),
+    )
+
+    OPERATIONALSTATE = (
+        ('active', 'Active'),
+        ('inactive', 'Inactive')
+    )
+
+    ADMINISTRATIVESTATE = (
+        ('disabled', 'Disabled'),
+        ('activationrequested', 'ActivationRequested'),
+        ('enabled', 'Enabled'),
+        ('invalid', 'Invalid'),
+        ('deactivationrequested', 'DeactivationRequested')
+    )
+
+    id = models.AutoField(verbose_name="PointToPointConnectionId",
+                          primary_key=True,
+                          editable=False)
+
+
+    sid = models.CharField(unique=True, verbose_name="Service ID", max_length=256, editable=True)
+    type = models.CharField(choices=TYPE, verbose_name="Type", max_length=256, editable=False)
+    src = models.ForeignKey(NetworkPort,
+                            related_name='PointToPointSrc',
+                            verbose_name="Source",
+                            editable=False,
+                            on_delete=models.CASCADE)
+    dest = models.ForeignKey(NetworkPort,
+                             related_name='PointToPointDst',
+                             verbose_name="Destination",
+                             editable=False,
+                             on_delete=models.CASCADE)
+    operstate = models.CharField(choices=OPERATIONALSTATE, verbose_name="OperationalState", max_length=256, editable=False)
+    adminstate = models.CharField(choices=ADMINISTRATIVESTATE, verbose_name="AdministrativeState", max_length=256, editable=True)
+
+
+    def __init__(self, *args, **kwargs):
+        super(NetworkPointToPointConnection, self).__init__(*args, **kwargs)
+
+class NetworkEdgeToEdgePointConnection(PlCoreBase):
+
+    class Meta:
+        app_label = SERVICE_NAME
+
+    TYPE = (
+        ('direct', 'Direct'),
+        ('tunnel', 'Tunnel'),
+        ('optical', 'Optical'),
+        ('virtual', 'Virtual'),
+        ('Point_To_Point', 'Point To Point')
+    )
+
+    OPERATIONALSTATE = (
+        ('active', 'Active'),
+        ('inactive', 'Inactive')
+    )
+
+    ADMINISTRATIVESTATE = (
+        ('disabled', 'Disabled'),
+        ('activationrequested', 'ActivationRequested'),
+        ('enabled', 'Enabled'),
+        ('invalid', 'Invalid'),
+        ('deactivationrequested', 'DeactivationRequested')
+    )
+
+    id = models.AutoField(verbose_name="EdgePointToEdgePointConnectivityId",
+                          primary_key=True,
+                          editable=False)
+    sid = models.CharField(unique=True, verbose_name="Service ID", max_length=256, editable=True)
+    type = models.CharField(choices=TYPE, verbose_name="Type", max_length=256, editable=True)
+    uni1 = models.ForeignKey(NetworkEdgePort,
+                            related_name='EdgePointToEdgePointSrc',
+                            verbose_name="UNI 1",
+                            editable=True,
+                            on_delete=models.CASCADE)
+    uni2 = models.ForeignKey(NetworkEdgePort,
+                             related_name='EdgePointToEdgePointDst',
+                             verbose_name="UNI 2",
+                             editable=True,
+                             on_delete=models.CASCADE)
+    operstate = models.CharField(choices=OPERATIONALSTATE, verbose_name="OperationalState", max_length=256, editable=True)
+    adminstate = models.CharField(choices=ADMINISTRATIVESTATE, verbose_name="AdministrativeState", max_length=256, editable=True)
+
+
+    def __init__(self, *args, **kwargs):
+        super(NetworkEdgeToEdgePointConnection, self).__init__(*args, **kwargs)
+
+
+class NetworkMultipointConnection(PlCoreBase):
+
+    class Meta:
+        app_label = SERVICE_NAME
+
+    TYPE = (
+        ('vlan', 'VLAN'),
+        ('ip', 'IP'),
+        ('ethernet', 'Ethernet'),
+    )
+
+    STATE = (
+        ('active', 'Active'),
+        ('inactive', 'Inactive')
+    )
+
+    type = models.CharField(choices=TYPE, verbose_name="Type", max_length=256, editable=False)
+    eps = models.ManyToManyField(NetworkPort,
+                                 related_name='eps',
+                                 verbose_name="Endpoints",
+                                 editable=False)
+    state = models.CharField(choices=STATE, verbose_name="State", max_length=256, editable=False)
+
+    def __init__(self, *args, **kwargs):
+        super(NetworkMultipointConnection, self).__init__(*args, **kwargs)
+
+class NetworkInterLink(PlCoreBase):
+
+    class Meta:
+        app_label = SERVICE_NAME
+
+    DISCOVERY = (
+        ('auto', 'Automatic Discovery'),
+        ('manual', 'Manual Discovery'),
+    )
+
+    STATE = (
+        ('active', 'Active'),
+        ('inactive', 'Inactive')
+    )
+
+    src = models.ForeignKey(NetworkPort,
+                            related_name='InterLinkSrc',
+                            verbose_name="Source",
+                            editable=False,
+                            on_delete=models.CASCADE)
+    dest = models.ForeignKey(NetworkPort,
+                             related_name='InterLinkDst',
+                             verbose_name="Destination",
+                             editable=False,
+                             on_delete=models.CASCADE)
+    state = models.CharField(choices=STATE, verbose_name="State", max_length=256, editable=False)
+    discovery = models.CharField(choices=STATE, verbose_name="State", max_length=256, editable=False)
+
+    def __init__(self, *args, **kwargs):
+        super(NetworkInterLink, self).__init__(*args, **kwargs)
\ No newline at end of file
diff --git a/xos/synchronizer/providers/metronetworkprovider.py b/xos/synchronizer/providers/metronetworkprovider.py
index db651c3..d36a384 100644
--- a/xos/synchronizer/providers/metronetworkprovider.py
+++ b/xos/synchronizer/providers/metronetworkprovider.py
@@ -1,5 +1,5 @@
 from xos.logger import Logger, logging
-from core.models.netw import *
+from services.metronetwork.models import *
 
 logger = Logger(level=logging.INFO)
 
diff --git a/xos/synchronizer/providers/metronetworkrestprovider.py b/xos/synchronizer/providers/metronetworkrestprovider.py
index fa9ef71..1e00a90 100644
--- a/xos/synchronizer/providers/metronetworkrestprovider.py
+++ b/xos/synchronizer/providers/metronetworkrestprovider.py
@@ -1,5 +1,5 @@
 from xos.logger import Logger, logging
-from core.models.netw import *
+from services.metronetwork.models import *
 from synchronizers.metronetwork.providers.metronetworkprovider import MetroNetworkProvider
 
 import requests, json
diff --git a/xos/synchronizer/providers/metronetworktestprovider.py b/xos/synchronizer/providers/metronetworktestprovider.py
index b88427d..48ee215 100644
--- a/xos/synchronizer/providers/metronetworktestprovider.py
+++ b/xos/synchronizer/providers/metronetworktestprovider.py
@@ -1,7 +1,7 @@
 import random
 
 from xos.logger import Logger, logging
-from core.models.netw import *
+from services.metronetwork.models import *
 from synchronizers.metronetwork.providers.metronetworkprovider import MetroNetworkProvider
 
 logger = Logger(level=logging.INFO)
diff --git a/xos/synchronizer/steps/sync_metronetworkservice.py b/xos/synchronizer/steps/sync_metronetworkservice.py
index 3b5bf27..724bb9a 100644
--- a/xos/synchronizer/steps/sync_metronetworkservice.py
+++ b/xos/synchronizer/steps/sync_metronetworkservice.py
@@ -2,8 +2,7 @@
 import sys
 
 from synchronizers.base.syncstep import SyncStep
-from core.models.netw import *
-from services.metronetwork.models import MetroNetworkService
+from services.metronetwork.models import *
 from xos.logger import Logger, logging
 from synchronizers.metronetwork.providers.providerfactory import ProviderFactory
 
