diff --git a/xos/api/tenant/cord/subscriber.py b/xos/api/tenant/cord/subscriber.py
index c26fb20..036e4cc 100644
--- a/xos/api/tenant/cord/subscriber.py
+++ b/xos/api/tenant/cord/subscriber.py
@@ -359,7 +359,7 @@
         return Response({identity: DeviceIdentitySerializer(device.identity).data[identity]})
 
     def account_num_detail(self, pk=None, account_num=None):
-        object_list = CordSubscriberNew.get_tenant_objects().all()
+        object_list = CordSubscriberNew.objects.all()
         object_list = [x for x in object_list if x.service_specific_id == account_num]
         if not object_list:
             return Response("Failed to find account_num %s" % account_num, status=status.HTTP_404_NOT_FOUND)
@@ -367,14 +367,14 @@
         return Response( object_list[0].id )
 
     def ssidlist(self, request):
-        object_list = CordSubscriberNew.get_tenant_objects().all()
+        object_list = CordSubscriberNew.objects.all()
 
         ssidmap = [ {"service_specific_id": x.service_specific_id, "subscriber_id": x.id} for x in object_list ]
 
         return Response({"ssidmap": ssidmap})
 
     def ssiddetail(self, pk=None, ssid=None):
-        object_list = CordSubscriberNew.get_tenant_objects().all()
+        object_list = CordSubscriberNew.objects.all()
 
         ssidmap = [ {"service_specific_id": x.service_specific_id, "subscriber_id": x.id} for x in object_list if str(x.service_specific_id)==str(ssid) ]
 
diff --git a/xos/api/tenant/cord/volt.py b/xos/api/tenant/cord/volt.py
index 50bd5a6..7da8e4f 100644
--- a/xos/api/tenant/cord/volt.py
+++ b/xos/api/tenant/cord/volt.py
@@ -12,7 +12,7 @@
 from api.xosapi_helpers import PlusModelSerializer, XOSViewSet, ReadOnlyField
 
 def get_default_volt_service():
-    volt_services = VOLTService.get_service_objects().all()
+    volt_services = VOLTService.objects.all()
     if volt_services:
         return volt_services[0].id
     return None
@@ -28,7 +28,7 @@
 
     @subscriber.setter
     def subscriber(self, value):
-        self.subscriber_root = value # CordSubscriberRoot.get_tenant_objects().get(id=value)
+        self.subscriber_root = value
 
     @property
     def related(self):
@@ -48,7 +48,7 @@
     service_specific_id = serializers.CharField(required=False)
     s_tag = serializers.CharField()
     c_tag = serializers.CharField()
-    subscriber = serializers.PrimaryKeyRelatedField(queryset=CordSubscriberRoot.get_tenant_objects().all(), required=False)
+    subscriber = serializers.PrimaryKeyRelatedField(queryset=CordSubscriberRoot.objects.all(), required=False)
     related = serializers.DictField(required=False)
 
     property_fields=["subscriber"]
@@ -65,7 +65,7 @@
     base_name = "volt"
     method_name = "volt"
     method_kind = "viewset"
-    queryset = VOLTTenantForAPI.get_tenant_objects().all() # select_related().all()
+    queryset = VOLTTenantForAPI.objects.all()
     serializer_class = VOLTTenantSerializer
 
     @classmethod
