diff --git a/apache/certificates.sls b/apache/certificates.sls
index ce9ffa294690413aca6c84532dcff5d366bfecf4..c0aaeead2c3c66f31cf389f1b5557366beb85b4d 100644
--- a/apache/certificates.sls
+++ b/apache/certificates.sls
@@ -17,6 +17,10 @@ apache_cert_config_{{ site }}_key_file:
     - group: root
     - watch_in:
       - module: apache-reload
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 {% endif %}
 
 {% if confcert.SSLCertificateFile is defined and confcert.SSLCertificateFile_content is defined %}
@@ -31,6 +35,10 @@ apache_cert_config_{{ site }}_cert_file:
     - group: root
     - watch_in:
       - module: apache-reload
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 {% endif %}
 
 {% if confcert.SSLCertificateChainFile is defined and confcert.SSLCertificateChainFile_content is defined %}
@@ -45,6 +53,10 @@ apache_cert_config_{{ site }}_bundle_file:
     - group: root
     - watch_in:
       - module: apache-reload
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 {% endif %}
 
 {%- endfor %}
diff --git a/apache/config.sls b/apache/config.sls
index 45c40b93058ac845c46c0bb4cd743c1c3e5fa8eb..9caeaae6c2e1d34d1e761a2dcba028a9f640ea96 100644
--- a/apache/config.sls
+++ b/apache/config.sls
@@ -9,6 +9,10 @@ include:
     - require:
       - pkg: apache
     - watch_in:
+      - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
       - service: apache
 
 {{ apache.configfile }}:
@@ -19,6 +23,10 @@ include:
     - require:
       - pkg: apache
     - watch_in:
+      - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
       - service: apache
     - context:
       apache: {{ apache }}
@@ -29,6 +37,10 @@ include:
     - require:
       - pkg: apache
     - watch_in:
+      - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
       - service: apache
 
 {% if grains['os_family']=="Debian" %}
@@ -40,6 +52,10 @@ include:
     - require:
       - pkg: apache
     - watch_in:
+      - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
       - service: apache
 
 {{ apache.portsfile }}:
@@ -50,6 +66,10 @@ include:
     - require:
       - pkg: apache
     - watch_in:
+      - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
       - service: apache
     - context:
       apache: {{ apache }}
@@ -62,6 +82,10 @@ include:
     - require:
       - pkg: apache
     - watch_in:
+      - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
       - service: apache
 {% endif %}
 
@@ -74,6 +98,10 @@ include:
     - require:
       - pkg: apache
     - watch_in:
+      - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
       - service: apache
     - context:
       apache: {{ apache }}
@@ -88,6 +116,10 @@ include:
     - require:
       - pkg: apache
     - watch_in:
+      - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
       - service: apache
 
 {{ apache.portsfile }}:
@@ -98,6 +130,10 @@ include:
     - require:
       - pkg: apache
     - watch_in:
+      - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
       - service: apache
     - context:
       apache: {{ apache }}
diff --git a/apache/debian_full.sls b/apache/debian_full.sls
index 44bba6bb98de8aa3f6e38bbb873fd672c65c48de..2104fe1af6e8658738b38f9822c4ce66f0fa4631 100644
--- a/apache/debian_full.sls
+++ b/apache/debian_full.sls
@@ -24,6 +24,10 @@ a2dissite 000-default{{ apache.confext }}:
     - onlyif: test -f /etc/apache2/sites-enabled/000-default{{ apache.confext }}
     - watch_in:
       - module: apache-reload
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
     - require:
       - pkg: apache
 
diff --git a/apache/defaults.yaml b/apache/defaults.yaml
index 25ac23bb4f3497cf27676f24755d191e84bd16a3..e0799e8634e43eb6beeec23259a900c108489504 100644
--- a/apache/defaults.yaml
+++ b/apache/defaults.yaml
@@ -3,6 +3,8 @@
 
 apache:
   manage_service_states: True
+  service_state: running
+  service_enable: True
 
   mod_security:
     crs_install: False
diff --git a/apache/flags.sls b/apache/flags.sls
index f303b98d5e21d85963d505bd8aefc1a44e449591..4d6f1e02647ef599418ef6aba3752f2d7af65edf 100644
--- a/apache/flags.sls
+++ b/apache/flags.sls
@@ -13,6 +13,10 @@ a2enflag {{ flag }}:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 {% endfor %}
 
 {% for module in salt['pillar.get']('apache:flags:disabled', []) %}
