diff --git a/meta-phosphor/classes/obmc-phosphor-dbus-service.bbclass b/meta-phosphor/classes/obmc-phosphor-dbus-service.bbclass
index e7f6340..7616d94 100644
--- a/meta-phosphor/classes/obmc-phosphor-dbus-service.bbclass
+++ b/meta-phosphor/classes/obmc-phosphor-dbus-service.bbclass
@@ -9,6 +9,14 @@
 #    appended.  If one is found, it is added to the package
 #    and used verbatim.  If it is not found, a default one
 #    (with very open permissions) is generated and used.
+#
+#    Additionally the class will instantiate obmc-phosphor-systemd
+#    with any SYSTEMD_SERVICE_%s variables translated appropriately.
+#
+#  DBUS_USER_${PN}_org.openbmc.Foo = "dbususer"
+#    The user a service should be configured to run as.  If unspecified
+#    no User property is added.
+
 
 inherit dbus-dir
 inherit obmc-phosphor-utils
@@ -21,14 +29,14 @@
 
 
 python dbus_do_postinst() {
-    def make_default_dbus_config(d, service):
+    def make_default_dbus_config(d, service, user):
         path = d.getVar('D', True)
         path += d.getVar('dbus_system_confdir', True)
         with open('%s/%s.conf' % (path, service), 'w+') as fd:
             fd.write('<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"\n')
             fd.write('        "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">\n')
             fd.write('<busconfig>\n')
-            fd.write('        <policy user="root">\n')
+            fd.write('        <policy user="%s">\n' % user)
             fd.write('                <allow own="%s"/>\n' % service)
             fd.write('                <allow send_destination="%s"/>\n' % service)
             fd.write('        </policy>\n')
@@ -36,8 +44,8 @@
             fd.close()
 
 
-    for service in listvar_to_list(d, '_DEFAULT_DBUS_CONFIGS'):
-        make_default_dbus_config(d, service)
+    for service_user in listvar_to_list(d, '_DEFAULT_DBUS_CONFIGS'):
+        make_default_dbus_config(d, *service_user.split(':'))
 }
 
 
@@ -47,7 +55,10 @@
     def add_dbus_config(d, service, pkg):
         path = bb.utils.which(searchpaths, '%s.conf' % service)
         if not os.path.isfile(path):
-            set_append(d, '_DEFAULT_DBUS_CONFIGS', service)
+            user = d.getVar(
+                'DBUS_USER_%s_%s' % (pkg, service), True) or 'root'
+            set_append(d, '_DEFAULT_DBUS_CONFIGS', '%s:%s' % (
+                service, user))
         else:
             set_append(d, 'SRC_URI', 'file://%s.conf' % service)
             set_append(d, '_INSTALL_DBUS_CONFIGS', '%s.conf' % service)
@@ -55,11 +66,31 @@
             % (d.getVar('dbus_system_confdir', True), service))
 
 
+    def add_sd_unit(d, service, pkg):
+        set_append(
+            d, 'SYSTEMD_SERVICE_%s' % pkg, '%s.service' % service)
+        set_append(d, 'SYSTEMD_SUBSTITUTIONS_%s.service' % service,
+            'BUSNAME:%s' % service)
+
+
+    def add_sd_user(d, service, pkg):
+        user = d.getVar(
+            'DBUS_USER_%s_%s' % (pkg, service), True)
+        if user:
+            set_append(d, 'SYSTEMD_USER_%s_%s.service' % (
+                pkg, service), user)
+
+
     for pkg in listvar_to_list(d, 'DBUS_PACKAGES'):
+        if pkg not in (d.getVar('SYSTEMD_PACKAGES', True) or ''):
+            set_append(d, 'SYSTEMD_PACKAGES', pkg)
+
         services = listvar_to_list(d, 'DBUS_SERVICE_%s' % pkg)
 
         for service in services:
             add_dbus_config(d, service, pkg)
+            add_sd_unit(d, service, pkg)
+            add_sd_user(d, service, pkg)
 }
 
 
@@ -75,3 +106,5 @@
 }
 
 do_install[postfuncs] += "dbus_do_postinst"
+
+inherit obmc-phosphor-systemd
