diff --git a/xos/attic/cordsubscriberroot_model.py b/xos/attic/cordsubscriberroot_model.py
index e4ee81f..8130ee6 100644
--- a/xos/attic/cordsubscriberroot_model.py
+++ b/xos/attic/cordsubscriberroot_model.py
@@ -14,6 +14,14 @@
                    "status")
 
 def __init__(self, *args, **kwargs):
+    # TODO: Should probably make an RCORDService, rather than filtering by name
+    rcord_services = Service.objects.filter(name="rcord")
+    if not rcord_services:
+        # this isn't going to end well...
+        raise Exception("There is no rcord service to use as the default service for CordSubscriberRoot")
+
+    self._meta.get_field("owner").default = rcord_services[0].id
+
     super(CordSubscriberRoot, self).__init__(*args, **kwargs)
 
 def find_device(self, mac):
@@ -87,26 +95,32 @@
     pass
 
 def invalidate_related_objects(self):
-    # Dirty all vSGs related to this subscriber, so the vSG synchronizer
-    # will run.
-
-    # TODO: This should be reimplemented to use a watcher instead.
-
-    # NOTE: "vOLT" and "vCPE" are hardcoded below. They had better agree
-    # with the kinds defined in the vOLT and vCPE models.
-
-    for tenant in self.subscribed_tenants.all():
-        if tenant.kind == "vOLT":
-            for inner_tenant in tenant.subscribed_tenants.all():
-                if inner_tenant.kind == "vCPE":
-                    inner_tenant.save()
-
-def save(self, *args, **kwargs):
-    self.validate_unique_service_specific_id(none_okay=True)
-    if (not hasattr(self, 'caller') or not self.caller.is_admin):
-        if (self.has_field_changed("service_specific_id")):
-            raise XOSPermissionDenied("You do not have permission to change service_specific_id")
-    super(CordSubscriberRoot, self).save(*args, **kwargs)
-
+    # Dirty all vSGs related to this subscriber, so the vSG synchronizer
+    # will run.
+
+    # TODO: This should be reimplemented to use a watcher instead.
+
+    # TODO: Hardcoded service dependency
+
+    from services.volt.models import VOLTTenant
+    from services.vsg.models import VSGTenant
+
+    for link in self.subscribed_links.all():
+        # cast from base class to derived class
+        volts = VOLTTenant.objects.filter(serviceinstance_ptr = link.provider_service_instance)
+        for volt in volts:
+            for inner_link in volt.subscribed_links.all():
+                # cast from base class to derived class
+                vsgs = VSGTenant.objects.filter(serviceinstance_ptr = inner_link.provider_service_instance)
+                for vsg in vsgs:
+                    vsg.save()
+
+def save(self, *args, **kwargs):
+    self.validate_unique_service_specific_id(none_okay=True)
+    if (not hasattr(self, 'caller') or not self.caller.is_admin):
+        if (self.has_field_changed("service_specific_id")):
+            raise XOSPermissionDenied("You do not have permission to change service_specific_id")
+    super(CordSubscriberRoot, self).save(*args, **kwargs)
+
     self.invalidate_related_objects()
 
diff --git a/xos/attic/header.py b/xos/attic/header.py
index 4a13893..d630d68 100644
--- a/xos/attic/header.py
+++ b/xos/attic/header.py
@@ -1,6 +1,6 @@
 from django.db import models
 from django.db.models import *
-from core.models import Service, XOSBase, Slice, Instance, Tenant, TenantWithContainer, Node, Image, User, Flavor, TenantRoot, NetworkParameter, NetworkParameterType, Port, AddressPool, User
+from core.models import Service, ServiceInstance, XOSBase, Slice, Instance, Node, Image, User, Flavor, NetworkParameter, NetworkParameterType, Port, AddressPool, User
 from core.models.xosbase import StrippedCharField
 import os
 from django.db import models, transaction
