diff --git a/planetstack/core/admin.py b/planetstack/core/admin.py
index 34a77c0..a84b8bc 100644
--- a/planetstack/core/admin.py
+++ b/planetstack/core/admin.py
@@ -138,13 +138,13 @@
         return mark_safe(backend_icon(obj))
     backend_status_icon.short_description = ""
 
-    def get_form(self, request, obj=None):
+    def get_form(self, request, obj=None, **kwargs):
         # Save obj and request in thread-local storage, so suit_form_tabs can
         # use it to determine whether we're in edit or add mode, and can
         # determine whether the user is an admin.
         _thread_locals.request = request
         _thread_locals.obj = obj
-        return super(PermissionCheckingAdminMixin, self).get_form(request, obj)
+        return super(PermissionCheckingAdminMixin, self).get_form(request, obj, **kwargs)
 
     def get_inline_instances(self, request, obj=None):
         inlines = super(PermissionCheckingAdminMixin, self).get_inline_instances(request, obj)
diff --git a/planetstack/openstack_observer/steps/sync_network_deployments.py b/planetstack/openstack_observer/steps/sync_network_deployments.py
index 0312f3a..a6fc389 100644
--- a/planetstack/openstack_observer/steps/sync_network_deployments.py
+++ b/planetstack/openstack_observer/steps/sync_network_deployments.py
@@ -104,6 +104,8 @@
         network_deployment.save()
 
     def sync_record(self, network_deployment):
+        logger.info("sync'ing network deployment %s for network %s slice %s deployment %s" % (network_deployment, network_deployment.network, str(network_deployment.network.owner), network_deployment.deployment))
+
         if not network_deployment.deployment.admin_user:
             logger.info("deployment %r has no admin_user, skipping" % network_deployment.deployment)
             return
diff --git a/planetstack/openstack_observer/steps/sync_network_slivers.py b/planetstack/openstack_observer/steps/sync_network_slivers.py
index 3e85e05..086308e 100644
--- a/planetstack/openstack_observer/steps/sync_network_slivers.py
+++ b/planetstack/openstack_observer/steps/sync_network_slivers.py
@@ -17,6 +17,8 @@
     #     which Network is associated from the port.
 
     def call(self, **args):
+        logger.info("sync'ing network slivers")
+
         networkSlivers = NetworkSliver.objects.all()
         networkSlivers_by_id = {}
         networkSlivers_by_port = {}
diff --git a/planetstack/openstack_observer/steps/sync_slivers.py b/planetstack/openstack_observer/steps/sync_slivers.py
index 4f33bba..8237896 100644
--- a/planetstack/openstack_observer/steps/sync_slivers.py
+++ b/planetstack/openstack_observer/steps/sync_slivers.py
@@ -24,7 +24,7 @@
         return userdata
 
     def sync_record(self, sliver):
-        logger.info("sync'ing sliver:%s deployment:%s " % (sliver, sliver.node.deployment))
+        logger.info("sync'ing sliver:%s slice:%s deployment:%s " % (sliver, sliver.slice.name, sliver.node.deployment))
 
         metadata_update = {}
 	if (sliver.numberCores):
