diff --git a/recipes-openharmony/openharmony/files/openharmony-preinit b/recipes-openharmony/openharmony/files/openharmony-preinit
index f7eb48ef132e6f6d7e439640d5608886649cee00..8bcfaa9ad1449e5da7775d7d8134ebee797ccdfd 100644
--- a/recipes-openharmony/openharmony/files/openharmony-preinit
+++ b/recipes-openharmony/openharmony/files/openharmony-preinit
@@ -104,12 +104,6 @@ setparam persist.ace.trace.enabled 0
 # - pre-init stage
 # - init stage
 
-if systemctl -q is-enabled samgr.service; then
-	echo >/dev/console "Starting OpenHarmony samgr service"
-	/system/bin/samgr &
-	sleep "$STARTUP_CMD_SLEEP"
-fi
-
 # - post-init stage
 #   - "trigger early-fs",
 #   - "trigger fs",
diff --git a/recipes-openharmony/openharmony/files/openharmony-preinit.service b/recipes-openharmony/openharmony/files/openharmony-preinit.service
index ca384e6a6104516c8bf5026614ba36e1e69e3a49..bad291a2fa5152e9b9a1eedffe9ed8270440e5b9 100644
--- a/recipes-openharmony/openharmony/files/openharmony-preinit.service
+++ b/recipes-openharmony/openharmony/files/openharmony-preinit.service
@@ -2,6 +2,8 @@
 Description=OpenHarmony pre-init setup
 After=param.service
 Requires=param.service
+After=samgr.service
+Requires=samgr.service
 
 [Service]
 Type=oneshot
diff --git a/recipes-openharmony/openharmony/files/samgr.service b/recipes-openharmony/openharmony/files/samgr.service
index bb66c394846c8e39f705162f49950b30546ec069..16a22ceebaa1c77f3e0b17a5c26cd7e1df001b48 100644
--- a/recipes-openharmony/openharmony/files/samgr.service
+++ b/recipes-openharmony/openharmony/files/samgr.service
@@ -1,10 +1,15 @@
 [Unit]
 Description=OpenHarmony SystemAbilityFramework service
+# Logging to hilogd, but seems to work without it
+Wants=hilogd.service
+After=hilogd.service
 
 [Service]
-Type=oneshot
-ExecStart=/bin/echo "OpenHarmony SystemAbilityFramework Service"
-RemainAfterExit=yes
+Type=notify
+ExecStartPre=!install -m 755 -o system -g system -d /data/sadata_de /data/sadata_de/samgr
+User=system
+Group=system
+ExecStart=/usr/bin/samgr
 
 [Install]
 WantedBy=multi-user.target
diff --git a/recipes-openharmony/openharmony/openharmony-standard-3.0/samgr-sd-notify.patch b/recipes-openharmony/openharmony/openharmony-standard-3.0/samgr-sd-notify.patch
index caec79db5bc6fab822b131c1842bc1a729e51753..7c4010f7d5ce0829c77944e8f9786d683a99bed2 100644
--- a/recipes-openharmony/openharmony/openharmony-standard-3.0/samgr-sd-notify.patch
+++ b/recipes-openharmony/openharmony/openharmony-standard-3.0/samgr-sd-notify.patch
@@ -1,3 +1,15 @@
+# SPDX-FileCopyrightText: Huawei Inc.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+Patch for //foundation/distributedschedule/samgr of OpenHarmony 3.0 codebase
+
+This adds sd_notify(3) ready notification to samgr service for better
+integration with systemd.
+
+Signed-off-by: Esben Haabendal <esben@geanix.com>
+Upstream-Status: Pending
+
 diff --git a/services/samgr/native/BUILD.gn b/services/samgr/native/BUILD.gn
 index 9b7e4a4e6301..48c512f430e6 100755
 --- a/services/samgr/native/BUILD.gn
diff --git a/recipes-openharmony/openharmony/openharmony-standard_3.0.bb b/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
index 818ff5fcea00eee8f92596134b0fe60258623468..c1bfbe4b859b69bc43d1a0b953fee304e963a1e2 100644
--- a/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
+++ b/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
@@ -771,7 +771,6 @@ FILES:${PN}-samgr = " \
     ${bindir}/samgr \
     ${libdir}/libsamgr*${SOLIBS} \
     ${libdir}/liblsamgr*${SOLIBS} \
-    ${systemd_unitdir}/samgr.service \
 "
 SYSTEMD_PACKAGES += "${PN}-samgr"
 SYSTEMD_SERVICE:${PN}-samgr = "samgr.service"