diff --git a/NEWS b/NEWS
index da2d9defca..643ae5df0e 100644
--- a/NEWS
+++ b/NEWS
@@ -326,6 +326,12 @@ CHANGES WITH 239 in spe:
system namespacing options. One such service is systemd-udevd.service
wher this is now used by default.
+ * A new unit "system-update-pre.target" is added, which defines an
+ optional synchronization point for offline system updates, as
+ implemented by the pre-existing "system-update.target" unit. It
+ allows ordering services before the service that executes the actual
+ update process in a generic way.
+
Contributions from: Adam Duskett, Alan Jenkins, Alessandro Casale,
Alexander Kurtz, Alex Gartrell, Anssi Hannula, Arnaud Rebillout, Brian
J. Murrell, Bruno Vernay, Chris Lesiak, Christian Brauner, Christian
diff --git a/man/systemd.special.xml b/man/systemd.special.xml
index 2776276a1d..fb12805fff 100644
--- a/man/systemd.special.xml
+++ b/man/systemd.special.xml
@@ -78,6 +78,7 @@
swap.target,
sysinit.target,
system-update.target,
+ system-update-pre.target,
time-sync.target,
timers.target,
umount.target,
@@ -658,6 +659,7 @@
system-update.target
+ system-update-pre.target
system-update-cleanup.service
A special target unit that is used for offline system updates.
@@ -667,12 +669,13 @@
systemd.offline-updates7.
- Updates should happen before the system-update.target is
- reached, and the services which implement them should cause the machine to reboot. As
- a safety measure, if this does not happen, and /system-update
- still exists after system-update.target is reached,
- system-update-cleanup.service will remove this symlink and
- reboot the machine.
+ Updates should happen before the system-update.target is reached, and the services
+ which implement them should cause the machine to reboot. The main units executing the update should order
+ themselves after system-update-pre.target but not pull it in. Services which want to run
+ during system updates only, but before the actual system update is executed should order themselves before
+ this unit and pull it in. As a safety measure, if this does not happen, and
+ /system-update still exists after system-update.target is reached,
+ system-update-cleanup.service will remove this symlink and reboot the machine.
diff --git a/units/system-update-pre.target b/units/system-update-pre.target
index dbd9ad92ec..163b75c220 100644
--- a/units/system-update-pre.target
+++ b/units/system-update-pre.target
@@ -13,4 +13,3 @@ Documentation=man:systemd.offline-updates(7)
Documentation=man:systemd.special(7) man:systemd-system-update-generator(8)
RefuseManualStart=yes
After=sysinit.target
-Before=system-update.target
diff --git a/units/system-update.target b/units/system-update.target
index b52a494892..be007e306d 100644
--- a/units/system-update.target
+++ b/units/system-update.target
@@ -12,7 +12,6 @@ Description=Offline System Update
Documentation=man:systemd.offline-updates(7)
Documentation=man:systemd.special(7) man:systemd-system-update-generator(8)
Requires=sysinit.target
-After=sysinit.target
+After=sysinit.target system-update.target
AllowIsolate=yes
-Wants=system-update-pre.target
Wants=system-update-cleanup.service