@@ -23,6 +27,10 @@ a2disflag -f {{ flag }}:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 {% endfor %}
 
 {% endif %}
diff --git a/apache/init.sls b/apache/init.sls
index 16deaddf068091e4b75232a2b191b7644c15fd34..bbe1d7dcdb0ebbc76879a7e1cfd741739ff752bb 100644
--- a/apache/init.sls
+++ b/apache/init.sls
@@ -12,26 +12,35 @@ apache:
     - system: True
   {# By default run apache service states (unless pillar is false) #}
   {% if salt['pillar.get']('apache:manage_service_states', True) %}
-  service.running:
+  service.{{apache.service_state}}:
     - name: {{ apache.service }}
+    {% if apache.service_state in [ 'running', 'dead' ] %}
     - enable: True
-    - require:
-      - module: apache-restart
-      - module: apache-reload
+    {% endif %}
 
 # The following states are inert by default and can be used by other states to
 # trigger a restart or reload as needed.
 apache-reload:
   module.wait:
+{% if apache.service_state in ['running'] %}
     - name: service.reload
     - m_name: {{ apache.service }}
-    - require:
-      - module: apache-restart
+{% else %}
+    - name: cmd.run
+    - cmd: {{apache.custom_reload_command|default('apachectl graceful')}}
+    - python_shell: True
+{% endif %}
 
 apache-restart:
   module.wait:
+{% if apache.service_state in ['running'] %}
     - name: service.restart
     - m_name: {{ apache.service }}
+{% else %}
+    - name: cmd.run
+    - cmd: {{apache.custom_reload_command|default('apachectl graceful')}}
+    - python_shell: True
+{% endif %}
 
   {% else %}
 
diff --git a/apache/manage_security.sls b/apache/manage_security.sls
index 32f44fd4c9be95f6ac18362f96094d1c906973cf..f4b176c1ad5116c63f0e6103c50be71369f19a95 100644
--- a/apache/manage_security.sls
+++ b/apache/manage_security.sls
@@ -12,6 +12,10 @@
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 {%- endmacro %}
 
 include:
diff --git a/apache/mod_actions.sls b/apache/mod_actions.sls
index e747963b037ffdcd156c95e9af1086eca36caa77..2cf270318741fa05eb64996b2863472cb1259b73 100644
--- a/apache/mod_actions.sls
+++ b/apache/mod_actions.sls
@@ -11,5 +11,9 @@ a2enmod actions:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% endif %}
diff --git a/apache/mod_cgi.sls b/apache/mod_cgi.sls
index caa2ab07a3966c7dde817b919a9857a25af9aa85..223b0939c976f9f44609d3afe27726f0cf42f63e 100644
--- a/apache/mod_cgi.sls
+++ b/apache/mod_cgi.sls
@@ -14,5 +14,9 @@ include:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% endif %}
diff --git a/apache/mod_dav_svn.sls b/apache/mod_dav_svn.sls
index cf29feeec877324f763d339b87c2d797f390ea77..e65a6502cae0fefe704f9ac0ed8d7b5241c60850 100644
--- a/apache/mod_dav_svn.sls
+++ b/apache/mod_dav_svn.sls
@@ -16,6 +16,10 @@ a2enmod dav_svn:
       - pkg: libapache2-mod-svn
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 a2enmod authz_svn:
   cmd.run:
@@ -26,5 +30,9 @@ a2enmod authz_svn:
       - pkg: libapache2-mod-svn
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% endif %}
diff --git a/apache/mod_fastcgi.sls b/apache/mod_fastcgi.sls
index d3c511787793f1a5e1787eb467fd62ba3e02879f..196e3b09a4fea1ad1970bbe1f5e4535fbfb1fcde 100644
--- a/apache/mod_fastcgi.sls
+++ b/apache/mod_fastcgi.sls
@@ -12,6 +12,12 @@ mod-fastcgi:
     - require:
       - pkgrepo: repo-fastcgi
       - pkg: apache
+    - watch_in:
+      - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 repo-fastcgi:
   pkgrepo.managed:
@@ -28,6 +34,10 @@ a2enmod fastcgi:
       - pkg: mod-fastcgi
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% endif %}
 
