diff --git a/software/slaprunner/template/runner-import.sh.jinja2 b/software/slaprunner/template/runner-import.sh.jinja2
index 039a65005e307902a2b05fa6259577b8f6dd6807..41e9c46856e75239a1616ab8c9cb307ab8135b7a 100644
--- a/software/slaprunner/template/runner-import.sh.jinja2
+++ b/software/slaprunner/template/runner-import.sh.jinja2
@@ -1,4 +1,5 @@
 #!{{ shell_binary }}
+set -e
 LC_ALL=C
 export LC_ALL
 umask 077
@@ -20,7 +21,7 @@ restore_element () {
 write_backup_proof () {
   cd {{ directory['backup'] }}
   find -type f ! -name backup.signature ! -wholename "./rdiff-backup-data/*" -print0 | xargs -P4 -0 sha256sum  | LC_ALL=C sort -k 66 > $srv_directory/proof.signature
-  diff -ruw {{ directory['backup'] }} $srv_directory/proof.signature > $srv_directory/backup.diff
+  diff -ruw {{ directory['backup'] }} $srv_directory/proof.signature > $srv_directory/backup.diff || true # diff exits with code 1 when files are different
 }
 
 # For now we just make the diff before
@@ -29,7 +30,7 @@ write_backup_proof
 restore_element {{ directory['backup'] }}/runner/ $srv_directory/runner  instance project  proxy.db
 restore_element  {{ directory['backup'] }}/etc/ {{ directory['etc'] }} config.json ssh
 cp -r {{ directory['backup'] }}/etc/.??* {{ directory['etc'] }};
-{{ curl_binary }} --insecure -vg6L --max-time 5  {{ backend_url }}/isSRReady;
+{{ curl_binary }} --insecure -g6L --max-time 5  {{ backend_url }}/isSRReady;
 
 
 # Invoke arbitrary script to perform specific restoration
@@ -40,15 +41,38 @@ if [ ! -e "$runner_import_restore" ]; then
   chmod +x $runner_import_restore
 fi
 echo "Running $runner_import_restore script..."
-$srv_directory/runner-import-restore
+# XXX create exit code file if this failed (same below), and remove this in tidstorage/mariadb
+$srv_directory/runner-import-restore || true
 
+HOME={{ directory['home'] }}
+# XXX hardcoded
+SQLITE3="$HOME/software_release/parts/sqlite3/bin/sqlite3"
+DATABASE="$HOME/srv/runner/proxy.db"
 
+# Change slapproxy database to point instances to new software release
+# XXX hackish and hardcoded
+PARTITION=$(basename $HOME)
+OLD_SOFTWARE_RELEASE=$($SQLITE3 $DATABASE "select software_release from partition11 where reference='slappart0';")
+SOFTWARE_RELEASE=$(echo $OLD_SOFTWARE_RELEASE | sed -e 's/slappart[0-9][0-9]/'"$PARTITION"'/')
+$SQLITE3 $DATABASE "update partition11 set software_release='$SOFTWARE_RELEASE' where software_release NOT NULL;"
+# Change slapproxy database to have all instances stopped
+$SQLITE3 $DATABASE "update partition11 set slap_state='stopped';"
+# Build newest software
+{{ directory['bin'] }}/slapos node software --cfg ~/etc/slapos.cfg --pidfile ~/var/run/slaponode-instance.pid --all || true
+# Remove defined scripts to force buildout to recreate them to have updated paths
+# XXX hack
+rm $srv_directory/runner/instance/slappart*/srv/runner-import-restore
+# Run slapos node instance
+# XXX hardcoded
+{{ directory['bin'] }}/slapos node instance --cfg ~/etc/slapos.cfg --pidfile ~/var/run/slaponode-instance.pid || true
 # Invoke defined scripts for each partition inside of slaprunner
 for partition in $srv_directory/runner/instance/slappart*/
 do
   script=$partition/srv/runner-import-restore
   if [ -e "$script" ]; then
     echo "Running $script script..."
-    $script
+    $script || true
   fi
 done
+# Change back slapproxy database to have all instances started
+$SQLITE3 $DATABASE "update partition11 set slap_state='started';"