diff --git a/xos/tosca/resources/vsmservice.py b/xos/tosca/resources/vsmservice.py
new file mode 100644
index 0000000..b702029
--- /dev/null
+++ b/xos/tosca/resources/vsmservice.py
@@ -0,0 +1,7 @@
+from services.vsm.models import VSMService
+from service import XOSService
+
+class XOSVSMService(XOSService):
+	provides = "tosca.nodes.VSMService"
+	xos_model = VSMService
+	copyin_props = ["view_url", "icon_url", "enabled", "published", "public_key", "private_key_fn", "versionNumber"]
\ No newline at end of file
diff --git a/xos/tosca/resources/vsmtenant.py b/xos/tosca/resources/vsmtenant.py
new file mode 100644
index 0000000..56b2472
--- /dev/null
+++ b/xos/tosca/resources/vsmtenant.py
@@ -0,0 +1,30 @@
+from services.vsm.models import VSMTenant, VSMService
+from xosresource import XOSResource
+
+class XOSVSMTenant(XOSResource):
+    provides = "tosca.nodes.VSMTenant"
+    xos_model = VSMTenant
+    copyin_props = ["tenant_message", "image_name"]  
+    name_field = None  
+
+    def get_xos_args(self, throw_exception=True):
+        args = super(XOSVSMTenant, self).get_xos_args()
+
+        provider_name = self.get_requirement("tosca.relationships.MemberOfService", throw_exception=throw_exception)
+        if provider_name:
+            args["provider_service"] = self.get_xos_object(VSMService, throw_exception=throw_exception, name=provider_name)
+
+        return args
+
+    def get_existing_objs(self):
+        args = self.get_xos_args(throw_exception=False)
+        provider_service = args.get("provider", None)
+        if provider_service:
+            return [ self.get_xos_object(provider_service=provider_service) ]
+        return []
+
+    def postprocess(self, obj):
+        pass
+
+    def can_delete(self, obj):
+        return super(XOSVSMTenant, self).can_delete(obj)