diff --git a/apache/mod_fcgid.sls b/apache/mod_fcgid.sls
index 66327df8fbe31d70b0cd7ba2cea37e173c4a90a5..485aa16055659e2058794bc11d8d647de5c914a0 100644
--- a/apache/mod_fcgid.sls
+++ b/apache/mod_fcgid.sls
@@ -20,5 +20,9 @@ a2enmod fcgid for apache.mod_fcgid:
       - pkg: mod-fcgid
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% endif %}
diff --git a/apache/mod_geoip.sls b/apache/mod_geoip.sls
index a94b4b2601d8c74243acd74a7db0d4c56f45185f..aaa5c738a9d4a0fefb68d56efaab64499521eced 100644
--- a/apache/mod_geoip.sls
+++ b/apache/mod_geoip.sls
@@ -12,9 +12,13 @@ mod-geoip:
       - {{ apache.mod_geoip_database }}
     - require:
       - pkg: apache
-
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
+
 
 {% if grains['os_family']=="RedHat" %}
 geoip conf:
diff --git a/apache/mod_headers.sls b/apache/mod_headers.sls
index fa2be47a2d67a4c5b168428c26f324d2fe684987..a13875edfbc8ae3a839ada85f28631ed71a97ff6 100644
--- a/apache/mod_headers.sls
+++ b/apache/mod_headers.sls
@@ -11,5 +11,9 @@ a2enmod headers:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% endif %}
diff --git a/apache/mod_mpm.sls b/apache/mod_mpm.sls
index f51c992bd5fe2ce4b91a5daca25ffa78df801d2e..0c69e8884356fd86d99194299f3d7bdf2c4af3a8 100644
--- a/apache/mod_mpm.sls
+++ b/apache/mod_mpm.sls
@@ -13,6 +13,10 @@ a2enmod {{ mpm_module }}:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
   file.managed:
     - name: /etc/apache2/mods-available/{{ mpm_module }}.conf
     - template: jinja
@@ -22,6 +26,10 @@ a2enmod {{ mpm_module }}:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 # Deactivate the other mpm modules as a previous step
 {% for mod in ['mpm_prefork', 'mpm_worker', 'mpm_event'] if not mod == mpm_module %}
@@ -34,6 +42,10 @@ a2dismod {{ mod }}:
       - cmd: a2enmod {{ mpm_module }}
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 {% endfor %}
 
 {% endif %}
@@ -53,5 +65,9 @@ include:
       - pkg: httpd
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% endif %}
diff --git a/apache/mod_pagespeed.sls b/apache/mod_pagespeed.sls
index c8b9a70407f5c1c95c70524dc3669483e4c37afd..bc76f8eaffa8006f059fc21cfa93d5a97d2bf7d5 100644
--- a/apache/mod_pagespeed.sls
+++ b/apache/mod_pagespeed.sls
@@ -17,6 +17,10 @@ a2enmod pagespeed:
     - require:
       - pkg: libapache2-mod-pagespeed
     - watch_in:
+      - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
       - service: apache
 
 {% for dir in ['/var/cache/mod_pagespeed', '/var/log/pagespeed'] %}
diff --git a/apache/mod_perl2.sls b/apache/mod_perl2.sls
index 16b9e2427b96353346306a7c3f6512a8386d4ddb..255d0274cf45e59fdf542783c25ec2a465717330 100644
--- a/apache/mod_perl2.sls
+++ b/apache/mod_perl2.sls
@@ -9,6 +9,12 @@ mod-perl2:
     - order: 180
     - require:
       - pkg: apache
+    - watch_in:
+      - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% if grains['os_family']=="Debian" %}
 a2enmod perl2:
@@ -19,6 +25,10 @@ a2enmod perl2:
       - pkg: mod-perl2
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% elif grains['os_family']=="FreeBSD" %}
 
@@ -31,5 +41,9 @@ a2enmod perl2:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% endif %}
diff --git a/apache/mod_php5.sls b/apache/mod_php5.sls
index 93e16a324dd11bc17105aa9d9177a46db22b2704..21621015da3a1b1ae197c239d1ee90b13f37e5dc 100644
--- a/apache/mod_php5.sls
+++ b/apache/mod_php5.sls
@@ -19,6 +19,10 @@ a2enmod php5:
       - pkg: mod-php5
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% if 'apache' in pillar and 'php-ini' in pillar['apache'] %}
 /etc/php5/apache2/php.ini:
@@ -27,6 +31,10 @@ a2enmod php5:
     - order: 225
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
     - require:
       - pkg: apache
       - pkg: mod-php5
@@ -43,6 +51,10 @@ a2enmod php5:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% endif %}
 
