diff --git a/patches/applyPatches.sh b/patches/applyPatches.sh
index bec377c249e18ce0272fb4ce0fed3fde522b65b6..ebb4493cab6a5761cf2ab4600ffad0ee5de65abf 100755
--- a/patches/applyPatches.sh
+++ b/patches/applyPatches.sh
@@ -27,13 +27,12 @@
 #apply all available patches.
 set -e
 PATCHES="./patch*/patch.sh"
-export UTILSPATH="./utils"
+export UTILSPATH="../utils"
 
 for p in $PATCHES
 do
     $p "$@" --patch=$p
 done
 
-source ./utils/patch_header.sh
 cd ../
 ./update_sql_procedures.sh
diff --git a/patches/utils/patch_header.sh b/patches/utils/patch_header.sh
index 53a5d578eb5e1a5d80e34a5168a828a5c8a255cf..de6581548b32fd04cb192b20b1a0eaeaa7d6e318 100644
--- a/patches/utils/patch_header.sh
+++ b/patches/utils/patch_header.sh
@@ -23,8 +23,8 @@
 #
 #header for patch scripts
 
-. ../../utils/load_settings.sh
-. ../../utils/helpers.sh
+. load_settings.sh
+. helpers.sh
 
 USAGE="$1 [ --env=ENV_FILE ] [ --patch=PATCH ] [ --backupdir=BACKUPDIR ]\n\n"
 CMD_OPTIONS=$(cat <<EOF
diff --git a/utils/patch_header.sh b/utils/patch_header.sh
new file mode 100644
index 0000000000000000000000000000000000000000..53a5d578eb5e1a5d80e34a5168a828a5c8a255cf
--- /dev/null
+++ b/utils/patch_header.sh
@@ -0,0 +1,123 @@
+#
+# ** header v3.0
+# This file is a part of the CaosDB Project.
+#
+# Copyright (C) 2018 Research Group Biomedical Physics,
+# Max-Planck-Institute for Dynamics and Self-Organization Göttingen
+# Copyright 2019 Daniel Hornung
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+# ** end header
+#
+#header for patch scripts
+
+. ../../utils/load_settings.sh
+. ../../utils/helpers.sh
+
+USAGE="$1 [ --env=ENV_FILE ] [ --patch=PATCH ] [ --backupdir=BACKUPDIR ]\n\n"
+CMD_OPTIONS=$(cat <<EOF
+options:
+
+-h, --help
+    Show brief help.
+--env=ENV_FILE
+    A file where variables are stored in the format of shell environment
+    variables.  Content of this file overrides environment variables already
+    present.
+--patch=PATCH
+    *TODO* Please document this option.
+--backupdir=BACKUPDIR
+    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:
+
+- LOGIN_PATH
+- MYSQL_HOST
+- MYSQL_PORT
+- DATABASE_NAME
+- DATABASE_USER
+- DATABASE_USER_PW
+
+EOF
+              )
+set -e
+
+function _print_help() {
+  echo -e "$USAGE"
+  echo -e "$CMD_OPTIONS"
+  if [ -n "$PRINT_HELP" ]; then
+    echo -e "$PRINT_HELP"
+  fi
+  if [ -n "$1" ]; then
+    echo -e "$1"
+  fi
+}
+
+while test $# -gt 0; do
+ case "$1" in
+ -h|--help)
+  _print_help
+  exit 0
+  ;;
+ --env*)
+  ENV_FILE="${1#--*=}"
+  shift
+  ;;
+ --patch*)
+  PATCH="${1#--*=}"
+  shift
+  ;;
+ --backupdir*)
+  BACKUPDIR="${1#--*=}"
+  shift
+  ;;
+ --yaml*)
+     if [[ "$1" == "--yaml" ]] ; then
+         YAML="True"
+     else
+         YAML="${1#--*=}"
+     fi
+  shift
+  ;;
+ *)
+  echo "Unknown option $1"
+  exit 1
+  shift
+  ;;
+ esac
+done
+
+
+if [ -n "$PATCH" ]; then
+    echo -ne "applying patch $PATCH to $DATABASE_NAME ... "
+fi
+# @param $1: db version string, e.g. v2.0.0
+# @return: 0 on success, 1 on failure
+function check_version {
+    local version=$($MYSQL_CMD $MYSQL_CONNECTION -B -e "Select CaosDBVersion();")
+	  if [[ "$(echo $version | sed 's/^CaosDBVersion()\s//')" = "$1" ]]; then
+        return 0
+	  fi
+    uptodate
+}
+
+# @param $1: new version string
+function update_version {
+    mysql_execute "DROP FUNCTION IF EXISTS CaosDBVersion; CREATE FUNCTION CaosDBVersion() RETURNS VARCHAR(255) DETERMINISTIC RETURN '$1';"
+}