diff --git a/xos/tosca/custom_types/xos.m4 b/xos/tosca/custom_types/xos.m4
index 471bfc8..9ba9973 100644
--- a/xos/tosca/custom_types/xos.m4
+++ b/xos/tosca/custom_types/xos.m4
@@ -27,6 +27,15 @@
                 required: false
             icon_url:
                 type: string
+                required: false
+            enabled:
+                type: boolean
+                default: true
+            published:
+                type: boolean
+                default: true
+            public_key:
+                type: string
                 required: false)
 
 # end m4 macros
diff --git a/xos/tosca/resources/service.py b/xos/tosca/resources/service.py
index 6b84d0b..4b32b8a 100644
--- a/xos/tosca/resources/service.py
+++ b/xos/tosca/resources/service.py
@@ -4,6 +4,7 @@
 import tempfile
 sys.path.append("/opt/tosca")
 from translator.toscalib.tosca_template import ToscaTemplate
+import pdb
 
 from core.models import Service,User,CoarseTenant
 
@@ -12,7 +13,7 @@
 class XOSService(XOSResource):
     provides = "tosca.nodes.Service"
     xos_model = Service
-    copyin_props = ["view_url", "kind"]
+    copyin_props = ["view_url", "kind", "enabled", "published", "public_key"]
 
     def postprocess(self, obj):
         for provider_service_name in self.get_requirements("tosca.relationships.TenantOfService"):
diff --git a/xos/tosca/resources/vcpeservice.py b/xos/tosca/resources/vcpeservice.py
index a2247c6..e163520 100644
--- a/xos/tosca/resources/vcpeservice.py
+++ b/xos/tosca/resources/vcpeservice.py
@@ -12,5 +12,5 @@
 class XOSVcpeService(XOSService):
     provides = "tosca.nodes.VCPEService"
     xos_model = VCPEService
-    copyin_props = ["view_url", "icon_url", "backend_network_label"]
+    copyin_props = ["view_url", "icon_url", "backend_network_label", "enabled", "published", "public_key"]
 
diff --git a/xos/tosca/resources/xosresource.py b/xos/tosca/resources/xosresource.py
index 8507172..159156b 100644
--- a/xos/tosca/resources/xosresource.py
+++ b/xos/tosca/resources/xosresource.py
@@ -1,4 +1,6 @@
+import os
 import pdb
+import json
 
 class XOSResource(object):
     xos_base_class = "XOSResource"
@@ -52,11 +54,8 @@
         else:
             return {}
 
-    def get_property(self, name, default=None):
-        v = self.nodetemplate.get_property_value(name)
-        if (v==None):
-            return default
-        return v
+    def get_property(self, name):
+        return self.nodetemplate.get_property_value(name)
 
     def get_xos_object(self, cls, throw_exception=True, **kwargs):
         objs = cls.objects.filter(**kwargs)
@@ -86,6 +85,37 @@
     def postprocess(self, obj):
         pass
 
+    def intrinsic_get_artifact(self, obj=None, name=None, method=None):
+        if obj!="SELF":
+            raise Exception("only SELF is supported for get_artifact first arg")
+        if method!="LOCAL_FILE":
+            raise Exception("only LOCAL_FILE is supported for get_artifact third arg")
+
+        for (k,v) in self.nodetemplate.entity_tpl.get("artifacts", {}).items():
+            if k == name:
+                if not os.path.exists(v):
+                    raise Exception("Artifact local file %s for artifact %s does not exist" % (v, k))
+                return open(v).read()
+
+        raise Exception("artifact %s not found" % name)
+
+    def try_intrinsic_function(self, v):
+        try:
+            jsv = v.replace("'", '"')
+            jsv = json.loads(jsv)
+        except:
+            #import traceback
+            #traceback.print_exc()
+            return v
+
+        if type(jsv)!=dict:
+            return v
+
+        if "get_artifact" in jsv:
+            return self.intrinsic_get_artifact(*jsv["get_artifact"])
+
+        return v
+
     def get_xos_args(self):
         args = {}
 
@@ -95,6 +125,9 @@
         # copy simple string properties from the template into the arguments
         for prop in self.copyin_props:
             v = self.get_property(prop)
+
+            v = self.try_intrinsic_function(v)
+
             if v:
                 args[prop] = v
 
