diff --git a/openvidu-call/openvidu-call-back-java/.gitignore b/openvidu-call/openvidu-call-back-java/.gitignore
new file mode 100644
index 00000000..950fc085
--- /dev/null
+++ b/openvidu-call/openvidu-call-back-java/.gitignore
@@ -0,0 +1,24 @@
+# Compiled class file
+*.class
+
+# Log file
+*.log
+
+# BlueJ files
+*.ctxt
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.ear
+*.zip
+*.tar.gz
+*.rar
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+
+target/
diff --git a/openvidu-call/openvidu-call-back-java/README.md b/openvidu-call/openvidu-call-back-java/README.md
new file mode 100644
index 00000000..073cee1e
--- /dev/null
+++ b/openvidu-call/openvidu-call-back-java/README.md
@@ -0,0 +1,25 @@
+# openvidu-basic-java
+
+This is a minimal OpenVidu server application sample built for Java with Spring Boot. Visit [Application server](https://docs.openvidu.io/en/stable/application-server/) documentation for further context.
+
+It internally uses [openvidu-java-client SDK](https://docs.openvidu.io/en/stable/reference-docs/openvidu-java-client/).
+
+## Prerequisites
+
+- [Java (>=11)](https://www.java.com/en/download/manual.jsp)
+- [Maven](https://maven.apache.org)
+
+## Run
+
+Download repository
+
+```
+git clone git@github.com:OpenVidu/openvidu-tutorials.git
+cd openvidu-tutorials/openvidu-basic-java
+```
+
+Run the application
+
+```
+mvn spring-boot:run
+```
\ No newline at end of file
diff --git a/openvidu-call/openvidu-call-back-java/pom.xml b/openvidu-call/openvidu-call-back-java/pom.xml
new file mode 100644
index 00000000..e7218964
--- /dev/null
+++ b/openvidu-call/openvidu-call-back-java/pom.xml
@@ -0,0 +1,56 @@
+
+ 4.0.0
+
+ io.openvidu
+ openvidu-call-back-java
+ 2.22.0
+ jar
+
+ openvidu-call-back-java
+ https://github.com/OpenVidu/openvidu-tutorials/tree/master/openvidu-call/openvidu-call-back-java
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.7.0
+
+
+
+ UTF-8
+ 11
+ 11
+ 11
+ io.openvidu.basic.java.App
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ io.openvidu
+ openvidu-java-client
+ 2.22.0
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
diff --git a/openvidu-call/openvidu-call-back-java/src/main/java/io/openvidu/call/java/App.java b/openvidu-call/openvidu-call-back-java/src/main/java/io/openvidu/call/java/App.java
new file mode 100644
index 00000000..8ad23261
--- /dev/null
+++ b/openvidu-call/openvidu-call-back-java/src/main/java/io/openvidu/call/java/App.java
@@ -0,0 +1,13 @@
+package io.openvidu.call.java;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class App {
+
+ public static void main(String[] args) {
+ SpringApplication.run(App.class, args);
+ }
+
+}
diff --git a/openvidu-call/openvidu-call-back-java/src/main/java/io/openvidu/call/java/controllers/AdminController.java b/openvidu-call/openvidu-call-back-java/src/main/java/io/openvidu/call/java/controllers/AdminController.java
new file mode 100644
index 00000000..621fa47e
--- /dev/null
+++ b/openvidu-call/openvidu-call-back-java/src/main/java/io/openvidu/call/java/controllers/AdminController.java
@@ -0,0 +1,95 @@
+package io.openvidu.call.java.controllers;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.CookieValue;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import io.openvidu.call.java.services.OpenViduService;
+import io.openvidu.java.client.OpenViduHttpException;
+import io.openvidu.java.client.OpenViduJavaClientException;
+import io.openvidu.java.client.Recording;
+
+@CrossOrigin(origins = "*")
+@RestController
+@RequestMapping("admin")
+public class AdminController {
+
+ @Value("${ADMIN_SECRET}")
+ private String ADMIN_SECRET;
+
+ @Autowired
+ private OpenViduService openviduService;
+
+ @PostMapping("/login")
+ public ResponseEntity