diff --git a/xos/tosca/resources/vmmetenant.py b/xos/tosca/resources/vmmetenant.py
index 4ced038..e1e9451 100644
--- a/xos/tosca/resources/vmmetenant.py
+++ b/xos/tosca/resources/vmmetenant.py
@@ -1,4 +1,3 @@
-
 # Copyright 2017-present Open Networking Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,22 +12,22 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-
-from services.vmme.models import VMMETenant, VMMEService
 from xosresource import XOSResource
+from core.models import Tenant, Service
+from services.vmme.models import VMMETenant
 
 class XOSVMMETenant(XOSResource):
     provides = "tosca.nodes.VMMETenant"
     xos_model = VMMETenant
-    copyin_props = ["tenant_message", "image_name"]  
-    name_field = None  
+    name_field = None 
+    copyin_props = () 
 
     def get_xos_args(self, throw_exception=True):
         args = super(XOSVMMETenant, self).get_xos_args()
 
-        provider_name = self.get_requirement("tosca.relationships.MemberOfService", throw_exception=throw_exception)
+        provider_name = self.get_requirement("tosca.relationships.TenantOfService", throw_exception=throw_exception)
         if provider_name:
-            args["provider_service"] = self.get_xos_object(VMMEService, throw_exception=throw_exception, name=provider_name)
+            args["provider_service"] = self.get_xos_object(Service, throw_exception=throw_exception, name=provider_name)
 
         return args
 
@@ -44,3 +43,4 @@
 
     def can_delete(self, obj):
         return super(XOSVMMETenant, self).can_delete(obj)
+