diff --git a/apache/mod_proxy.sls b/apache/mod_proxy.sls
index ee6ad80311debb5f2d8b6a7fe841738467db787a..14c3088988f511484fbe8510e5cb66e4f1930813 100644
--- a/apache/mod_proxy.sls
+++ b/apache/mod_proxy.sls
@@ -13,6 +13,10 @@ a2enmod mod_proxy:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% elif grains['os_family']=="FreeBSD" %}
 {{ apache.modulesdir }}/040_mod_proxy.conf:
@@ -24,5 +28,9 @@ a2enmod mod_proxy:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% endif %}
diff --git a/apache/mod_proxy_fcgi.sls b/apache/mod_proxy_fcgi.sls
index d95d1edcaa547133b937ce7e9ee8a1cdd6ac91dc..c36eec39fe5f8eab0a001b6f1f6fa5ec5414a678 100644
--- a/apache/mod_proxy_fcgi.sls
+++ b/apache/mod_proxy_fcgi.sls
@@ -13,5 +13,9 @@ a2enmod proxy_fcgi:
       - cmd: a2enmod proxy
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% endif %}
diff --git a/apache/mod_proxy_http.sls b/apache/mod_proxy_http.sls
index 78e4d09fa2a2b02d16b73999529fcc7faf77002b..f251a73f25b5a7a97c7f1154713ebe8bc0908008 100644
--- a/apache/mod_proxy_http.sls
+++ b/apache/mod_proxy_http.sls
@@ -15,6 +15,10 @@ a2enmod proxy_http:
       - cmd: a2enmod proxy
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% elif grains['os_family']=="FreeBSD" %}
 {{ apache.modulesdir }}/040_mod_proxy_http.conf:
@@ -26,5 +30,9 @@ a2enmod proxy_http:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% endif %}
diff --git a/apache/mod_remoteip.sls b/apache/mod_remoteip.sls
index 718a01d8b913ff82112331bec543ddcf92195bbf..b2d399d24cd54da4796f45ae2e240b2b3a250222 100644
--- a/apache/mod_remoteip.sls
+++ b/apache/mod_remoteip.sls
@@ -11,6 +11,10 @@ a2enmod remoteip:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 a2enconf remoteip:
   cmd.run:
@@ -20,6 +24,10 @@ a2enconf remoteip:
       - pkg: apache
     - watch_in:
       - module: apache-reload
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 /etc/apache2/conf-available/remoteip.conf:
   file.managed:
@@ -29,6 +37,10 @@ a2enconf remoteip:
     - require:
       - pkg: apache
     - watch_in:
+      - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
       - service: apache
 {% endif %}
 
@@ -46,6 +58,10 @@ include:
     - require:
       - pkg: apache
     - watch_in:
+      - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
       - service: apache
 
 {% endif %}
diff --git a/apache/mod_rewrite.sls b/apache/mod_rewrite.sls
index 03bc2ba831b4ba810bad815fe551f4f360d7de14..39cb60cda30f346e4e9fd7ec19fef2ebfcdcb4c7 100644
--- a/apache/mod_rewrite.sls
+++ b/apache/mod_rewrite.sls
@@ -12,6 +12,10 @@ a2enmod rewrite:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% elif grains['os_family']=="FreeBSD" %}
 
@@ -24,5 +28,9 @@ a2enmod rewrite:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% endif %}
diff --git a/apache/mod_security/init.sls b/apache/mod_security/init.sls
index 9c5f3532d0c62d6c2461df833f29b9f93c283a26..7eecad5b14b048756478085c6ac2a6b4c56935c9 100644
--- a/apache/mod_security/init.sls
+++ b/apache/mod_security/init.sls
@@ -9,6 +9,12 @@ mod-security:
     - order: 180
     - require:
       - pkg: apache
+    - watch_in:
+      - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% if apache.mod_security.crs_install %}
 mod-security-crs:
@@ -17,6 +23,12 @@ mod-security-crs:
     - order: 180
     - require:
       - pkg: mod-security
+    - watch_in:
+      - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 {% endif %}
 
 {% if apache.mod_security.manage_config %}
@@ -32,6 +44,10 @@ mod-security-main-config:
       - pkg: mod-security
     - watch_in:
       - module: apache-reload
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 {% endif %}
 
 {% if grains['os_family']=="Debian" %}
