diff --git a/backup.sh b/backup.sh
index f8fee2ec1eff8664058d113a3763ddcf75634e54..3cfbb13065b238808d33b007b7bc7db55af192ab 100755
--- a/backup.sh
+++ b/backup.sh
@@ -22,23 +22,54 @@
 # ** end header
 #
 
-#dump a database with all procedures, permissions, structure and data
-
-BACKUPDIR=./backup #The directory which the dump is to be stored to. Do not change it here. Use the --backupdir=./my/dir/ option!
-PRINT_HELP="--backupdir=BACKUPDIR\n\tThe directory which the dump is to be stored to. (Defaults to ./backup)\n"
+# Dump a database with all procedures, permissions, structure and data
+
+# The directory which the dump is to be stored to. Do not change it here. Use
+# the --backupdir=./my/dir/ option or an environment variable instead.
+BACKUPDIR="${BACKUPDIR:-./backup}"
+# Iff this (environment) variable is "true" as lower-case, then this script also
+# outputs a machine readable status report.  The variable can also be set by
+# giving the `--yaml` command line option.
+YAML="${YAML:-false}"
+
+PRINT_HELP="--backupdir=BACKUPDIR\n\tThe directory which the dump is to be stored to. (Defaults to ./backup,\n\tcan also be set as an environment variable.)\n"
+
+# YAML string templates #######################################################
+
+YAMLFAIL=$(cat << "EOF"
+#### YAML ####
+error:
+  - code: $error_code
+  - message: $error_message
+#### YAML END ####
+EOF
+        )
+
+YAMLSUCCESS=$(cat << "EOF"
+#### YAML ####
+error:
+  - code: 0
+  - message: Backup successfully created
+backup:
+  - location: $file_location
+  - date: $date
+#### YAML END ####
+EOF
+        )
+
+# Config and command line parameter loading ###################################
 
 . .config
-# load useful stuff - scans the parameters and so on...
-. patches/utils/patch_header.sh
-
-#create backup dir if not exists
-[ -d $BACKUPDIR ] || mkdir $BACKUPDIR
 
+# load useful stuff - parses the commandline parameters and so on...
+. patches/utils/patch_header.sh
 
+echo "BACKUPDIR: $BACKUPDIR"
+echo "YAML: $YAML"
 
-function backup {
-    NARG_NAME=$1
-    NARG_FILE=$2
+function backup() {
+    NARG_NAME="$1"
+    NARG_FILE="$2"
     shift 2
     echo $MYSQLDUMP_CMD
 	# parameters: connection, database, outfile
@@ -50,15 +81,31 @@ function backup {
 	success
 }
 
+# Prints a YAML failure message, if YAML is true.
+#
+# Arguments:
+# - $1  Error code, integer > 0
+# - $2  Error message
+function yaml_fail() {
+    err_code="$1"
+    err_msg="$2"
+    local yaml="${YAML_FAIL/\$err_code/$err_code}"
+    yaml="${yaml/\$err_msg/$err_msg}"
+    echo "$yaml"
+}
 
+# Prints a YAML success message, if YAML is true.
+function yaml_success() {
 
-
+}
 
 ##test dump file exists
 #touch dumpfile.tmp
 #backup 0 1 2 "dumpfile.tmp"
 #rm dumpfile.tmp
 
+# create backup dir if not exists
+[ -d "$BACKUPDIR" ] || mkdir "$BACKUPDIR" || 
 
 DATE=$(date -u --rfc-3339=ns | sed 's/ /T/g')
 BACKUPFILE=${BACKUPDIR}/${DATABASE_NAME}.${DATE}.dump.sql
diff --git a/patches/utils/patch_header.sh b/patches/utils/patch_header.sh
index 7cb477b93f635679f8fdf529623fa36663e49eaa..bc0045c8a8f43a9761c27d7cc16fb4f719df8e51 100644
--- a/patches/utils/patch_header.sh
+++ b/patches/utils/patch_header.sh
@@ -25,7 +25,7 @@
 CMD_MYSQL=mysql
 CMD_MYSQL_DUMP=mysqldump
 USAGE="$1 [ --env=ENV_FILE ] [ --patch=PATCH ] [ --backupdir=BACKUPDIR ]\n\n"
-CMD_OPTIONS=cat <<EOF
+CMD_OPTIONS=$(cat <<EOF
 options:
 
 -h, --help
@@ -37,7 +37,10 @@ options:
 --patch=PATCH
     *TODO* Please document this option.
 --backupdir=BACKUPDIR
-    *TODO* Please document this option.
+    The directory where backup files are stored to.
+--yaml[=True|False]
+    If given (and the optional value is not False), additional machine-readable
+    YAML output is emitted.  Only implemented for some commands yet.
 
 This script basically uses the same environment variables as the server
 configuration make file.  Notable examples are:
@@ -50,6 +53,7 @@ configuration make file.  Notable examples are:
 - DATABASE_USER_PW
 
 EOF
+              )
 set -e
 
 function _print_help() {
@@ -79,7 +83,14 @@ while test $# -gt 0; do
   ;;
  --backupdir*)
   BACKUPDIR="${1#--*=}"
-  echo "Warning: BACKUPDIR is not used currently."
+  shift
+  ;;
+ --yaml*)
+     if [[ "$1" == "--yaml" ]] ; then
+         YAML="True"
+     else
+         YAML="${1#--*=}"
+     fi
   shift
   ;;
  *)