diff --git a/PyConf/python/PyConf/application.py b/PyConf/python/PyConf/application.py
index 1cec8af9d5f2e01a4daaf3ea0b847084d8e995e9..517a91947e66c805ba9c13e80d19e297d0720198 100644
--- a/PyConf/python/PyConf/application.py
+++ b/PyConf/python/PyConf/application.py
@@ -1068,7 +1068,8 @@ def get_configurable_algs(algs, public_tools):
         configuration.update(alg.configuration())
     for tool in public_tools:
         configuration.update(tool.configuration())
-    configurable_algs, configurable_tools = configuration.apply()
+
+    configurable_algs, _ = configuration.apply()
     del configuration
     return configurable_algs
 
@@ -1120,7 +1121,7 @@ def setup_iovlock(options, make_odin, make_fake_odin, algs, configurable_algs):
         ]
 
 
-def create_appMgr(options, config, end_event_incident, algs, nodes):
+def create_appMgr(options, config, end_event_incident, algs, nodes, nodesrep=None):
     whiteboard = config.add(
         setup_component(
             options.event_store,
@@ -1145,7 +1146,9 @@ def create_appMgr(options, config, end_event_incident, algs, nodes):
         scheduler = config.add(
             setup_component(
                 HLTControlFlowMgr,
-                CompositeCFNodes=[node.represent() for node in nodes],
+                CompositeCFNodes=[node.represent() for node in nodes]
+                if nodesrep is None
+                else nodesrep,
                 MemoryPoolSize=options.memory_pool_size,
                 ThreadPoolSize=options.n_threads,
                 EndEventIncident=end_event_incident,
@@ -1438,6 +1441,7 @@ def configure(
     make_odin=make_odin,
     make_fake_odin=make_fake_run_number,
     fsr_sink=None,
+    rename_graph=None,
 ):
     options.finalize()
     config = ComponentConfig()
@@ -1455,10 +1459,23 @@ def configure(
     ):
         algs = algs + [make_odin().producer]
 
-    configurable_algs = get_configurable_algs(algs, public_tools)
+    configuration = dataflow_config()
+    for alg in algs:
+        configuration.update(alg.configuration())
+    for tool in public_tools:
+        configuration.update(tool.configuration())
+
+    nodesrep = None
+    if rename_graph:
+        # Assign meaningful names to algorithms from all used streams in HLT2
+        # and propagate them into the dataflow configuration and the list of nodes (Moore!4387)
+        nodesrep = rename_graph(configuration, nodes)
+
+    configurable_algs, _ = configuration.apply()
+    del configuration
 
     setup_iovlock(options, make_odin, make_fake_odin, algs, configurable_algs)
-    appMgr = create_appMgr(options, config, end_event_incident, algs, nodes)
+    appMgr = create_appMgr(options, config, end_event_incident, algs, nodes, nodesrep)
     setup_auditors(options, config, appMgr)
     msgSvc = setup_main_services(options, config, configurable_algs, appMgr)
     setup_monitoring(options, config, appMgr)