@@ -43,4 +59,8 @@ a2enmod security2:
       - pkg: mod-security
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 {% endif %}
diff --git a/apache/mod_socache_shmcb.sls b/apache/mod_socache_shmcb.sls
index af8cb3e5948f1db7a85b2bbfcb9168a9c9d4f68d..95fb71011439939090ff6c6c021c34f1f24b1f4f 100644
--- a/apache/mod_socache_shmcb.sls
+++ b/apache/mod_socache_shmcb.sls
@@ -14,6 +14,10 @@ include:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
     - context:
       module_name: socache_shmcb
 
diff --git a/apache/mod_ssl.sls b/apache/mod_ssl.sls
index affd084345dbdb49347293d44efa60150786a003..f420ecb5465e194dc19aa5d1b0bcb9050462ec1a 100644
--- a/apache/mod_ssl.sls
+++ b/apache/mod_ssl.sls
@@ -14,6 +14,10 @@ a2enmod mod_ssl:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 /etc/apache2/mods-available/ssl.conf:
   file.managed:
@@ -32,12 +36,20 @@ mod_ssl:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {{ apache.confdir }}/ssl.conf:
   file.absent:
     - require:
       - pkg: apache
     - watch_in:
+      - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
       - service: apache
 
 {% elif grains['os_family']=="FreeBSD" %}
@@ -55,6 +67,10 @@ include:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% endif %}
 
@@ -71,6 +87,10 @@ include:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% if grains['os_family']=="Debian" %}
 a2endisconf tls-defaults:
@@ -88,4 +108,8 @@ a2endisconf tls-defaults:
       - file: {{ apache.confdir }}/tls-defaults.conf
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 {% endif %}
diff --git a/apache/mod_suexec.sls b/apache/mod_suexec.sls
index 522b873a32dee3c726fec403cd3208b3599f7427..b4742d780e95cc963d9f4afe4b9cd695abbb3cdd 100644
--- a/apache/mod_suexec.sls
+++ b/apache/mod_suexec.sls
@@ -14,5 +14,9 @@ include:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% endif %}
diff --git a/apache/mod_vhost_alias.sls b/apache/mod_vhost_alias.sls
index 21ac6443344d991f840d6da1acf49b1afcac52fc..c85a3919ddaa1706e3e945248d54dc497a855e14 100644
--- a/apache/mod_vhost_alias.sls
+++ b/apache/mod_vhost_alias.sls
@@ -11,5 +11,9 @@ a2enmod vhost_alias:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% endif %}
diff --git a/apache/mod_wsgi.sls b/apache/mod_wsgi.sls
index fd00ac6b2c9aff40c61cea2a3b2e466e50ed302d..ca2ddafc3624aa6b4297e5c72561f25a272c24f0 100644
--- a/apache/mod_wsgi.sls
+++ b/apache/mod_wsgi.sls
@@ -8,6 +8,12 @@ mod_wsgi:
     - name: {{ apache.mod_wsgi }}
     - require:
       - pkg: apache
+    - watch_in:
+      - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% if 'conf_mod_wsgi' in apache %}
 {{ apache.conf_mod_wsgi }}:
@@ -16,4 +22,10 @@ mod_wsgi:
     - onlyif: test -f {{ apache.conf_mod_wsgi }}
     - require:
       - pkg: mod_wsgi
+    - watch_in:
+      - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 {% endif %}
diff --git a/apache/mod_xsendfile.sls b/apache/mod_xsendfile.sls
index e86f07572e6f5ebee03e78e0b1a2ceb34c06e789..b03cadff1d05a6374a9a5aa7612aa043c1db4434 100644
--- a/apache/mod_xsendfile.sls
+++ b/apache/mod_xsendfile.sls
@@ -9,6 +9,12 @@ mod-xsendfile:
     - order: 180
     - require:
       - pkg: apache
+    - watch_in:
+      - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% if grains['os_family']=="Debian" %}
 a2enmod xsendfile:
@@ -19,6 +25,10 @@ a2enmod xsendfile:
       - pkg: mod-xsendfile
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% endif %}
 
diff --git a/apache/modules.sls b/apache/modules.sls
index adf88c0718d3efe5d0080d6b39991dc03d8c2a2e..15947240602e29cb603c16e1c970e2998a82e918 100644
--- a/apache/modules.sls
+++ b/apache/modules.sls
@@ -12,6 +12,10 @@ a2enmod {{ module }}:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 {% endfor %}
 
 {% for module in salt['pillar.get']('apache:modules:disabled', []) %}
@@ -23,6 +27,10 @@ a2dismod -f {{ module }}:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 {% endfor %}
 
 {% elif grains['os_family']=="RedHat" %}
