diff --git a/xos/synchronizers/new_base/syncstep.py b/xos/synchronizers/new_base/syncstep.py
index e8b18e8..8b1185c 100644
--- a/xos/synchronizers/new_base/syncstep.py
+++ b/xos/synchronizers/new_base/syncstep.py
@@ -3,6 +3,7 @@
 from xos.config import Config
 from xos.logger import Logger, logging
 from synchronizers.new_base.modelaccessor import *
+from synchronizers.base.ansible_helper import run_template
 #from synchronizers.new_base.steps import *
 #from synchronizers.new_base.ansible_helper import *
 #from generate.dependency_walker import *
diff --git a/xos/xos_client/xosapi/convenience/vroutertenant.py b/xos/xos_client/xosapi/convenience/vroutertenant.py
index b891588..a4cd825 100644
--- a/xos/xos_client/xosapi/convenience/vroutertenant.py
+++ b/xos/xos_client/xosapi/convenience/vroutertenant.py
@@ -29,5 +29,14 @@
                 return int(parts[1].strip())
         return None
 
+    # Use for tenant_for_instance_id
+
+    def get_attribute(self, name, default=None):
+        if self.service_specific_attribute:
+            attributes = json.loads(self.service_specific_attribute)
+        else:
+            attributes = {}
+        return attributes.get(name, default)
+
 
 register_convenience_wrapper("VRouterTenant", ORMWrapperVRouterTenant)
diff --git a/xos/xos_client/xosapi/orm.py b/xos/xos_client/xosapi/orm.py
index d8fc84b..53d214e 100644
--- a/xos/xos_client/xosapi/orm.py
+++ b/xos/xos_client/xosapi/orm.py
@@ -222,6 +222,9 @@
         else:
             return None
 
+    def exists(self):
+        return len(self)>0
+
 class ORMLocalObjectManager(object):
     """ Manages a local list of objects """
 
@@ -247,6 +250,16 @@
         models = self.resolve_queryset()
         return [make_ORMWrapper(x,self._stub) for x in models]
 
+    def exists(self):
+        return len(self._idList)>0
+
+    def first(self):
+        if self._idList:
+            model = make_ORMWrapper(self._stub.invoke("Get%s" % self._modelName, self._stub.make_ID(id=self._idList[0])), self._stub)
+            return model
+        else:
+            return None
+
 class ORMObjectManager(object):
     """ Manages a remote list of objects """
 
