diff --git a/CHANGELOG.md b/CHANGELOG.md
index 26ba041c00c87cb0b2132f58cb54a367dd4d3a32..794416aa8f3a363e58eb79f1cb558dffcdda750c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
   * It is no longer necessary to specify `REQUIRED += ...` nor `x_VERSION = $(X_DEP_VERSION)` within the module makefile
 
 ### Bugfixes
+* Fixed issue where updated dependencies of substitution files did not retrigger a .db expansion.
 
 ### Other changes
 
diff --git a/require-ess/tools/driver.makefile b/require-ess/tools/driver.makefile
index d9c499d6c226e04fe874094dd6cf890125fcead3..7aceaba617bd5e44f6e127cfb8a48b828f366346 100644
--- a/require-ess/tools/driver.makefile
+++ b/require-ess/tools/driver.makefile
@@ -398,6 +398,8 @@ export SRCS_Linux
 # Perform default database expansion of .substitions/.templates into $(COMMON_DIR)
 db_internal: $(COMMON_DIR)
 
+-include $(COMMON_DIR)/*.db.d
+
 define SUBS_EXPAND
 vpath $(notdir $2) $(dir $2)
 db_internal: $(COMMON_DIR)/$(notdir $(basename $2).db)
diff --git a/tests/test_build.py b/tests/test_build.py
index 6670f6c7d88bd3e412cce484cee0b670596bc8ee..f3f4022ae2cd8630bd61d6a640d9a0bcde2209d5 100644
--- a/tests/test_build.py
+++ b/tests/test_build.py
@@ -264,3 +264,26 @@ def test_recursive_header_include(wrappers):
     )
     assert rc == 0
     assert f"Loaded {wrapper_c.name} version {module_version}" in outs
+
+
+def test_updated_template_files(wrapper):
+    wrapper.add_var_to_makefile("SUBS", "x.substitutions")
+
+    substitution_file = wrapper.module_dir / "x.substitutions"
+    substitution_file.write_text("file x.template {pattern {x} {y}}")
+
+    template_file = wrapper.module_dir / "x.template"
+    template_file.write_text("record(ai, initial) {}")
+
+    base_version = wrapper.get_env_var("EPICS_VERSION_NUMBER")
+    db_file = wrapper.module_dir / f"O.{base_version}_Common" / "x.db"
+
+    rc, *_ = wrapper.run_make("db_internal")
+    assert rc == 0
+    assert db_file.read_text() == "record(ai, initial) {}"
+
+    template_file.write_text("record(ai, updated) {}")
+
+    rc, *_ = wrapper.run_make("db_internal")
+    assert rc == 0
+    assert db_file.read_text() == "record(ai, updated) {}"