diff --git a/cdist/conf/type/__file/gencode-remote b/cdist/conf/type/__file/gencode-remote
index e19d428b..a6f35c0b 100755
--- a/cdist/conf/type/__file/gencode-remote
+++ b/cdist/conf/type/__file/gencode-remote
@@ -23,7 +23,7 @@ destination="/$__object_id"
 state_should="$(cat "$__object/parameter/state")"
 type="$(cat "$__object/explorer/type")"
 stat_file="$__object/explorer/stat"
-
+fire_onchange=''
 
 get_current_value() {
     if [ -s "$stat_file" ]; then
@@ -45,16 +45,19 @@ get_current_value() {
 set_group() {
     echo "chgrp '$1' '$destination'"
     echo "chgrp '$1'" >> "$__messages_out"
+    fire_onchange=1
 }
 
 set_owner() {
     echo "chown '$1' '$destination'"
     echo "chown '$1'" >> "$__messages_out"
+    fire_onchange=1
 }
 
 set_mode() {
    echo "chmod '$1' '$destination'"
    echo "chmod '$1'" >> "$__messages_out"
+   fire_onchange=1
 }
 
 case "$state_should" in
@@ -83,6 +86,7 @@ case "$state_should" in
         if [ "$type" = "file" ]; then
             echo "rm -f '$destination'"
             echo remove >> "$__messages_out"
+            fire_onchange=1
         fi
     ;;
 
@@ -91,3 +95,9 @@ case "$state_should" in
         exit 1
     ;;
 esac
+
+if [ -f "$__object/parameter/onchange" ]; then
+   if [ -n "$fire_onchange" ]; then
+      cat "$__object/parameter/onchange"
+   fi
+fi
diff --git a/cdist/conf/type/__file/man.rst b/cdist/conf/type/__file/man.rst
index a141d70b..7a0603bb 100644
--- a/cdist/conf/type/__file/man.rst
+++ b/cdist/conf/type/__file/man.rst
@@ -63,6 +63,9 @@ source
    If not supplied, an empty file or directory will be created.
    If source is '-' (dash), take what was written to stdin as the file content.
 
+onchange
+   The code to run if file is modified.
+
 MESSAGES
 --------
 chgrp <group>
diff --git a/cdist/conf/type/__file/parameter/optional b/cdist/conf/type/__file/parameter/optional
index c696d592..9b98352c 100644
--- a/cdist/conf/type/__file/parameter/optional
+++ b/cdist/conf/type/__file/parameter/optional
@@ -3,3 +3,4 @@ group
 mode
 owner
 source
+onchange