diff --git a/helper/couchdb2_restore_deleted_db.sh b/helper/couchdb2_restore_deleted_db.sh
new file mode 100644
index 0000000000000000000000000000000000000000..2f2eb5f70cfaa9ee0cdde645bd11a17ad2b8dd50
--- /dev/null
+++ b/helper/couchdb2_restore_deleted_db.sh
@@ -0,0 +1,175 @@
+#!/bin/bash
+# ======================================================================
+#
+# HELPER :: COUCHDB 2
+#
+# Move files of a deleted database that it can be restored
+#
+# SYNTAX:
+# ./couchdb2_restore_deleted_db.sh [INSTANCE] [FILEFILTER]
+#
+# If no param is given you will be prompted
+#
+# EXAMPLE
+# ./couchdb2_restore_deleted_db.sh demo-couchdbcluster "part-of-dbname"
+#
+# ----------------------------------------------------------------------
+# 2022-04-22  v0.1  <axel.hahn@iml.unibe.ch>  first lines
+# ======================================================================
+
+
+cd "$( dirname $0 )/.." || exit 1
+
+  . $(dirname $0)/jobhelper.sh
+  . $(dirname $0)/inc_bash.sh
+
+BACKUP_BASEDIR=$( _j_getvar "${JOBFILE}" "dir-localdumps" )/couchdb2
+ARCHIVE_DIR=$(    _j_getvar "${JOBFILE}" "dir-dbarchive"  )/couchdb2
+
+DELETED_DIR=
+COUCHDB_INSTANCE=
+DBDUMP=
+
+# ------------------------------------------------------------
+
+# list deleted database dumps
+# an instance must be set before
+# param  regex  filter to output of ls -1
+function ch.listdbs(){
+        ls -1 $DELETED_DIR | grep "$1"
+}
+
+# list couchdb instances
+function ch.listinstances(){
+        ls -1 $BACKUP_BASEDIR
+}
+
+# select a database dump file
+# param  regex  filter on list of dump files
+function ch.setdb(){
+        local _list
+        typeset -i _count
+
+        _list=$( ch.listdbs "$1" )
+        _count=$( echo "$_list" | wc -l )
+
+        if [ $_count -eq 1 ]; then
+                DBDUMP=$_list
+        else
+                cecho head "----- databases: $_count"
+                echo "$_list"
+                color input
+                echo -n "database dump > "
+                color reset
+                read DBDUMP
+        fi
+
+        if [ ! -f "$DELETED_DIR/$DBDUMP" ]; then
+                cecho error "ERROR: wrong input for db dump"
+                cecho error "File [$DELETED_DIR/$DBDUMP] does not exist."
+                exit 1
+        fi
+
+        echo "INFO: dumpfile $DBDUMP was selected"
+}
+
+# set an instance
+# param  string  name of an instance; if none is given comes an interactive mode
+function ch.setinstance(){
+        local _list
+        typeset -i _count
+
+        if [ -z "$1" ]; then
+                _list=$( ch.listinstances "$1" )
+                _count=$( echo "$_list" | wc -l )
+                cecho head "----- instances: $_count"
+                echo "$_list"
+                color input
+                echo -n "Instance: > "
+                color reset
+                read COUCHDB_INSTANCE
+        else
+                COUCHDB_INSTANCE="$1"
+        fi
+        DELETED_DIR="$ARCHIVE_DIR/$COUCHDB_INSTANCE/deleted_databases"
+        if [ ! -d "$DELETED_DIR" ]; then
+                cecho error "ERROR: invalid instance name."
+                cecho error "[$DELETED_DIR] does not exist"
+                exit
+        fi
+
+        echo "INFO: [$DELETED_DIR] exists"
+        echo "INFO: instance [$COUCHDB_INSTANCE] was set."
+}
+
+# ------------------------------------------------------------
+
+# move data of a backup
+function ch.movedata(){
+
+        local DBNAME="$( echo $DBDUMP | sed 's#__[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9].*##g' | sed 's#.couchdbdump.gz$##' )"
+        local SEQFILE=${DELETED_DIR}/seq/__seq__${DBNAME}
+        local SECURITYFILE=${DELETED_DIR}/security/__security__${DBNAME}.json
+        local T_DBDUMP=$BACKUP_BASEDIR/$COUCHDB_INSTANCE/${DBNAME}.couchdbdump.gz
+        local T_SEQFILE=$ARCHIVE_DIR/$COUCHDB_INSTANCE/seq/__seq__${DBNAME}
+        local T_SECURITYFILE=$ARCHIVE_DIR/$COUCHDB_INSTANCE/security/__security__${DBNAME}.json
+
+        echo "INFO: database name [$DBNAME]"
+        echo "INFO:
+
+        DUMP: $DELETED_DIR/$DBDUMP
+        ----> $T_DBDUMP
+
+        SEQ : $SEQFILE
+        ----> $T_SEQFILE
+
+        SEC : $SECURITYFILE
+        ----> $T_SECURITYFILE
+
+"
+        color input
+        echo -n "RETURN to move backup data; Ctrl + C to abort > "
+        color reset
+        read dummy
+
+        echo "Moving files ..."
+        mv "$DELETED_DIR/$DBDUMP" "$T_DBDUMP" || exit 1
+        ls -l "$T_DBDUMP"
+
+        if [ -f "$SEQFILE" ]; then
+                mv "$SEQFILE" "$T_SEQFILE" || exit 2
+                ls -l "$T_SEQFILE"
+        else
+                echo "SKIP: seq file does not exist $SEQFILE"
+        fi
+        if [ -f "$SECURITYFILE" ]; then
+                mv "$SECURITYFILE" "$T_SECURITYFILE" || exit 2
+                ls -l "$T_SECURITYFILE"
+        else
+                echo "SKIP: security file does not exist $SECURITYFILE"
+        fi
+
+        echo "------ DONE!"
+        # ls -l "$DBDUMP" "$SEQFILE" "$SECURITYFILE"
+
+}
+
+# ------------------------------------------------------------
+
+echo 
+echo ":: HELPER :: Couchdb2 - move files of a deleted database "
+echo
+
+ch.setinstance "$1"
+shift 1
+
+while [ $# -gt 0 ]; do
+    ch.setdb "$1"
+    ch.movedata
+    sleep 3
+    shift 1
+done
+
+echo "$0 finished."
+
+# ------------------------------------------------------------