diff --git a/jams-common/src/main/java/net/jami/jams/common/updater/AppUpdater.java b/jams-common/src/main/java/net/jami/jams/common/updater/AppUpdater.java
index f87c49e8b650ba1c63e5d69d3b0d9dcb1eca7d74..4b67f562f761aa97a809c9e6a8857763e6aeae6e 100644
--- a/jams-common/src/main/java/net/jami/jams/common/updater/AppUpdater.java
+++ b/jams-common/src/main/java/net/jami/jams/common/updater/AppUpdater.java
@@ -1,9 +1,12 @@
 package net.jami.jams.common.updater;
 
+import java.util.HashMap;
+
 public interface AppUpdater {
 
-    String getLocalVersions();
-    String getRemoteVersions();
+    HashMap<String,FileDescription> getLocalVersions();
+    HashMap<String,FileDescription> getRemoteVersions();
+    boolean getUpdateAvailable();
     void setLicense();
     void doUpdate();
 
diff --git a/jams-common/src/main/java/net/jami/jams/common/updater/subscription/LicenseInformation.java b/jams-common/src/main/java/net/jami/jams/common/updater/subscription/LicenseInformation.java
index 6954ac8b3fa04867bbe1a5b9927e795fb60d7ec4..a406d9069d3c80ed6489311ad9ec36bbf37c2ab8 100644
--- a/jams-common/src/main/java/net/jami/jams/common/updater/subscription/LicenseInformation.java
+++ b/jams-common/src/main/java/net/jami/jams/common/updater/subscription/LicenseInformation.java
@@ -1,6 +1,7 @@
 package net.jami.jams.common.updater.subscription;
 
 import lombok.Getter;
+import lombok.NoArgsConstructor;
 import lombok.Setter;
 
 import java.util.ArrayList;
@@ -8,10 +9,13 @@ import java.util.List;
 
 @Getter
 @Setter
+@NoArgsConstructor
 public class LicenseInformation {
 
     //TODO: Possibly add the expiry date here based on the certificate.
     private SubscriptionType type = SubscriptionType.COMMUNITY;
     private List<String> products = new ArrayList<>();
 
+
+
 }
diff --git a/jams-common/src/main/java/net/jami/jams/common/utils/X509Utils.java b/jams-common/src/main/java/net/jami/jams/common/utils/X509Utils.java
index 93c6756e1def2d289cfa06d9927b30318ce5fb6b..2e4801f8e621c7681077a6712d39ab947fd17c1d 100644
--- a/jams-common/src/main/java/net/jami/jams/common/utils/X509Utils.java
+++ b/jams-common/src/main/java/net/jami/jams/common/utils/X509Utils.java
@@ -173,10 +173,9 @@ public class X509Utils {
             LdapName ln = new LdapName(certificate.getSubjectDN().toString());
             for (Rdn rdn : ln.getRdns()) {
                 try {
-                    return JsonIterator.deserialize(Base64.getDecoder().decode(((String) rdn.getValue()).getBytes()),
+                    return JsonIterator.deserialize(Base64.getDecoder().decode(rdn.getValue().toString().getBytes()),
                             LicenseInformation.class);
-                } catch (IllegalArgumentException e) {
-                    //Do nothing here, because this is not critical and thit wi
+                } catch (Exception e) {
                 }
             }
             return null;
diff --git a/jams-common/src/test/java/net/jami/jams/common/utils/VersioningUtilsTest.java b/jams-common/src/test/java/net/jami/jams/common/utils/VersioningUtilsTest.java
index 0cafd76b7e285fdec3ed28e53b49f463e8697cf8..682704d7c5a22732d15db3eae6bf35451412e0b8 100644
--- a/jams-common/src/test/java/net/jami/jams/common/utils/VersioningUtilsTest.java
+++ b/jams-common/src/test/java/net/jami/jams/common/utils/VersioningUtilsTest.java
@@ -13,7 +13,7 @@ class VersioningUtilsTest {
     @Disabled
     public void testFileScan(){
         HashMap<String, FileDescription> res = VersioningUtils.checkVersion(null);
-        Assertions.assertEquals(6,res.size(),"Incorrect number of versions detected!");
+        Assertions.assertEquals(7,res.size(),"Incorrect number of versions detected!");
     }
 
 
diff --git a/jams-server/src/main/java/net/jami/jams/server/licensing/LicenseService.java b/jams-server/src/main/java/net/jami/jams/server/licensing/LicenseService.java
index 8b0d5b1f1de30d62415b492d6a163c03f4f0d9ba..2cda30c14695c034a22bc92afb7e31403561c485 100644
--- a/jams-server/src/main/java/net/jami/jams/server/licensing/LicenseService.java
+++ b/jams-server/src/main/java/net/jami/jams/server/licensing/LicenseService.java
@@ -55,6 +55,8 @@ public class LicenseService {
             //If all these checks have passed then:
             Server.activated.set(true);
             licenseInformation = X509Utils.extractSubscriptionTypeFromCertificate(certificate);
+            log.info("Server is activated with valid license: {}", Server.activated.get());
+            log.info("License type: {}",licenseInformation.getType());
         }
         catch (Exception e){
             log.error("A generic occurred while trying to load your license or your license could not be found");
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/update/NeedsUpdateServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/update/NeedsUpdateServlet.java
deleted file mode 100644
index bdf31aa6236c03d0c1b2aa49ba0e9c20dd87b159..0000000000000000000000000000000000000000
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/update/NeedsUpdateServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package net.jami.jams.server.servlets.api.update;
-
-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.ca.JamsCA;
-
-import java.io.IOException;
-
-@WebServlet("/api/checkupdate")
-public class NeedsUpdateServlet extends HttpServlet {
-
-    @Override
-    protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
-        resp.setHeader("Access-Control-Allow-Origin", JamsCA.serverDomain);
-        resp.setContentType("application/json");
-    }
-
-    @Override
-    protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-
-    }
-}
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/update/SubscriptionServlet.java
index 8aef26c9406b6fed42e424b128c0e0ea3edc3324..d98eb268c63e0377f99cb64b85d5c7e5134084a6 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/update/SubscriptionServlet.java
@@ -30,7 +30,7 @@ public class SubscriptionServlet extends HttpServlet {
     // on disk..
     @Override
     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-        //Create the keystore based on the uploadaded keypair.
+        req.getInputStream().readAllBytes();
 
     }
 }
diff --git a/jams-server/src/main/resources/oem/ca.crt b/jams-server/src/main/resources/oem/ca.crt
new file mode 100644
index 0000000000000000000000000000000000000000..4e4a1fdcdc732799485e301a3686560a26e1ef96
--- /dev/null
+++ b/jams-server/src/main/resources/oem/ca.crt
@@ -0,0 +1,35 @@
+-----BEGIN CERTIFICATE-----
+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
+-----END CERTIFICATE-----
diff --git a/jams-server/src/test/java/net/jami/jams/server/licensing/LicenseServiceTest.java b/jams-server/src/test/java/net/jami/jams/server/licensing/LicenseServiceTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..e629ce7a25fbd33f0506d9fac2e93c679237e054
--- /dev/null
+++ b/jams-server/src/test/java/net/jami/jams/server/licensing/LicenseServiceTest.java
@@ -0,0 +1,15 @@
+package net.jami.jams.server.licensing;
+
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class LicenseServiceTest {
+
+    @Test
+    public void loadLicenseTest(){
+        LicenseService licenseService = new LicenseService();
+        licenseService.loadLicense();
+    }
+
+}
\ No newline at end of file
diff --git a/jams-server/src/test/resources/oem/ca.crt b/jams-server/src/test/resources/oem/ca.crt
new file mode 100644
index 0000000000000000000000000000000000000000..4e4a1fdcdc732799485e301a3686560a26e1ef96
--- /dev/null
+++ b/jams-server/src/test/resources/oem/ca.crt
@@ -0,0 +1,35 @@
+-----BEGIN CERTIFICATE-----
+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
+-----END CERTIFICATE-----
diff --git a/samples/license.dat b/samples/license.dat
new file mode 100644
index 0000000000000000000000000000000000000000..6fc3172735bd59eeeb6a8fdbd2d5ee5493836107
--- /dev/null
+++ b/samples/license.dat
@@ -0,0 +1 @@
+LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZxekNDQTVNQ0FRNHdEUVlKS29aSWh2Y05BUUVMQlFBd2dac3hDekFKQmdOVkJBWVRBa05CTVFzd0NRWUQKVlFRSUV3SlJRekVSTUE4R0ExVUVCeE1JVFc5dWRISmxZV3d4SURBZUJnTlZCQW9URjFOaGRtOXBjaTFtWVdseQpaU0JNYVc1MWVDQkpibU11TVEwd0N3WURWUVFMRXdSS1FVMVRNUm93R0FZRFZRUURFeEZLUVUxVElFeHBZMlZ1CmMybHVaeUJEUVRFZk1CMEdDU3FHU0liM0RRRUpBUllRYzNWd2NHOXlkRUJxWVcxcExtNWxkREFlRncweU1EQXkKTVRneE56RTNNVFJhRncweU1UQXlNVGN4TnpFM01UUmFNSUdhTVFzd0NRWURWUVFHRXdKRFFURVpNQmNHQTFVRQpDZ3dRVTJGMmIybHlSbUZwY21WTWFXNTFlREVOTUFzR0ExVUVBd3dFZEdWemRERmhNRjhHQTFVRURReFlaWGxLCk1HVllRbXhKYW05blNXeENVMUpWTVVwV1ZUQnBURU5CYVdOSVNuWmFTRlpxWkVoTmFVOXBRbUpKYTBaRlVUQTUKVDFSclZrUldSVGxUU1dsM1owbHJlRVZSVmtKRVZEQTFUMUpWVGxWVU1VbHBXRmd3UFRDQ0FpSXdEUVlKS29aSQpodmNOQVFFQkJRQURnZ0lQQURDQ0Fnb0NnZ0lCQU5RcWRJMTlQT0pPc0tOQWJkd3dPSGZmaUZWQUtKTXBqNDQxCjkvaENLQW82ZklaZm9lSGZ6bHRkUTR3S2tFK1FlbHZsdmpoOThGQjRLTzZGMWh1M2FoNGVXTDNxVUF2MWc0cFQKd08yY0s2VDNYSDU1MHIxOEQ1ajIvS08reTBlZWlidHhRc3ZwazFFeVJTUVlsWGZqZnBmS3V3bU1CZ2lHRVFLeApsaEtUdzZnKzBtVHhIa1A1YjcrdVJSc0xYUkpWc0VMRVBYOFZpdk4xQWRUMk5QZjczNEFIOTVra2RoKzVrdlpMCnNwN2ZZRHQ3Q1JJUjNRY0UzejJzRUt3dG51UjZLNEtPQlZjeENCVGgwZjBtWEhicHcySmVBK2pZQ2xrc3ZqOFUKc2JCb1pLTi9FUzRqOEYvN0RhR29qY1JyNEZlcDl0c2lTelQwY3ZMOTM1Zys0UTVSQlBQSkpLUmFsWS81dUJVVQoveFltTDBDajFEWkx3VWpGSXp5OGMwakM0U3FFbmRSRlVtaHN1MHllamFjam5ZRmYyRVY1dkdWM0xnRFY5M2JaCjJxNWVLQjVLRE5TMDVqVGEyZWVNUklJSzVjeDgyQ1NZT0ZxQSswazhTbm1UdllNdy9FUkZvVFdoelVZRDhBL0cKNWFBekFoOEZXd091Mkt1VlJaVW8zd1E2RHc3ejBicE9uSEprNjBUN0Z2QTJqYWVLL3k4WlNvYzFGbElETUVCNwp5VEY1bGVKUTRLVExWL2UzTytSdWJ5TklQRS9LL1kvOE5CMFc0eUc0R014d0FObUd4MmlxbEJiZjJHdG5obE1TCklUc09qV0tJY0R1SzV0SEd6MUdJbzNxK1haOUZoRmlSNnVpMDV1SW1GK1MrNmMvaFFPNXBYSTNhODRncE9mQTQKNS9Hb2xTSWJBZ01CQUFFd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dJQkFDcGFqTk1tMTh3NnAxc1IxUzVlZk5JTgppOXZYZ2U2eDRXM3RKTkhFTnhuVW9FWUVUK29NejRNWXBnVXZoNC9pKy8xK25YRnZSdlZIUkdpTnFsd2xUTVRTClYvdFFkSzgvMEdqNjVkZlJvWm1ZT3pqRGFhd05oMFlNSDNqZU9CbzBuN3lvRWxTNldBODJ3OFowSGs5VUFvQzQKWnZqS20vUk1Fc1ZGUlpoVXVnQzY0V1J3a3VXYjEwTnU4dW9WK2QwaXk0K0tmSFJPM3FMZkVJR3pUTjhEVmNKKwpRZ0pGZ1NteFNZSWlUT1ZmWm9MUzR1MFQ3cTJXbkI2cGFXNngxYTVYMWhNRTNheW1Ya3p0bGRVTERrdklNWkJ2ClZwcmNia3piV3FucDc5N0ZJQTVzNjhFeDBaODV3T0dQM1E1NDhyYW5Va29aMVVCd3huVDMrWFBhNUFoWiswSTUKOTYwNWhrSHo5UlJMRzFFTEs1bHVPNWNXY2xab0kxMTBMYW91WHJIWGtWNEZDQWoxbDV0QnhkdGFpbmlvcHlTaApMM2crTjROR0htL2lHWkJzUnZtV2M3U1d3eTl4VzAvY2R5TkRBTjlreEhCNHRQcTRLZzhTYzkzeHhLNTZDd3R6CmpkMmJuSHFKa2FwMWZZUkc1OHAzTGF2Wnp0S3V6VTJnU0UvQnpXaDRVdDJqYTNEUDNnL0dkNkg0aW1YMytXTDEKSDBHSWFUcUJlZ29DVXFjaCtyMG83UllBVVVodHlIREc4ckxUaUF6emNEcnJyNkxHTWxYbU4yUnJPRDVySm9zVAppRE1VMWxxR2NHRFNQRjE0UXlZb2p5b3NxbURvQUlmSWZWWUJ5cHZtZEI0VWdvTVdCRHFmUEtESUpPWUswS2NRCmZ3Sm9YMkZ6YlR2bTJSV1hzd0wrCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpRd0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQ1Mwd2dna3BBZ0VBQW9JQ0FRRFVLblNOZlR6aVRyQ2oKUUczY01EaDMzNGhWUUNpVEtZK09OZmY0UWlnS09ueUdYNkhoMzg1YlhVT01DcEJQa0hwYjViNDRmZkJRZUNqdQpoZFlidDJvZUhsaTk2bEFMOVlPS1U4RHRuQ3VrOTF4K2VkSzlmQStZOXZ5anZzdEhub203Y1VMTDZaTlJNa1VrCkdKVjM0MzZYeXJzSmpBWUloaEVDc1pZU2s4T29QdEprOFI1RCtXKy9ya1ViQzEwU1ZiQkN4RDEvRllyemRRSFUKOWpUMys5K0FCL2VaSkhZZnVaTDJTN0tlMzJBN2V3a1NFZDBIQk44OXJCQ3NMWjdrZWl1Q2pnVlhNUWdVNGRIOQpKbHgyNmNOaVhnUG8yQXBaTEw0L0ZMR3dhR1NqZnhFdUkvQmYrdzJocUkzRWErQlhxZmJiSWtzMDlITHkvZCtZClB1RU9VUVR6eVNTa1dwV1ArYmdWRlA4V0ppOUFvOVEyUzhGSXhTTTh2SE5Jd3VFcWhKM1VSVkpvYkx0TW5vMm4KSTUyQlg5aEZlYnhsZHk0QTFmZDIyZHF1WGlnZVNnelV0T1kwMnRubmpFU0NDdVhNZk5na21EaGFnUHRKUEVwNQprNzJETVB4RVJhRTFvYzFHQS9BUHh1V2dNd0lmQlZzRHJ0aXJsVVdWS044RU9nOE84OUc2VHB4eVpPdEUreGJ3Ck5vMm5pdjh2R1VxSE5SWlNBekJBZThreGVaWGlVT0NreTFmM3R6dmtibThqU0R4UHl2MlAvRFFkRnVNaHVCak0KY0FEWmhzZG9xcFFXMzloclo0WlRFaUU3RG8xaWlIQTdpdWJSeHM5UmlLTjZ2bDJmUllSWWtlcm90T2JpSmhmawp2dW5QNFVEdWFWeU4ydk9JS1Rud09PZnhxSlVpR3dJREFRQUJBb0lDQUFiYytMZzYvT1UxTm5HUmUveExjd2d0CnF2TlhCL2o2dHpJYWZOTURFTmlEMjlOYzlKZWg3Y0wyMldDR1Z2Uzc3N2xaVFRYMm5QZDlhNVdMcnNsbXZZQUwKNjBMNWVXMXBtNysxeGQvcDFWK1l3TjAyZzZLdGlMT2lDYm9pU2VFZk44VmdmSkNzRlovaXlHbktnY3RIQ0tsUQpYWXlKZ3doempjbFFoVkpFaFdmRDRIcHpjazh3bW5UUTVsdGhtcmtsSEhhTWNwRFIyWlRXakNDZmRrY3ZWcU9GCm5uVE53U1IxbEZOelQydmtQZkN1b2pSN2IzTHlyV1lKVXVDKytRemJCdDFLU3RIdlBCdXcwbUltQTRlMU9DVE8KZGNIcWV5czNUMUFyRXpScHJCZTkzSWhwa1RVSm9mOUF2SlZHQ0JQTjQ3WmkvWnZRN0liL3YyUGxaTkpadkpjMwpLYTJ6dmZoMlNFUVhjRDlDTlJDdnNlV1hQSVYzSkd4VGlWR2VjMzVydEhIbVMwUExrdGJDVTh1dXczWWlXR3dtCk9lcHhiY2xvWjBiMHdTQXFtWTJsTFUzMlR6UG10V01ValExZkRlelFIM1ZzRVBIZUpZbEswS0JUbkdSOXRmTVUKL0JtRUxHbUgrblYvd0owTExrS0VNa0dPTXBIV1VQa0o5TGZ2TGVGWlEyNjZrWVNGYnRhblpKbkRYaXI3UzBQUwpScUhtSHFOWXlBQ2ZxNGJNVFBIRDdCRkJOdkZCWFpvWHlwNDZTVFdWMmdtSmFYQWNCSG55cFBjVGJodG9KUkFkCjNqdFF1NzZHU1ZxWlNTcGg0anVYeDhHSE1oRnlSMjJVVno5blZpeXE3VUlJd1NPQUJSMGV6UUNGRE9ENXpIZ3YKQ0x6WVY3RWUzSDMraVllV1JySkJBb0lCQVFEMUNucmgxYm0zbFR2SGJPTHp6OW9VVUVUM3h5b0diQXhNaTNiNgowZ0xHb25CUEpSaUJhUFNUWHdsbWRqWkVCY25PU3N6WGtNcTB1QkZsK0xiYTE4M3dsVTc0L2dvMHJRajNPeVdrClRWVzBJdFY1bUVGQUtSN1YxMzdMUi9uSFBmbUorQjlIdEh2dTIrVnh1c3RXcnVZMUszMHpqUHl5VndpeEZra1MKVFo1RTl2bWlNbE1jMk5uVmF4WmdBYUhjZnJBcTl0UEErT0tWVktWc0dYSXppMFZNNWF6UEd5d2FsK3RYbUo3Vwp2YmxaR0UvRmRxYTBycmd2eG1OSUw0UzA3ajlZdHMwMHAramY2YmxQVHRJUnBzQ3lTM2VUSEZRVW9VbThMd2o1CkM1YkVJQlMzbkNQWkpTRHFWbER0VGx1Q0luSVpEY0JrMExpL2JjUWkxVjBhWDhKdEFvSUJBUURkcDVVRGFsRmwKeXFjYTBDOEpSdVo0Qk1EanFWOEc4THVOSzhrZGEwNTYrcmExeTMxMm1KVS9DaVdrSTgzSjRoOFgzNlRITWFPQwp2QmV1elJYNTdiK1kzb0ptUlpyMk0ycHNjbTFMSmdFcHd5RktTMVk1S2lTUHdkQzdWSzNlVnRTRnFVU3dVd2RnCjZmYmRtMGRjYU1DNlcwUzhmUEptOEk4REtoS1lGSFNtaklFb0NhRGJlRk0xczNDTE5FL2oySU1Ya2YxRHY0MXkKU0prck0xQXpQQjFrMkloQXpXY2JWRmNjRUxnRVpuUEg2eDd6dVdvaDVIb1BzczZLc1pldit2RHZoeXJoWnJLVwpIZkZhQ1FnRUVtaVk0UHdmN2lnbzVaZy95K2JWRWNxTHlSbVdUVW9JSHRiNnhuMWFJZmpnNEd0M3pkbmp0MmRCCmd5SVBYaWhoK21HbkFvSUJBUUMvMC9GNDVDRGNlQVp4UzJ1c0pMWjdtbzh6VGdZM090U3lBNmdrR000MWhDcloKdXBlaGozR1FBU0ZSeGc4YlYxQ3huMXNYRW5HdDRqODBqZTFRQ3d0Y1lQYU85QWszVFpLc1FQQnAzR1RRZlVpVApSVDhucEVsUWJNQUZFWmFYaEl2YWw1U2RSTXlVcEM3TnhzYXlXSDg5ZG9zd0ZSb3AzdnFkNzIxSzE5cWo4SmhpCmduVVFLeTcwNVQyQjhTVXVnVHNXbDE0VVBvTGJGb1hkeDFuZ3doR0JibmZITm1WamVEU3p3WFh2ZEYwcVExOEgKbmFoSjRGR3VqT2RpTmxqMGIyTEY1MjFqNEdMdEQ0S1RkSWY5YTRhRXpaR1JaK2JtczVFT3NkK2JYNWdxZDFiZwptbXB4N3FBQzg0bXRETitVVTdUd3FoUkltQ0ZaTXV3TnZPeUMzaDVOQW9JQkFRQ1VKTjlwaXZPZ1R4UGt6ZVBDCkZZc1FDRTFMVy9aUlV6Qm5LQzZnNVFsdEZJaHRkUFlELy9Nd1VQM2JlTHFnQmV1Mkx4bVlzTXFTSkZqSDBmYXcKTm9EcUVUMmlVVDlDOGhaZEtSVjNObzFzZGlpWDJVWmxxbzhKTGdidVRhaHZoQ1ZDdUdGYVlBUDhlQ013OWdsNQo3K0Z3TEhRQ2JwZ3N5UGNzckVBRk9SYkdBZjZJM2ZhTytSclVOM3d1N2VXL2FRUWxDc1AxTmQrNTFGL2JDYzYrCmo1MHR1N05GYklOUE5zMkp5bnJUSmc2WVBjTlFMa3FMSUlPY1htdkJNdlVvLzFWdElqQTh1a0QrS0VFWlpoUGYKZE5aSDU0ZGJaL2ViYmVpV0t4ZTZyTXR0SmhsZDVZWm5hd1ZRVXIyUk1rZC9OVDllc1V6QjcrQ3BYcFd6SThGbAp5c3pkQW9JQkFIWklRem9SWkplR1A4cWV2RzYwOXJvUFFpMkQwTU1MU0xJaDRLL3JNM282MTF2QUsyaVhra0ZmCkVSalpZMHhoSEhMekVoYmtaaXI1RTRUVTMwSFArT1BBb3pydlcwMFFLbjNVRnh0bHl1WjQ2aElVeEZ2ZkFxM28Kb2hha2VLR0piay9OSzNBZUxUS3FUUEU0QjJLZmRnVWwwZ1JsR0dnTHFqaUw3YktOZlJqank3Unlxa2hSRFhRVwpoejJjTEc1MGg3Tm1GekpoQjlTSk1xNWhiekRTSXYxSEtRdHlkdGxqUjVWaWRCdkhNSmkrckozQTlTVWQ5YmZUClZLeWdtaDM5UUVBZkVmT0tOR1ZwNUtNaHM1RUhxaStRK2prYnlxcHQvNEh6RzRWZTN0UkI2OVF2Zjg5cm00LzYKSE1vcXhTWFpFeHdkTEt5WDJKZ1Exdmw0T09NdjdSTT0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo=
\ No newline at end of file
diff --git a/updater/src/main/java/net/jami/jams/updater/JAMSUpdater.java b/updater/src/main/java/net/jami/jams/updater/JAMSUpdater.java
index 371c44e0f71f97c63ceb537137f272cc7d186b5e..d33014568ddbaeb1e8473526cbe3f61774f13f77 100644
--- a/updater/src/main/java/net/jami/jams/updater/JAMSUpdater.java
+++ b/updater/src/main/java/net/jami/jams/updater/JAMSUpdater.java
@@ -4,7 +4,11 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.extern.slf4j.Slf4j;
 import net.jami.jams.common.updater.AppUpdater;
+import net.jami.jams.common.updater.FileDescription;
+import net.jami.jams.common.utils.VersioningUtils;
 
+import java.util.HashMap;
+import java.util.Timer;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 @Slf4j
@@ -12,24 +16,31 @@ import java.util.concurrent.atomic.AtomicBoolean;
 @Setter
 public class JAMSUpdater implements AppUpdater {
 
-    private final AtomicBoolean updateAvailable = new AtomicBoolean(false);
+    public static final AtomicBoolean updateAvailable = new AtomicBoolean(false);
     private final AtomicBoolean doUpdate;
-    private final UpdateDownloader updateDownloader = new UpdateDownloader();
+    private final UpdateCheckTask updateCheckTask = new UpdateCheckTask();
+    private final Timer timer = new Timer();
 
     public JAMSUpdater(AtomicBoolean doUpdate) {
         this.doUpdate = doUpdate;
+        timer.schedule(new UpdateCheckTask(),0,150_000);
     }
 
     @Override
-    public String getLocalVersions() {
-        return null;
+    public HashMap<String, FileDescription> getLocalVersions() {
+        return VersioningUtils.checkVersion(null);
     }
 
     @Override
-    public String getRemoteVersions() {
+    public HashMap<String,FileDescription> getRemoteVersions() {
         return null;
     }
 
+    @Override
+    public boolean getUpdateAvailable() {
+        return updateAvailable.get();
+    }
+
     @Override
     public void setLicense() {
         //Trigger reading the license from disk.
@@ -39,6 +50,7 @@ public class JAMSUpdater implements AppUpdater {
     public void doUpdate() {
         //Some logic here about replacing the existing files.
 
+
         //Notify back up-stream to the launcher that we want the update to happen.
         doUpdate.set(true);
         synchronized (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 ac664a8a00e3bee39a746c722ca885bb84663698..a462c04be108c67e049381fe2e1f0653a56dc585 100644
--- a/updater/src/main/java/net/jami/jams/updater/UpdateCheckTask.java
+++ b/updater/src/main/java/net/jami/jams/updater/UpdateCheckTask.java
@@ -1,12 +1,19 @@
 package net.jami.jams.updater;
 
+import lombok.Getter;
+import lombok.Setter;
 import lombok.extern.slf4j.Slf4j;
+import net.jami.jams.common.updater.FileDescription;
 
+import java.util.HashMap;
 import java.util.TimerTask;
 
 @Slf4j
+@Getter
+@Setter
 public class UpdateCheckTask extends TimerTask {
 
+    private HashMap<String, FileDescription> remoteData;
 
     protected UpdateCheckTask() {
     }
@@ -14,6 +21,11 @@ public class UpdateCheckTask extends TimerTask {
     @Override
     public void run() {
         try {
+            remoteData = new HashMap<>();
+            //Download the info from the remote server.
+
+            //Compare with local -> if(remote > local)
+            JAMSUpdater.updateAvailable.set(true);
 
         }
         catch (Exception e){
diff --git a/updater/src/main/java/net/jami/jams/updater/UpdateDaemon.java b/updater/src/main/java/net/jami/jams/updater/UpdateDaemon.java
deleted file mode 100644
index 11a7225008fb16d4de167322e0939b32d3b2558b..0000000000000000000000000000000000000000
--- a/updater/src/main/java/net/jami/jams/updater/UpdateDaemon.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package net.jami.jams.updater;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.Timer;
-
-@Getter
-@Setter
-public class UpdateDaemon extends Timer {
-
-    //TODO: This should come from the resources file.
-    public  static final String UPDATE_SERVER_URI = "https://jami.net";
-
-    public UpdateDaemon() {
-        this.schedule(new UpdateCheckTask(),0,150_000);
-    }
-
-}
diff --git a/updater/src/main/java/net/jami/jams/updater/UpdateDownloader.java b/updater/src/main/java/net/jami/jams/updater/UpdateDownloader.java
index f8123accc3d4540b84c6b4477443fc1c3b0f4109..9c753477c47666582b94d9b8549dee3851a48350 100644
--- a/updater/src/main/java/net/jami/jams/updater/UpdateDownloader.java
+++ b/updater/src/main/java/net/jami/jams/updater/UpdateDownloader.java
@@ -11,19 +11,10 @@ public class UpdateDownloader {
 
     private SSLSocketFactory sslSocketFactory;
 
-    //returns the activation status of the server.
-    public boolean getActivationStatus(){
-        return loadLicense();
-    }
-
 
-    public boolean doUpdate(){
+    //TODO: Download the files and dump them into a tmp folder.
+    public boolean downloadFiles(){
         try {
-            if (!loadLicense()) {
-                log.warn("This server does not have a valid license, no files will be download and no update" +
-                        " will take place...");
-                return false;
-            }
             return true;
         }
         catch (Exception e){
@@ -32,26 +23,5 @@ public class UpdateDownloader {
         }
     }
 
-    private boolean loadLicense(){
-        try {
-            //We assume the keystore already exists, because it gets created upon upload.
-            //Basically just load the JKS keystore here.
-
-
-
-            //TODO: Load keystore from file.
-            //Initialize the SSL context & load the SFL trust store.
-            SSLContext sslContext = SSLContext.getInstance("SSL");
-            //sslContext.init(kmf.getKeyManagers(), new SFLTrustStore[]{new SFLTrustStore()},null);
-            log.info("License loaded successfully!");
-            sslSocketFactory = sslContext.getSocketFactory();
-            return true;
-        }
-        catch (Exception e){
-            log.error("An error occurred while trying to load the license: {}",e.getMessage());
-            return false;
-        }
-    }
-
 
 }
diff --git a/updater/src/main/java/net/jami/jams/updater/SFLTrustStore.java b/updater/src/main/java/net/jami/jams/updater/internal/SFLTrustStore.java
similarity index 91%
rename from updater/src/main/java/net/jami/jams/updater/SFLTrustStore.java
rename to updater/src/main/java/net/jami/jams/updater/internal/SFLTrustStore.java
index 3f7b5cc2a32221b34608c992cd13d59d1bfe3916..17564f6c44ac0a3839e2d483cdf17f8227f456a8 100644
--- a/updater/src/main/java/net/jami/jams/updater/SFLTrustStore.java
+++ b/updater/src/main/java/net/jami/jams/updater/internal/SFLTrustStore.java
@@ -1,4 +1,4 @@
-package net.jami.jams.updater;
+package net.jami.jams.updater.internal;
 
 import lombok.extern.slf4j.Slf4j;
 import net.jami.jams.common.utils.X509Utils;
@@ -14,6 +14,8 @@ public class SFLTrustStore implements X509TrustManager {
     X509Certificate[] sflCertificate = new X509Certificate[1];
 
     //TODO: This just returns the SavoirFaireLinux CA everywhere - get this from the OEM resources folder.
+    //Also keep in mind that since we fork off the launcher, it will not scan this one, but rather
+    //The launcher.
     public SFLTrustStore() {
         try {
             InputStream is = SFLTrustStore.class.getClassLoader().getResourceAsStream("ca.crt");