diff --git a/systemd/defaults.yaml b/systemd/defaults.yaml
index 3febe6c96c42ae92e8f05e696728b427951e470a..4a7e579241786a8561c845ba4d3db9e604cac230 100644
--- a/systemd/defaults.yaml
+++ b/systemd/defaults.yaml
@@ -19,6 +19,8 @@ systemd:
       PollIntervalMaxSec: 2048
 
   networkd:
+    # networkctl reload is available since systemd 244
+    networkctl_reload: false
     pkg: {}
     path: /etc/systemd/network
     service: systemd-networkd
diff --git a/systemd/networkd/profiles.sls b/systemd/networkd/profiles.sls
index 478fba7cb63d0d205754894c2b9de446570b4053..7c5591167fcc6c5e05127dbc4ea2e908509ab372 100644
--- a/systemd/networkd/profiles.sls
+++ b/systemd/networkd/profiles.sls
@@ -5,8 +5,10 @@
 {%- set networkd = systemd.get('networkd', {}) %}
 {%- set profiles = networkd.get('profiles', {}) %}
 
+{%- if networkd.networkctl_reload %}
 include:
-  - systemd.reload
+  - systemd.networkd.reload
+{%- endif %}
 
 {% if profiles is mapping %}
 {% for networkdprofile, types in profiles.items()  %}
@@ -23,8 +25,10 @@ include:
     - dir_mode: 755
     - context:
         config: {{ profileconfig|json }}
+{%- if networkd.networkctl_reload %}
     - watch_in:
-      - cmd: reload_systemd_configuration
-  {% endfor %}
-{% endfor %}
-{% endif %}
+      - cmd: systemd-networkd-reload-cmd-wait
+{%- endif %}
+  {%- endfor %}
+{%- endfor %}
+{%- endif %}
diff --git a/systemd/networkd/reload.sls b/systemd/networkd/reload.sls
new file mode 100644
index 0000000000000000000000000000000000000000..4ee5dd92db904ca43a4af56619381d79ad362a86
--- /dev/null
+++ b/systemd/networkd/reload.sls
@@ -0,0 +1,9 @@
+include:
+  - systemd.networkd
+
+systemd-networkd-reload-cmd-wait:
+  cmd.wait:
+    - name: networkctl reload
+    - runas: root
+    - require:
+      - service: networkd
diff --git a/systemd/osmap.yaml b/systemd/osmap.yaml
index 35f30c141246441cff8969afb2e9dc1688d08a4a..3269553cfe37bb56f2200ce16ba5300bd6fda377 100644
--- a/systemd/osmap.yaml
+++ b/systemd/osmap.yaml
@@ -14,6 +14,7 @@ Fedora:
   pkgs_extra:
     - python3-systemd
   networkd:
+    networkctl_reload: true
     pkg: {}
   resolved:
     pkg: {}