diff --git a/datastore/src/main/java/net/jami/datastore/dao/DeviceDao.java b/datastore/src/main/java/net/jami/datastore/dao/DeviceDao.java
index 88fb2fce3577f1ba9d87860e8aba4d409a95036b..8b2ff85b67578408fdf86558f9f6fb048c170c30 100644
--- a/datastore/src/main/java/net/jami/datastore/dao/DeviceDao.java
+++ b/datastore/src/main/java/net/jami/datastore/dao/DeviceDao.java
@@ -30,7 +30,6 @@ import net.jami.jams.common.dao.connectivity.SQLConnection;
 import net.jami.jams.common.objects.devices.Device;
 
 import java.sql.PreparedStatement;
-import java.sql.SQLException;
 
 @Slf4j
 public class DeviceDao extends AbstractDao<Device> {
diff --git a/datastore/src/main/java/net/jami/datastore/dao/JwtDao.java b/datastore/src/main/java/net/jami/datastore/dao/JwtDao.java
index f989d0572c4fc7682ca4eca3f4f02cd16c1e56f0..33b0b0b72802a973cbf3995fe2201a45a59995db 100644
--- a/datastore/src/main/java/net/jami/datastore/dao/JwtDao.java
+++ b/datastore/src/main/java/net/jami/datastore/dao/JwtDao.java
@@ -25,12 +25,8 @@ package net.jami.datastore.dao;
 
 import com.nimbusds.jwt.SignedJWT;
 import lombok.extern.slf4j.Slf4j;
-import net.jami.datastore.main.DataStore;
 import net.jami.jams.common.dao.StatementList;
-import net.jami.jams.common.dao.connectivity.SQLConnection;
 
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
 import java.util.List;
 
 @Slf4j
diff --git a/datastore/src/main/java/net/jami/datastore/dao/SystemDao.java b/datastore/src/main/java/net/jami/datastore/dao/SystemDao.java
index 99becf31c77e0deeb0bc6cbe85694dd8d7c85fb2..65f7d7b88d74828bff93ce2b361625a7aa3e09ba 100644
--- a/datastore/src/main/java/net/jami/datastore/dao/SystemDao.java
+++ b/datastore/src/main/java/net/jami/datastore/dao/SystemDao.java
@@ -30,7 +30,6 @@ import net.jami.jams.common.dao.connectivity.SQLConnection;
 import net.jami.jams.common.objects.system.SystemAccount;
 
 import java.sql.PreparedStatement;
-import java.sql.SQLException;
 
 @Slf4j
 public class SystemDao extends AbstractDao<SystemAccount> {
diff --git a/datastore/src/main/java/net/jami/datastore/dao/UserProfileDao.java b/datastore/src/main/java/net/jami/datastore/dao/UserProfileDao.java
index 9e278045f8786c9c7a70b5aa769bd0879949bdf0..56d06de63995072ce7e05a415638e76f42ec586a 100644
--- a/datastore/src/main/java/net/jami/datastore/dao/UserProfileDao.java
+++ b/datastore/src/main/java/net/jami/datastore/dao/UserProfileDao.java
@@ -25,13 +25,11 @@ package net.jami.datastore.dao;
 
 import lombok.extern.slf4j.Slf4j;
 import net.jami.datastore.main.DataStore;
-import net.jami.jams.common.dao.StatementElement;
 import net.jami.jams.common.dao.StatementList;
 import net.jami.jams.common.dao.connectivity.SQLConnection;
 import net.jami.jams.common.objects.user.UserProfile;
 
 import java.sql.PreparedStatement;
-import java.sql.SQLException;
 
 @Slf4j
 public class UserProfileDao extends AbstractDao<UserProfile> {
diff --git a/datastore/src/main/java/net/jami/datastore/main/DataStore.java b/datastore/src/main/java/net/jami/datastore/main/DataStore.java
index fb1c51c8248df0bbc301ffebc54e8df339262626..f0a5cb48fba2ea99adebc5b1204140f629ac6999 100644
--- a/datastore/src/main/java/net/jami/datastore/main/DataStore.java
+++ b/datastore/src/main/java/net/jami/datastore/main/DataStore.java
@@ -24,7 +24,15 @@ package net.jami.datastore.main;
 
 import lombok.Getter;
 import lombok.Setter;
-import net.jami.datastore.dao.*;
+import net.jami.datastore.dao.ContactDao;
+import net.jami.datastore.dao.DeviceDao;
+import net.jami.datastore.dao.GroupDao;
+import net.jami.datastore.dao.JwtDao;
+import net.jami.datastore.dao.PolicyDao;
+import net.jami.datastore.dao.SystemDao;
+import net.jami.datastore.dao.UserDao;
+import net.jami.datastore.dao.UserGroupMappingsDao;
+import net.jami.datastore.dao.UserProfileDao;
 import net.jami.jams.common.authentication.AuthenticationSource;
 import net.jami.jams.common.authentication.AuthenticationSourceInfo;
 import net.jami.jams.common.authentication.AuthenticationSourceType;
@@ -35,7 +43,6 @@ import net.jami.jams.common.objects.user.User;
 import net.jami.jams.common.objects.user.UserProfile;
 import org.flywaydb.core.Flyway;
 
-import java.util.Arrays;
 import java.util.List;
 
 @Getter
diff --git a/datastore/src/test/java/net/jami/datastore/dao/DAOTest.java b/datastore/src/test/java/net/jami/datastore/dao/DAOTest.java
index 3902fa90c9bac040745a92ad6e29b74ef2dc577a..de5eeff816669fc4bbd8fa2eed660ad77d667b31 100644
--- a/datastore/src/test/java/net/jami/datastore/dao/DAOTest.java
+++ b/datastore/src/test/java/net/jami/datastore/dao/DAOTest.java
@@ -22,7 +22,6 @@
 */
 package net.jami.datastore.dao;
 
-import com.jsoniter.JsonIterator;
 import net.jami.datastore.main.DataStore;
 import net.jami.jams.common.authentication.AuthenticationSourceType;
 import net.jami.jams.common.dao.StatementElement;
@@ -31,13 +30,11 @@ import net.jami.jams.common.objects.devices.Device;
 import net.jami.jams.common.objects.user.AccessLevel;
 import net.jami.jams.common.objects.user.User;
 import net.jami.jams.common.utils.X509Utils;
-import org.flywaydb.core.Flyway;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 
 import java.io.InputStream;
-import java.util.ArrayList;
 
 class DAOTest {
 
diff --git a/jams-common/src/main/java/net/jami/jams/common/annotations/PackageScanner.java b/jams-common/src/main/java/net/jami/jams/common/annotations/PackageScanner.java
index 6e680edc2c73d0ac5a707ae753b61820e34f73bd..5204358e45dd3cad6e9ec6831b78964a7c476812 100644
--- a/jams-common/src/main/java/net/jami/jams/common/annotations/PackageScanner.java
+++ b/jams-common/src/main/java/net/jami/jams/common/annotations/PackageScanner.java
@@ -25,7 +25,6 @@ package net.jami.jams.common.annotations;
 import java.io.File;
 import java.io.FileInputStream;
 import java.util.ArrayList;
-import java.util.HashSet;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
 
diff --git a/jams-common/src/main/java/net/jami/jams/common/annotations/ScopedServletAnnotationScanner.java b/jams-common/src/main/java/net/jami/jams/common/annotations/ScopedServletAnnotationScanner.java
index 22af00b8ee1e8a2674a856979647566910fda9d2..cd2eef1191a1f9559fca38cd1a1f434bdb1eccf1 100644
--- a/jams-common/src/main/java/net/jami/jams/common/annotations/ScopedServletAnnotationScanner.java
+++ b/jams-common/src/main/java/net/jami/jams/common/annotations/ScopedServletAnnotationScanner.java
@@ -22,12 +22,15 @@
 */
 package net.jami.jams.common.annotations;
 
-import javassist.*;
+import javassist.ClassPool;
+import javassist.CtClass;
+import javassist.CtMethod;
 import javassist.bytecode.AnnotationsAttribute;
 import javassist.bytecode.AttributeInfo;
 import javassist.bytecode.MethodInfo;
 import javassist.bytecode.annotation.Annotation;
 import lombok.extern.slf4j.Slf4j;
+
 import java.util.ArrayList;
 
 @Slf4j
diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/responses/DeviceRegistrationResponse.java b/jams-common/src/main/java/net/jami/jams/common/objects/responses/DeviceRegistrationResponse.java
index aa0f9bb4e23d011b815ff1a6f2a2590da97fe7d1..29533cc072655bb1bc0805590291f490a108d815 100644
--- a/jams-common/src/main/java/net/jami/jams/common/objects/responses/DeviceRegistrationResponse.java
+++ b/jams-common/src/main/java/net/jami/jams/common/objects/responses/DeviceRegistrationResponse.java
@@ -22,8 +22,10 @@
 */
 package net.jami.jams.common.objects.responses;
 
+import com.jsoniter.JsonIterator;
 import lombok.Getter;
 import lombok.Setter;
+import net.jami.jams.common.objects.user.PolicyData;
 import net.jami.jams.common.utils.X509Utils;
 
 import java.security.cert.X509Certificate;
@@ -38,7 +40,23 @@ public class DeviceRegistrationResponse {
     private String deviceReceipt;
     private String receiptSignature;
     private String userPhoto;
-    private String policy;
+    //Backward compatibility fix so all the fields are included here.
+    private Boolean allowPeersFromHistory;
+    private Boolean allowPeersFromTrusted;
+    private Boolean proxyEnabled;
+    private String  dhtProxyListUrl;
+    private String  proxyServer;
+    private Boolean accountPublish;
+    private Boolean autoAnswer;
+    private String  turnServer;
+    private String  turnServerUserName;
+    private String  turnServerPassword;
+    private Boolean videoEnabled;
+    private Boolean turnEnabled;
+    private Boolean allowPeersFromContact;
+    private Boolean accountDiscovery;
+    private Boolean peerDiscovery;
+    private Boolean upnpEnabled;
 
     public void setCertificateChain(X509Certificate[] certificateChain){
         StringBuilder stringBuilder = new StringBuilder();
@@ -50,5 +68,25 @@ public class DeviceRegistrationResponse {
         this.certificateChain = stringBuilder.toString();
     }
 
+    public void setPolicyData(String policyData){
+        PolicyData policy = JsonIterator.deserialize(policyData,PolicyData.class);
+        this.allowPeersFromHistory = policy.getAllowPeersFromHistory();
+        this.allowPeersFromTrusted = policy.getAllowPeersFromTrusted();
+        this.proxyEnabled = policy.getProxyEnabled();
+        this.dhtProxyListUrl = policy.getDhtProxyListUrl();
+        this.proxyServer = policy.getProxyServer();
+        this.accountPublish = policy.getAccountPublish();
+        this.autoAnswer = policy.getAutoAnswer();
+        this.turnServer = policy.getTurnServer();
+        this.turnServerUserName = policy.getTurnServerUserName();
+        this.turnServerPassword = policy.getTurnServerPassword();
+        this.videoEnabled = policy.getVideoEnabled();
+        this.turnEnabled = policy.getTurnEnabled();
+        this.allowPeersFromContact = policy.getAllowPeersFromContact();
+        this.accountDiscovery = policy.getAccountDiscovery();
+        this.peerDiscovery = policy.getPeerDiscovery();
+        this.upnpEnabled = policy.getUpnpEnabled();
+    }
+
 
 }
diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/user/Group.java b/jams-common/src/main/java/net/jami/jams/common/objects/user/Group.java
index e01e18c45414036c73c723b2bf995a4e10769c39..0bd5a5d883a3c17ae8c5b950e6f3b8ec2c5e5b71 100644
--- a/jams-common/src/main/java/net/jami/jams/common/objects/user/Group.java
+++ b/jams-common/src/main/java/net/jami/jams/common/objects/user/Group.java
@@ -4,10 +4,7 @@ import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
-import net.jami.jams.common.authentication.AuthenticationSourceType;
-import net.jami.jams.common.objects.roots.X509Entity;
 import net.jami.jams.common.serialization.database.DatabaseObject;
-import net.jami.jams.common.utils.X509Utils;
 
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/user/Policy.java b/jams-common/src/main/java/net/jami/jams/common/objects/user/Policy.java
index 6f9c9226c72ad2817442cba2af31c3daec0607c5..b25f79e32f186a3cf02353072df23fa30e89c586 100644
--- a/jams-common/src/main/java/net/jami/jams/common/objects/user/Policy.java
+++ b/jams-common/src/main/java/net/jami/jams/common/objects/user/Policy.java
@@ -4,11 +4,7 @@ import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
-import net.jami.jams.common.objects.roots.X509Entity;
 import net.jami.jams.common.serialization.database.DatabaseObject;
-import net.minidev.json.JSONArray;
-import net.minidev.json.JSONObject;
-import net.minidev.json.parser.JSONParser;
 
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/user/PolicyData.java b/jams-common/src/main/java/net/jami/jams/common/objects/user/PolicyData.java
new file mode 100644
index 0000000000000000000000000000000000000000..7198e403108677333acca1ccb833548bb9b17748
--- /dev/null
+++ b/jams-common/src/main/java/net/jami/jams/common/objects/user/PolicyData.java
@@ -0,0 +1,26 @@
+package net.jami.jams.common.objects.user;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class PolicyData {
+
+    private Boolean allowPeersFromHistory;
+    private Boolean allowPeersFromTrusted;
+    private Boolean proxyEnabled;
+    private String  dhtProxyListUrl;
+    private String proxyServer;
+    private Boolean accountPublish;
+    private Boolean autoAnswer;
+    private String turnServer;
+    private String turnServerUserName;
+    private String turnServerPassword;
+    private Boolean videoEnabled;
+    private Boolean turnEnabled;
+    private Boolean allowPeersFromContact;
+    private Boolean accountDiscovery;
+    private Boolean peerDiscovery;
+    private Boolean upnpEnabled;
+}
diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/user/User.java b/jams-common/src/main/java/net/jami/jams/common/objects/user/User.java
index 0fe93e3d8daad24b3aa149371a8fc3622d42701a..b7404ce215450c30fbe4fc54e94fa6a54b6a71ff 100644
--- a/jams-common/src/main/java/net/jami/jams/common/objects/user/User.java
+++ b/jams-common/src/main/java/net/jami/jams/common/objects/user/User.java
@@ -31,6 +31,7 @@ import net.jami.jams.common.objects.roots.BlockchainEntity;
 import net.jami.jams.common.objects.roots.X509Entity;
 import net.jami.jams.common.serialization.database.DatabaseObject;
 import net.jami.jams.common.utils.X509Utils;
+
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 
diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/user/UserGroupMapping.java b/jams-common/src/main/java/net/jami/jams/common/objects/user/UserGroupMapping.java
index c09db1124a3ffb7abbe779dace48fa4eac05e91a..1516288842dd39a748d0596c3ad4fcb12e4443bf 100644
--- a/jams-common/src/main/java/net/jami/jams/common/objects/user/UserGroupMapping.java
+++ b/jams-common/src/main/java/net/jami/jams/common/objects/user/UserGroupMapping.java
@@ -1,19 +1,13 @@
 package net.jami.jams.common.objects.user;
 
-import com.jsoniter.JsonIterator;
-import com.jsoniter.output.JsonStream;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 import net.jami.jams.common.serialization.database.DatabaseObject;
-import net.minidev.json.JSONArray;
-import net.minidev.json.JSONObject;
 
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
-import java.util.Arrays;
-import java.util.List;
 
 @AllArgsConstructor
 @NoArgsConstructor
diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/user/UserProfile.java b/jams-common/src/main/java/net/jami/jams/common/objects/user/UserProfile.java
index be3f13210dd5a418dce13603993eac9adcf81c2f..3ed4f1ddc26792ebdb445cb124a2e07418b4ef85 100644
--- a/jams-common/src/main/java/net/jami/jams/common/objects/user/UserProfile.java
+++ b/jams-common/src/main/java/net/jami/jams/common/objects/user/UserProfile.java
@@ -22,7 +22,6 @@
 */
 package net.jami.jams.common.objects.user;
 
-import com.jsoniter.JsonIterator;
 import com.jsoniter.annotation.JsonIgnore;
 import com.jsoniter.output.JsonStream;
 import ezvcard.Ezvcard;
diff --git a/jams-common/src/test/java/net/jami/jams/common/objects/contacts/ContactTest.java b/jams-common/src/test/java/net/jami/jams/common/objects/contacts/ContactTest.java
index 88ac4ae89149ea2c252395d5a5b63d8599d54eca..a2a84931027a3d095ccf3b06aefd2e24eff55b58 100644
--- a/jams-common/src/test/java/net/jami/jams/common/objects/contacts/ContactTest.java
+++ b/jams-common/src/test/java/net/jami/jams/common/objects/contacts/ContactTest.java
@@ -12,8 +12,6 @@ import org.junit.jupiter.api.Test;
 import java.util.ArrayList;
 import java.util.List;
 
-import static org.junit.jupiter.api.Assertions.*;
-
 class ContactTest {
 
     @BeforeAll
diff --git a/jams-server/src/main/java/net/jami/jams/server/Server.java b/jams-server/src/main/java/net/jami/jams/server/Server.java
index 450f1a3934c5168e6177bceb15bb8a35ce4560ba..32c29703b12bfa8a85e4c0572be8549060e8de61 100644
--- a/jams-server/src/main/java/net/jami/jams/server/Server.java
+++ b/jams-server/src/main/java/net/jami/jams/server/Server.java
@@ -32,7 +32,6 @@ import net.jami.jams.common.authentication.local.LocalAuthSettings;
 import net.jami.jams.common.authmodule.AuthenticationModule;
 import net.jami.jams.common.cryptoengineapi.CertificateAuthority;
 import net.jami.jams.common.jami.NameServer;
-import net.jami.jams.common.serialization.JsoniterRegistry;
 import net.jami.jams.common.server.ServerSettings;
 import net.jami.jams.common.utils.LibraryLoader;
 import net.jami.jams.nameserver.LocalNameServer;
diff --git a/jams-server/src/main/java/net/jami/jams/server/core/TomcatLauncher.java b/jams-server/src/main/java/net/jami/jams/server/core/TomcatLauncher.java
index 0f3e978336b61e1eb29155ada0ba0de61c4928ab..b91bbb1e879ddce760f58944d11f62ab36992442 100644
--- a/jams-server/src/main/java/net/jami/jams/server/core/TomcatLauncher.java
+++ b/jams-server/src/main/java/net/jami/jams/server/core/TomcatLauncher.java
@@ -28,7 +28,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.catalina.WebResourceRoot;
 import org.apache.catalina.connector.Connector;
 import org.apache.catalina.core.StandardContext;
-import org.apache.catalina.filters.CorsFilter;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.catalina.webresources.DirResourceSet;
 import org.apache.catalina.webresources.JarResourceSet;
diff --git a/jams-server/src/main/java/net/jami/jams/server/core/workflows/AddUserToGroupFlow.java b/jams-server/src/main/java/net/jami/jams/server/core/workflows/AddUserToGroupFlow.java
index f3dae3392a08cd0de60243a85546fa221cadf291..cd154ff95543f7b036fa46106146381b59e7c9cc 100644
--- a/jams-server/src/main/java/net/jami/jams/server/core/workflows/AddUserToGroupFlow.java
+++ b/jams-server/src/main/java/net/jami/jams/server/core/workflows/AddUserToGroupFlow.java
@@ -1,20 +1,13 @@
 package net.jami.jams.server.core.workflows;
 
-
 import lombok.extern.slf4j.Slf4j;
-import net.jami.jams.common.authentication.AuthenticationSource;
-import net.jami.jams.common.authmodule.AuthModuleKey;
 import net.jami.jams.common.dao.StatementElement;
 import net.jami.jams.common.dao.StatementList;
-import net.jami.jams.common.objects.user.Group;
-import net.jami.jams.common.objects.user.User;
 import net.jami.jams.common.objects.user.UserGroupMapping;
 import net.jami.jams.common.objects.user.UserProfile;
-import net.minidev.json.JSONArray;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 
 import static net.jami.jams.server.Server.dataStore;
 import static net.jami.jams.server.Server.userAuthenticationModule;
diff --git a/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterDeviceFlow.java b/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterDeviceFlow.java
index 0b1ce55a6d813e897d50d4faca1e4f6bba0e1bc3..b1f4a5e21935a7faf99536bad4f96c5d756f1052 100644
--- a/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterDeviceFlow.java
+++ b/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterDeviceFlow.java
@@ -22,6 +22,7 @@
 */
 package net.jami.jams.server.core.workflows;
 
+import com.jsoniter.JsonIterator;
 import lombok.extern.slf4j.Slf4j;
 import net.jami.jams.common.authmodule.AuthModuleKey;
 import net.jami.jams.common.dao.StatementElement;
@@ -29,8 +30,8 @@ import net.jami.jams.common.dao.StatementList;
 import net.jami.jams.common.objects.devices.Device;
 import net.jami.jams.common.objects.requests.DeviceRegistrationRequest;
 import net.jami.jams.common.objects.responses.DeviceRegistrationResponse;
-import net.jami.jams.common.objects.user.Group;
 import net.jami.jams.common.objects.user.Policy;
+import net.jami.jams.common.objects.user.PolicyData;
 import net.jami.jams.common.objects.user.User;
 import net.jami.jams.common.objects.user.UserProfile;
 import net.jami.jams.dht.DeviceReceiptGenerator;
@@ -74,7 +75,7 @@ public class RegisterDeviceFlow {
                 StatementList statementList1 = new StatementList();
                 statementList1.addStatement(st);
                 Policy policy = dataStore.getPolicyDao().getObjects(statementList1).get(0);
-                response.setPolicy(policy.getPolicyData());
+                response.setPolicyData(policy.getPolicyData());
             });
             //We need to set the device receipt....
             String[] devReceipt = DeviceReceiptGenerator.generateReceipt(user.getPrivateKey(), user.getCertificate().getPublicKey(),
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/directory/DirectoryEntryServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/directory/DirectoryEntryServlet.java
index 2e77ff26a067e6e58de85fa576ec9580f55219bd..929d42a8d965b4140999ad4e6de0eef543e47a3e 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/directory/DirectoryEntryServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/directory/DirectoryEntryServlet.java
@@ -45,8 +45,8 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Scanner;
 
-import static net.jami.jams.server.Server.userAuthenticationModule;
 import static net.jami.jams.server.Server.dataStore;
+import static net.jami.jams.server.Server.userAuthenticationModule;
 
 @Slf4j
 @WebServlet("/api/admin/directory/entry")
@@ -84,25 +84,21 @@ public class DirectoryEntryServlet extends HttpServlet {
     }
 
     @Override
-    protected void doPut(HttpServletRequest req, HttpServletResponse resp) {
+    @ScopedServletMethod(securityGroups = {AccessLevel.ADMIN})
+    protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws IOException {
         //Update a user's profile.
-        try{
-            //Check if he is AD/LDAP - then return a 500, because we can't update those profile datas.
-            UserProfile userProfile = JsonIterator.deserialize(req.getInputStream().readAllBytes(), UserProfile.class);
-            StatementList select = new StatementList();
-            StatementElement st = new StatementElement("username","=",userProfile.getUsername(),"");
-            select.addStatement(st);
-            if(dataStore.getUserDao().getObjects(select).get(0).getUserType() != AuthenticationSourceType.LOCAL){
-                resp.sendError(500,"The user is not a local user, therefore we cannot change his data!");
-                return;
-            }
-            if(dataStore.updateUserProfile(userProfile))
-                resp.setStatus(200);
-            else resp.sendError(500,"could not update the users's profile information");
-        }
-        catch(Exception e){
-            System.out.println(e);
+        //Check if he is AD/LDAP - then return a 500, because we can't update those profile datas.
+        UserProfile userProfile = JsonIterator.deserialize(req.getInputStream().readAllBytes(), UserProfile.class);
+        StatementList select = new StatementList();
+        StatementElement st = new StatementElement("username","=",userProfile.getUsername(),"");
+        select.addStatement(st);
+        if(dataStore.getUserDao().getObjects(select).get(0).getUserType() != AuthenticationSourceType.LOCAL){
+            resp.sendError(500,"The user is not a local user, therefore we cannot change his data!");
+            return;
         }
+        if(dataStore.updateUserProfile(userProfile))
+            resp.setStatus(200);
+        else resp.sendError(500,"could not update the users's profile information");
 
     }
 
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupServlet.java
index efb4509a4f28d6bd1cc07144da85dbed03c69af5..d171bebcd5d83eb9c860b9267ab6a747f6b29edd 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupServlet.java
@@ -11,16 +11,15 @@ import net.jami.jams.common.annotations.JsonContent;
 import net.jami.jams.common.annotations.ScopedServletMethod;
 import net.jami.jams.common.dao.StatementElement;
 import net.jami.jams.common.dao.StatementList;
-import net.jami.jams.common.objects.user.*;
-import net.jami.jams.common.serialization.tomcat.TomcatCustomErrorHandler;
+import net.jami.jams.common.objects.user.AccessLevel;
+import net.jami.jams.common.objects.user.Group;
+import net.jami.jams.common.objects.user.UserGroupMapping;
+import net.jami.jams.common.objects.user.UserProfile;
 import net.jami.jams.server.core.workflows.AddUserToGroupFlow;
-import net.jami.jams.server.core.workflows.RegisterDeviceFlow;
-import net.jami.jams.common.annotations.JsonContent;
 
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.UUID;
 import java.util.stream.Collectors;
 
 import static net.jami.jams.server.Server.dataStore;
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/PolicyServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/PolicyServlet.java
index a97ecb993586c6a9dc83d9ff3aad00171845322f..916050cea8a1ba54a9a1e36d064f90c1b10fb271 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/PolicyServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/PolicyServlet.java
@@ -10,7 +10,8 @@ import net.jami.jams.common.annotations.JsonContent;
 import net.jami.jams.common.annotations.ScopedServletMethod;
 import net.jami.jams.common.dao.StatementElement;
 import net.jami.jams.common.dao.StatementList;
-import net.jami.jams.common.objects.user.*;
+import net.jami.jams.common.objects.user.AccessLevel;
+import net.jami.jams.common.objects.user.Policy;
 import org.json.JSONObject;
 
 import java.io.IOException;
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/UpdateServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/UpdateServlet.java
index e6ffcf3e8e2c5d9e0b7520bb7174fb6fd455d6f0..12419d105d4f9a9cda39258dac48df249f797816 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/UpdateServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/UpdateServlet.java
@@ -28,12 +28,10 @@ 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 net.jami.jams.common.annotations.JsonContent;
 import net.jami.jams.common.annotations.ScopedServletMethod;
 import net.jami.jams.common.objects.user.AccessLevel;
 import net.jami.jams.common.updater.FullSystemStatusResponse;
-import net.jami.jams.server.Server;
 
 import java.io.IOException;
 
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/DirectoryEntryServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/DirectoryEntryServlet.java
index aa73eaf5118249b8351bd391bca0ca93f3099bcd..735bb96aacbdb382a7d8def9747d6d97194f0594 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/DirectoryEntryServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/DirectoryEntryServlet.java
@@ -30,12 +30,16 @@ import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 import net.jami.jams.common.authentication.AuthenticationSourceType;
 import net.jami.jams.common.authmodule.AuthModuleKey;
+import net.jami.jams.common.dao.StatementElement;
+import net.jami.jams.common.dao.StatementList;
+import net.jami.jams.common.objects.user.User;
 import net.jami.jams.common.objects.user.UserProfile;
 
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
+import static net.jami.jams.server.Server.dataStore;
 import static net.jami.jams.server.Server.userAuthenticationModule;
 
 //This is an endpoint to manipulate directory entry-data, this make sense only for local setups.
@@ -191,6 +195,21 @@ public class DirectoryEntryServlet extends HttpServlet {
      */
     @Override
     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        if(req.getParameter("jamiId") != null){
+            StatementList statementList = new StatementList();
+            StatementElement statementElement = new StatementElement("jamiId","=",req.getParameter("jamiId"),null);
+            statementList.addStatement(statementElement);
+            User user = dataStore.getUserDao().getObjects(statementList).get(0);
+            List<UserProfile> userProfiles = new ArrayList<>();
+            userAuthenticationModule.getAuthSources().forEach((k, v) -> {
+                userProfiles.addAll(v.searchUserProfiles(user.getUsername(), "LOGON_NAME"));
+            });
+            if(req.getParameter("format") != null && req.getParameter("format").equals("vcard")){
+                resp.getOutputStream().write(userProfiles.get(0).getAsVCard().getBytes());
+            }
+            else resp.getOutputStream().write(JsonStream.serialize(userProfiles.get(0)).getBytes());
+            return;
+        }
         if (req.getParameter("directory") != null && req.getParameter("directoryType") != null) {
             List<UserProfile> profiles = userAuthenticationModule.getAuthSources()
                     .get(new AuthModuleKey(req.getParameter("directory"), AuthenticationSourceType.fromString(req.getParameter("directoryType"))))
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java
index 89309eb75526d5e603c995118d0555e3f79a2ff1..b63f692dcdd2a2078192af3e77ece50d1bdf6bbe 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java
@@ -28,17 +28,18 @@ 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.annotations.JsonContent;
 import net.jami.jams.common.dao.StatementElement;
 import net.jami.jams.common.dao.StatementList;
 import net.jami.jams.common.objects.user.AccessLevel;
 import net.jami.jams.common.objects.user.User;
-import net.jami.jams.common.annotations.JsonContent;
 import net.jami.jams.common.objects.user.UserGroupMapping;
 import net.jami.jams.common.objects.user.UserProfile;
 
 import java.io.IOException;
-import java.util.*;
-import java.util.stream.Collectors;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
 
 import static net.jami.jams.server.Server.dataStore;
 import static net.jami.jams.server.Server.nameServer;
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/user/UserServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/user/UserServlet.java
index 39baf1f0d9b04653298a4c892334db2dc3b0b7a5..c732284ec898ae7d302f053a2a2ba81157aff0b0 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/user/UserServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/user/UserServlet.java
@@ -34,7 +34,6 @@ import net.jami.jams.common.dao.StatementElement;
 import net.jami.jams.common.dao.StatementList;
 import net.jami.jams.common.objects.user.AccessLevel;
 import net.jami.jams.common.objects.user.User;
-import net.jami.jams.common.utils.PasswordGenerator;
 
 import java.io.IOException;
 
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/install/InstallLastStepServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/install/InstallLastStepServlet.java
index 86a07e90bc93e643417c514362af52bb6ea74921..7a3ae21828967dff0fad92de298d7a2163dfd72f 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/install/InstallLastStepServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/install/InstallLastStepServlet.java
@@ -27,7 +27,6 @@ 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 net.jami.jams.common.annotations.JsonContent;
 import net.jami.jams.common.annotations.ScopedServletMethod;
 import net.jami.jams.common.objects.user.AccessLevel;
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/filters/CorsFilter.java b/jams-server/src/main/java/net/jami/jams/server/servlets/filters/CorsFilter.java
index a4f0fe0d36dad91d96d2958ce7687a927c0b2724..9325a9a088e765675436b86966edeb6a91b9ee57 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/filters/CorsFilter.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/filters/CorsFilter.java
@@ -1,21 +1,8 @@
 package net.jami.jams.server.servlets.filters;
 
-import jakarta.servlet.FilterConfig;
-import jakarta.servlet.ServletContext;
-import jakarta.servlet.ServletException;
 import jakarta.servlet.annotation.WebFilter;
 import jakarta.servlet.annotation.WebInitParam;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.EnumSet;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-
 @WebFilter(urlPatterns = {"*"}, initParams={@WebInitParam(name = "cors.allowed.origins",value = "*")})
 public class CorsFilter extends org.apache.catalina.filters.CorsFilter {
 }
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/general/ServerStatusServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/general/ServerStatusServlet.java
index de6086486b71c06e2949febf64031732ff9b7833..8bcc524f65d1234e52d252271a93afd17fd3b056 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/general/ServerStatusServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/general/ServerStatusServlet.java
@@ -27,7 +27,6 @@ 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 net.jami.jams.common.annotations.JsonContent;
 import net.jami.jams.server.Server;
 
diff --git a/jams-server/src/main/java/net/jami/jams/server/update/UpdateInterface.java b/jams-server/src/main/java/net/jami/jams/server/update/UpdateInterface.java
index 1a10e5d45fb003bd1603960b841850745f7b6cc2..e54e92ed37afbce04f6c59aa883926a3b8aa044c 100644
--- a/jams-server/src/main/java/net/jami/jams/server/update/UpdateInterface.java
+++ b/jams-server/src/main/java/net/jami/jams/server/update/UpdateInterface.java
@@ -6,7 +6,6 @@ import org.zeromq.SocketType;
 import org.zeromq.ZMQ;
 
 import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.logging.Logger;
 
 @Getter
 @Setter
diff --git a/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java b/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java
index 854944b01e1cad67c23a75dec332734aac6d69c6..553d7096db0bba69f564b2cb09e036eb068f1954 100644
--- a/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java
+++ b/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java
@@ -32,11 +32,7 @@ import org.ldaptive.SearchOperation;
 import org.ldaptive.SearchRequest;
 import org.ldaptive.SearchResponse;
 
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.stream.Collectors;