diff --git a/xos/synchronizers/new_base/dependency_walker_new.py b/xos/synchronizers/new_base/dependency_walker_new.py
index b5ffff8..17b7a9a 100644
--- a/xos/synchronizers/new_base/dependency_walker_new.py
+++ b/xos/synchronizers/new_base/dependency_walker_new.py
@@ -20,7 +20,7 @@
 missing_links={}
 
 try:
-	dep_data = open(Config().dependency_graph).read()
+	dep_data = open(Config().observer_dependency_graph).read()
 except:
 	dep_data = open(XOS_DIR + '/model-deps').read()
 
diff --git a/xos/synchronizers/new_base/model_policy_loop.py b/xos/synchronizers/new_base/model_policy_loop.py
index eee49b1..61fb7c3 100644
--- a/xos/synchronizers/new_base/model_policy_loop.py
+++ b/xos/synchronizers/new_base/model_policy_loop.py
@@ -71,7 +71,7 @@
 
     # These are the models whose children get deleted when they are
     delete_policy_models = ['Slice','Instance','Network']
-    sender_name = instance.__class__.__name__
+    sender_name = getattr(instance, "model_name", instance.__class__.__name__)
     policy_name = 'model_policy_%s'%sender_name
     noargs = False
 
@@ -82,7 +82,7 @@
         walk_inv_deps(delete_if_inactive, instance)
 
     try:
-        policy_handler = model_policies.get(policy_name, None) # getattr(model_policies, policy_name, None)
+        policy_handler = model_policies.get(policy_name, None)
         logger.debug("MODEL POLICY: handler %s %s" % (policy_name, policy_handler))
         if policy_handler is not None:
             if (deleted):
diff --git a/xos/synchronizers/new_base/syncstep.py b/xos/synchronizers/new_base/syncstep.py
index cf5b40a..492351a 100644
--- a/xos/synchronizers/new_base/syncstep.py
+++ b/xos/synchronizers/new_base/syncstep.py
@@ -27,6 +27,8 @@
 def deepgetattr(obj, attr):
     return reduce(getattr, attr.split('.'), obj)
 
+def obj_class_name(obj):
+    return getattr(obj, "model_name", obj.__class__.__name__)
 
 class InnocuousException(Exception):
     pass
@@ -120,11 +122,11 @@
                 if (obj.backend_status != failed.backend_status):
                     obj.backend_status = failed.backend_status
                     obj.save(update_fields=['backend_status'])
-                raise FailedDependency("Failed dependency for %s:%s peer %s:%s failed  %s:%s" % (obj.__class__.__name__, str(getattr(obj,"pk","no_pk")), peer_object.__class__.__name__, str(getattr(peer_object,"pk","no_pk")), failed.__class__.__name__, str(getattr(failed,"pk","no_pk"))))
+                raise FailedDependency("Failed dependency for %s:%s peer %s:%s failed  %s:%s" % (obj_class_name(obj), str(getattr(obj,"pk","no_pk")), obj_class_name(peer_object), str(getattr(peer_object,"pk","no_pk")), obj_class_name(failed), str(getattr(failed,"pk","no_pk"))))
 
 
     def sync_record(self, o):
-        logger.debug("Sync_record called for %s %s" % (o.__class__.__name__, str(o)))
+        logger.debug("Sync_record called for %s %s" % (obj_class_name(o), str(o)))
 
 #        try:
 #            controller = o.get_controller()
diff --git a/xos/synchronizers/onboarding/xosbuilder.py b/xos/synchronizers/onboarding/xosbuilder.py
index 4b879aa..5ed4bc9 100644
--- a/xos/synchronizers/onboarding/xosbuilder.py
+++ b/xos/synchronizers/onboarding/xosbuilder.py
@@ -423,6 +423,9 @@
                                   "read_only": True},
                                  {"host_path": "/opt/cord/build/platform-install/credentials/xosadmin@opencord.org",
                                   "container_path": "/opt/xos/services/%s/credentials/xosadmin@opencord.org" % c.name,
+                                  "read_only": True},
+                                 {"host_path": "/opt/cord_profile/im_cert_chain.pem",
+                                  "container_path": "/usr/local/share/ca-certificates/local_certs.crt",
                                   "read_only": True}]
 
                     # keys inside onboarding sync are relative to /opt/xos/key_import
diff --git a/xos/xos/logger.py b/xos/xos/logger.py
index 271c808..1f57a4a 100644
--- a/xos/xos/logger.py
+++ b/xos/xos/logger.py
@@ -67,10 +67,7 @@
 
         # default is to locate loggername from the logfile if avail.
         if not logfile:
-            try:
-                logfile = Config().logfile
-            except:
-                logfile = "/var/log/xos.log"
+            logfile = getattr(Config(), "log_file", "/var/log/xos.log")
 
         # allow config-file override of console/logfile level
         level_str = getattr(Config(), "log_level", None)
diff --git a/xos/xos_client/xosapi/convenience/controller.py b/xos/xos_client/xosapi/convenience/controller.py
new file mode 100644
index 0000000..e7a864a
--- /dev/null
+++ b/xos/xos_client/xosapi/convenience/controller.py
@@ -0,0 +1,12 @@
+import json
+from xosapi.orm import ORMWrapper, register_convenience_wrapper
+
+class ORMWrapperController(ORMWrapper):
+    @property
+    def auth_url_v3(self):
+        if self.auth_url and self.auth_url[-1] == '/':
+            return '{}/v3/'.format('/'.join(self.auth_url.split('/')[:-2]))
+        else:
+            return '{}/v3/'.format('/'.join(self.auth_url.split('/')[:-1]))
+
+register_convenience_wrapper("Controller", ORMWrapperController)
diff --git a/xos/xos_client/xosapi/orm.py b/xos/xos_client/xosapi/orm.py
index 0566d7f..c21a994 100644
--- a/xos/xos_client/xosapi/orm.py
+++ b/xos/xos_client/xosapi/orm.py
@@ -461,4 +461,5 @@
 import convenience.service
 import convenience.tenant
 import convenience.onosapp
+import convenience.controller
 
