diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3581d8851e495ba9682050acd0ea0b83dfacb649..e4e276d61642a9c19f2ee9b9a7b89acba80579c2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Bugfixes
 
+* Fixed an issue where .template and .substitutions files with the same name would build incorrectly
+
 ### Other changes
 
 * Replaced `tclx` script to expand .dbd files with a python script
diff --git a/require-ess/tools/driver.makefile b/require-ess/tools/driver.makefile
index d650d0f5391d371285530502a45907272d6dea94..25bd11eeb16bc054290cfcca645bca6be5b7233d 100644
--- a/require-ess/tools/driver.makefile
+++ b/require-ess/tools/driver.makefile
@@ -269,16 +269,16 @@ db_internal: $(COMMON_DIR)
 VPATH += $(dir $(TMPS))
 VPATH += $(dir $(SUBS))
 
-$(COMMON_DIR)/%.db: %.template
-	@printf "Inflating database ... %44s >>> %40s \n" "$^" "$@"
-	$(QUIET)$(MSI) -D $(USR_DBFLAGS) -o $(COMMON_DIR)/$(notdir $(basename $@).db) $^ > $(COMMON_DIR)/$(notdir $(basename $@).db).d
-	$(QUIET)$(MSI)    $(USR_DBFLAGS) -o $(COMMON_DIR)/$(notdir $(basename $@).db) $^
-
 $(COMMON_DIR)/%.db: %.substitutions
 	@printf "Inflating database ... %44s >>> %40s \n" "$^" "$@"
 	$(QUIET)$(MSI) -D $(USR_DBFLAGS) -o $(COMMON_DIR)/$(notdir $(basename $@).db) -S $^ > $(COMMON_DIR)/$(notdir $(basename $@).db).d
 	$(QUIET)$(MSI)    $(USR_DBFLAGS) -o $(COMMON_DIR)/$(notdir $(basename $@).db) -S $^
 
+$(COMMON_DIR)/%.db: %.template
+	@printf "Inflating database ... %44s >>> %40s \n" "$^" "$@"
+	$(QUIET)$(MSI) -D $(USR_DBFLAGS) -o $(COMMON_DIR)/$(notdir $(basename $@).db) $^ > $(COMMON_DIR)/$(notdir $(basename $@).db).d
+	$(QUIET)$(MSI)    $(USR_DBFLAGS) -o $(COMMON_DIR)/$(notdir $(basename $@).db) $^
+
 
 install build debug::
 	@echo "MAKING EPICS VERSION ${EPICSVERSION}"
diff --git a/tests/test_build.py b/tests/test_build.py
index 8af46ae12817bd9a4e626bf5723bc1a304944827..bd1be0830a71475b41b62261ce686155ef7a1c92 100644
--- a/tests/test_build.py
+++ b/tests/test_build.py
@@ -539,6 +539,37 @@ def test_expand_db_files(wrapper: Wrapper):
     )
 
 
+def test_substitution_template_priority(wrapper: Wrapper):
+    """Test that the automated template/substitution file expansion works."""
+
+    wrapper.add_var_to_module_makefile("TMPS", "a.template")
+    wrapper.add_var_to_module_makefile("SUBS", "a.substitutions")
+
+    template_file = wrapper.module_dir / "a.template"
+    template_file_contents = "record (ai, $(FOO)) {}"
+    template_file.write_text(template_file_contents)
+
+    substitution_file = wrapper.module_dir / "a.substitutions"
+    substitution_file.write_text(
+        """file "a.template"
+{
+  pattern { FOO }
+          { "$(BAR)" }
+}
+"""
+    )
+
+    base_version = wrapper.get_env_var("EPICS_VERSION_NUMBER")
+    common_dir = wrapper.module_dir / f"O.{base_version}_Common"
+
+    rc, *_ = wrapper.run_make("db_internal")
+    assert rc == 0
+
+    expanded_template_file = common_dir / "a.db"
+    assert "BAR" in expanded_template_file.read_text()
+    assert "FOO" not in expanded_template_file.read_text()
+
+
 @pytest.mark.parametrize(
     "installed_archs, param, expected",
     [