diff --git a/releng/org.eclipse.epp.config/org.eclipse.epp.releng.updater/src/org/eclipse/epp/releng/updater/Updater.java b/releng/org.eclipse.epp.config/org.eclipse.epp.releng.updater/src/org/eclipse/epp/releng/updater/Updater.java
index 5f5dae09..cb05769e 100644
--- a/releng/org.eclipse.epp.config/org.eclipse.epp.releng.updater/src/org/eclipse/epp/releng/updater/Updater.java
+++ b/releng/org.eclipse.epp.config/org.eclipse.epp.releng.updater/src/org/eclipse/epp/releng/updater/Updater.java
@@ -220,6 +220,20 @@ private void visit(Path file) throws IOException {
+ "\"\\s+name=\"" + SIMREL_VERSION_MATCHER + "\"", SIMREL_VERSION, SIMREL_VERSION);
} else if (fileName.equals("MANIFEST.MF")) {
apply(file, "Bundle-Version: " + PLATFORM_VERSION_MATCHER + "\\.0\\.qualifier", PLATFORM_VERSION);
+ } else if (fileName.equals("promote-a-build.sh")) {
+ var pattern = Pattern.compile("(?20[2-9][0-9]-(?:03|06|09|12))/R(?\r?\n)EOM");
+ var content = getContent(file);
+ var matcher = pattern.matcher(content);
+ if (!matcher.find()) {
+ throw new IllegalStateException("Expecting a proper match in " + relativePathName);
+ }
+ var expectedPastVersion = getSimRelVersion(PLATFORM_VERSION, -2);
+ if (!expectedPastVersion.equals(matcher.group("version"))) {
+ var modifiedContent = content.substring(0, matcher.end("nl")) //
+ + "" + expectedPastVersion + "/R" + matcher.group("nl")//
+ + content.substring(matcher.end("nl"));
+ contents.put(file, modifiedContent);
+ }
} else if (relativePathName.equals("RELEASING.md")) {
// TODO
}
diff --git a/releng/org.eclipse.epp.config/tools/promote-a-build.sh b/releng/org.eclipse.epp.config/tools/promote-a-build.sh
index 1e198a22..ac5e562e 100755
--- a/releng/org.eclipse.epp.config/tools/promote-a-build.sh
+++ b/releng/org.eclipse.epp.config/tools/promote-a-build.sh
@@ -90,6 +90,7 @@ cat > release.xml <2024-06/R
2024-09/R
2024-12/R
+2025-03/R
EOM
if [ "$RELEASE_MILESTONE" != "R" ]; then
cat >> release.xml <