diff --git a/update-tutorials.sh b/update-tutorials.sh
index 983fcf5b..653d539e 100755
--- a/update-tutorials.sh
+++ b/update-tutorials.sh
@@ -1,7 +1,50 @@
-#!/bin/bash -x
+#!/bin/bash
+set -eo pipefail
+
+if [[ -z "$FROM_VERSION" || -z "$TO_VERSION" ]]; then
+ echo
+ echo "Examples of use: "
+ echo " FROM_VERSION=2.12.0 TO_VERSION=2.13.0 ${0}"
+ echo " FROM_VERSION=2.12.0 TO_VERSION=2.13.0 FROM_VERSION_SDK=2.12.0 TO_VERSION_SDK=2.13.0 ${0}"
+ echo
+ exit 1
+fi
+
+if [[ -z "$FROM_VERSION_SDK" || -z "$TO_VERSION_SDK" ]]; then
+ echo
+ echo "No FROM_VERSION_SDK and TO_VERSION_SDK properties provided. Server SDKs depdendencies won't be updated."
+ echo "To update also server SDKs dependencies, run the script like this:"
+ echo " FROM_VERSION=2.12.0 TO_VERSION=2.13.0 FROM_VERSION_SDK=2.12.0 TO_VERSION_SDK=2.13.0 ${0}"
+ echo
+ read -p "Do you still want to continue? [Y/N]" -r
+ echo
+ if [[ $REPLY =~ ^[Yy]$ ]]; then :
+ else
+ echo "Aborted"
+ exit 1
+ fi
+fi
echo "## Updating openvidu-tutorials"
+echo
+NPM_TUTORIALS="openvidu-insecure-angular
+ openvidu-insecure-react
+ openvidu-library-angular
+ openvidu-library-react
+ openvidu-ionic
+ openvidu-js-node
+ openvidu-mvc-node
+ openvidu-recording-node
+ openvidu-react-native
+ openvidu-electron"
+
+MAVEN_TUTORIALS="openvidu-js-java
+ openvidu-mvc-java
+ openvidu-recording-java
+ openvidu-ipcameras"
+
+# Delete all package-lock.json and node_modules
find -type f -name 'package-lock.json' -exec rm {} \;
find -type d -name 'node_modules' -exec rm -rf {} \;
@@ -14,26 +57,68 @@ find . -type f -name 'package.json' -not \( -path '*/node_modules/*' -o -path '*
# Updating openvidu-angular dependencies in package.json files [openvidu-library-angular]
find . -type f -name 'package.json' -not \( -path '*/node_modules/*' -o -path '*/package-lock.json' \) -exec sed -i "s/\"openvidu-angular\": \"$FROM_VERSION\"/\"openvidu-angular\": \"$TO_VERSION\"/" {} \;
-# Run "npm install" in every npm project [openvidu-insecure-angular, openvidu-insecure-react, openvidu-library-angular, openvidu-library-react, openvidu-ionic, openvidu-js-node, openvidu-mvc-node, openvidu-recording-node]
-for tutorial in openvidu-insecure-angular openvidu-insecure-react openvidu-library-angular openvidu-library-react openvidu-ionic openvidu-js-node openvidu-mvc-node openvidu-recording-node; do
+# If server SDKs must be udpated
+if [[ -n "$FROM_VERSION_SDK" && -n "$TO_VERSION_SDK" ]]; then
+
+ # Updating openvidu-node-client dependencies in package.json files [openvidu-js-node, openvidu-mvc-node, openvidu-recording-node]
+ find . -type f -name 'package.json' -not \( -path '*/node_modules/*' -o -path '*/package-lock.json' \) -exec sed -i "s/\"openvidu-node-client\": \"$FROM_VERSION_SDK\"/\"openvidu-node-client\": \"$TO_VERSION_SDK\"/" {} \;
+
+ # Updating openvidu-java-client dependencies in pom.xml files
+ for tutorial in ${MAVEN_TUTORIALS}
+ do
+ cd $tutorial && mvn --batch-mode versions:use-dep-version -Dincludes=io.openvidu:openvidu-java-client -DdepVersion=$TO_VERSION_SDK -DforceVersion=true && cd ..
+ done
+
+fi
+
+# Run "npm install" in every NPM project
+for tutorial in ${NPM_TUTORIALS}
+do
+ echo "###############################"
+ echo "Compiling NPM project $tutorial"
+ echo "###############################"
+ echo
cd $tutorial && npm install && cd ..
done
-# Update every import in every *.html or *.ejs file (13 files changed)
+# Run "mvn clean compile package" in every Maven project
+for tutorial in ${MAVEN_TUTORIALS}
+do
+ echo "###############################"
+ echo "Compiling Maven project $tutorial"
+ echo "###############################"
+ echo
+ cd $tutorial && mvn clean compile package && cd ..
+done
+
+# Update every import in every *.html or *.ejs file (14 files changed)
for file in *.html *.ejs; do
+ echo "###############################"
+ echo "Updating openvidu-browser