diff --git a/src/python/rtcds/fe_generator/front_end.py b/src/python/rtcds/fe_generator/front_end.py
index 38ef4b828a436ba3a960b184abf8c07e24f12b0c..044df7b4dd11b074f9b4f8eeb7bfbb9e1f981a1f 100644
--- a/src/python/rtcds/fe_generator/front_end.py
+++ b/src/python/rtcds/fe_generator/front_end.py
@@ -38,6 +38,7 @@ Description=All models
         targ_path = path.join(self.target_dir, targ_name)
         services = ['dis_kosif.service', 'dis_ix.service', 'dis_irm.service', 'dis_sisci.service',
                     'dis_nodemgr.service']
+
         with open(targ_path, "wt") as f:
             f.write(gen_disclaimer)
             f.write(f"""[Unit]
@@ -46,6 +47,10 @@ Wants={" ".join(services)}""")
 
         self.serialize_units(services)
         self.bind_units(services)
+
+        for service in services:
+            self.part_of(service, targ_name)
+
         return Process(targ_name, 'dis_nodemgr.service', 'dis_kosif.service',)
 
     def epics_only_models(self, models):
diff --git a/src/python/rtcds/fe_generator/sequencer.py b/src/python/rtcds/fe_generator/sequencer.py
index 4ce7182aedd838c08aae251bcdfff47f9f00e8ff..0a80c990f2d96b2b8b8fd2b3aec4aeb1672edc1b 100644
--- a/src/python/rtcds/fe_generator/sequencer.py
+++ b/src/python/rtcds/fe_generator/sequencer.py
@@ -32,11 +32,19 @@ class Sequencer(object):
         before_world = []
         world = []
         models = False
-        if self.options["HAS_DOLPHIN_PORT"] and self.options["IS_DOLPHIN_NODE"]:
-            before_world.append(self.processes.dolphin_port())
-            before_world.append(self.delay(15, "dolphin_port"))
         if self.options["IS_DOLPHIN_NODE"]:
-            before_world.append(self.processes.dolphin_drivers())
+            dolphin_drivers = self.processes.dolphin_drivers()
+            if self.options["HAS_DOLPHIN_PORT"]:
+                dolphin_port = self.processes.dolphin_port()
+
+                # bind drivers to port control so that drivers automatically get disabled
+                # when port is closed
+                self.processes.binds_to(dolphin_drivers.first_service, dolphin_port.start)
+
+                before_world.append(dolphin_port)
+                before_world.append(self.delay(15, "dolphin_port"))
+            before_world.append(dolphin_drivers)
+            klog("dolphin drivers added")
         before_world.append(self.delay(30, "startup"))
         if self.options["HAS_EPICS_ONLY_MODELS"]:
             world.append(self.processes.epics_only_models(self.options["EPICS_ONLY_MODELS"]))