diff --git a/jams-common/src/main/java/net/jami/jams/common/updater/FullSystemStatusResponse.java b/jams-common/src/main/java/net/jami/jams/common/updater/FullSystemStatusResponse.java
new file mode 100644
index 0000000000000000000000000000000000000000..b9d262caf820f62ff62f6eba1434486765e5b511
--- /dev/null
+++ b/jams-common/src/main/java/net/jami/jams/common/updater/FullSystemStatusResponse.java
@@ -0,0 +1,16 @@
+package net.jami.jams.common.updater;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.HashMap;
+
+@Getter
+@Setter
+public class FullSystemStatusResponse {
+
+    private HashMap<String,FileDescription> localVersions;
+    private HashMap<String, FileDescription> remoteVersions;
+    private Boolean updateAvailable;
+
+}
diff --git a/jams-launcher/pom.xml b/jams-launcher/pom.xml
index c1357c67bb62caa2bb0c2e008c703723157a39e6..89656bc34ed86ca4f30a605da38754ee2acc9101 100644
--- a/jams-launcher/pom.xml
+++ b/jams-launcher/pom.xml
@@ -57,6 +57,8 @@
                                         implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                     <manifestEntries>
                                         <Main-Class>launcher.AppStarter</Main-Class>
+                                        <Implementation-Title>${project.artifactId}</Implementation-Title>
+                                        <Implementation-Version>${project.version}</Implementation-Version>
                                         <Class-Path>.</Class-Path>
                                     </manifestEntries>
                                 </transformer>
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/update/SubscriptionServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/SubscriptionServlet.java
similarity index 96%
rename from jams-server/src/main/java/net/jami/jams/server/servlets/api/update/SubscriptionServlet.java
rename to jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/SubscriptionServlet.java
index d98eb268c63e0377f99cb64b85d5c7e5134084a6..976a5d7c8a74490e5330fd9fa4d9e816e381c65c 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/update/SubscriptionServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/SubscriptionServlet.java
@@ -1,4 +1,4 @@
-package net.jami.jams.server.servlets.api.update;
+package net.jami.jams.server.servlets.api.admin.update;
 
 import com.jsoniter.output.JsonStream;
 import jakarta.servlet.ServletException;
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/update/UpdateServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/UpdateServlet.java
similarity index 51%
rename from jams-server/src/main/java/net/jami/jams/server/servlets/api/update/UpdateServlet.java
rename to jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/UpdateServlet.java
index 3d5464613c9184b396022e96448d36426cf3d246..48f53164eeeabbe0c240c1aaa6c9bccb792915f4 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/update/UpdateServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/UpdateServlet.java
@@ -1,25 +1,35 @@
-package net.jami.jams.server.servlets.api.update;
+package net.jami.jams.server.servlets.api.admin.update;
 
+import com.jsoniter.output.JsonStream;
 import jakarta.servlet.ServletException;
 import jakarta.servlet.annotation.WebServlet;
 import jakarta.servlet.http.HttpServlet;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
+import net.jami.jams.common.updater.FullSystemStatusResponse;
 
 import java.io.IOException;
 
+import static net.jami.jams.server.Server.appUpdater;
+
 @WebServlet("/api/update")
 public class UpdateServlet extends HttpServlet {
 
     //Return the current version number and the available version number.
     @Override
     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-        super.doGet(req, resp);
+        FullSystemStatusResponse response = new FullSystemStatusResponse();
+        response.setLocalVersions(appUpdater.getLocalVersions());
+        response.setRemoteVersions(appUpdater.getRemoteVersions());
+        response.setUpdateAvailable(appUpdater.getUpdateAvailable());
+        resp.getOutputStream().write(JsonStream.serialize(response).getBytes());
     }
 
     //This is the do-update button.
     @Override
     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-        super.doPost(req, resp);
+        if(appUpdater.getUpdateAvailable()){
+            appUpdater.doUpdate();
+        }
     }
 }
diff --git a/updater/src/main/java/net/jami/jams/updater/UpdateCheckTask.java b/updater/src/main/java/net/jami/jams/updater/UpdateCheckTask.java
index 49d20953b7eba551f379a6104e92da03e12b3b43..12b675b4f48f419c8738368b9fb57f231b14ae6e 100644
--- a/updater/src/main/java/net/jami/jams/updater/UpdateCheckTask.java
+++ b/updater/src/main/java/net/jami/jams/updater/UpdateCheckTask.java
@@ -69,7 +69,8 @@ public class UpdateCheckTask extends TimerTask {
             );
             //Compare and set to to true up-stream
             localData.forEach((k,v) -> {
-                if(remoteData.get(k).compareTo(v) > 0){
+                if(remoteData.containsKey(k) && remoteData.get(k).compareTo(v) > 0){
+                    log.info("Detected a new version on SFL servers!");
                     JAMSUpdater.updateAvailable.set(true);
                 }
             });