@@ -39,6 +47,10 @@ find /etc/httpd/ -name '*.conf' -type f -exec sed -i -e 's/\(^#\)\(\s*LoadModule
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 {% endfor %}
 
 {% for module in salt['pillar.get']('apache:modules:disabled', []) %}
@@ -50,6 +62,10 @@ find /etc/httpd/ -name '*.conf' -type f -exec sed -i -e 's/\(^\s*LoadModule.{{ m
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 {% endfor %}
 
 {% elif salt['grains.get']('os_family') == 'Suse' or salt['grains.get']('os') == 'SUSE' %}
@@ -66,6 +82,10 @@ a2enmod {{ module }}:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 {% endfor %}
 
 {% for module in salt['pillar.get']('apache:modules:disabled', []) %}
@@ -77,6 +97,10 @@ a2dismod -f {{ module }}:
       - pkg: apache
     - watch_in:
       - module: apache-restart
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 {% endfor %}
 
 {% endif %}
diff --git a/apache/no_default_vhost.sls b/apache/no_default_vhost.sls
index f316b9e61fc4de0ed8f38177fb2232e5f0487afa..cab12df59d05de966b5aa8b8403194813bfb9dec 100644
--- a/apache/no_default_vhost.sls
+++ b/apache/no_default_vhost.sls
@@ -12,5 +12,9 @@ a2dissite 000-default.conf:
       - pkg: apache
     - watch_in:
       - module: apache-reload
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% endif %}
diff --git a/apache/own_default_vhost.sls b/apache/own_default_vhost.sls
index a04a8b062e28364b91bd1a2e729d64795d5e9065..37ee1b34fd82481c875e6ff55238f37672552215 100644
--- a/apache/own_default_vhost.sls
+++ b/apache/own_default_vhost.sls
@@ -13,5 +13,9 @@ apache_own-default-vhost:
       - pkg: apache
     - watch_in:
       - module: apache-reload
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% endif %}
diff --git a/apache/register_site.sls b/apache/register_site.sls
index 5a55a7a22256547973f056af43f1eac164eb4256..5bb93e709fd5624de1c2dc8b7a0508e893e65bae 100644
--- a/apache/register_site.sls
+++ b/apache/register_site.sls
@@ -49,6 +49,10 @@
     - watch_in:
       - cmd: {{ a2modid }}
       - module: apache-reload
+    - require_in:
+      - module: apache-restart
+      - module; apache-reload
+      - service: apache
 
 {% endif %}
 ##########################################
diff --git a/apache/vhosts/cleanup.sls b/apache/vhosts/cleanup.sls
index 83b7fa8ebca511f7c6be6bde5fe26efe292516d5..e6b3decbac23ff57541bf96fa6f4b523ab60b8da 100644
--- a/apache/vhosts/cleanup.sls
+++ b/apache/vhosts/cleanup.sls
@@ -29,6 +29,10 @@ a2dissite {{ filename }}:
     - onlyif: "test -L {{ dirpath}}/{{ filename }} || test -f {{ dirpath}}/{{ filename }}"
     - watch_in:
       - module: apache-reload
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {%   endif %}
 {% endfor %}
diff --git a/apache/vhosts/standard.sls b/apache/vhosts/standard.sls
index 6ce24840eba84dfd5433bb78dddd97286244ccb8..5ad967b737e2fbd744bea1ac50e733e31124d5e5 100644
--- a/apache/vhosts/standard.sls
+++ b/apache/vhosts/standard.sls
@@ -19,6 +19,10 @@ apache_vhosts_{{ id }}:
       - pkg: apache
     - watch_in:
       - module: apache-reload
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 
 {% if site.get('DocumentRoot') != False %}
 {{ id }}-documentroot:
@@ -39,6 +43,10 @@ a2ensite {{ id }}{{ apache.confext }}:
       - file: /etc/apache2/sites-available/{{ id }}{{ apache.confext }}
     - watch_in:
       - module: apache-reload
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 {% else %}
 a2dissite {{ id }}{{ apache.confext }}:
   cmd.run:
@@ -47,6 +55,10 @@ a2dissite {{ id }}{{ apache.confext }}:
       - file: /etc/apache2/sites-available/{{ id }}{{ apache.confext }}
     - watch_in:
       - module: apache-reload
+    - require_in:
+      - module: apache-restart
+      - module: apache-reload
+      - service: apache
 {% endif %}
 {% endif %}