diff --git a/[Help b/[Help
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
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 29533cc072655bb1bc0805590291f490a108d815..5a87dfbe48b20062e12cbbcd43b3f2fe09b3fc2e 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
@@ -41,8 +41,8 @@ public class DeviceRegistrationResponse {
     private String receiptSignature;
     private String userPhoto;
     //Backward compatibility fix so all the fields are included here.
-    private Boolean allowPeersFromHistory;
-    private Boolean allowPeersFromTrusted;
+    private Boolean allowCertFromHistory;
+    private Boolean allowCertFromTrusted;
     private Boolean proxyEnabled;
     private String  dhtProxyListUrl;
     private String  proxyServer;
@@ -53,10 +53,11 @@ public class DeviceRegistrationResponse {
     private String  turnServerPassword;
     private Boolean videoEnabled;
     private Boolean turnEnabled;
-    private Boolean allowPeersFromContact;
+    private Boolean allowCertFromContact;
     private Boolean accountDiscovery;
     private Boolean peerDiscovery;
     private Boolean upnpEnabled;
+    private Boolean rendezVous;
 
     public void setCertificateChain(X509Certificate[] certificateChain){
         StringBuilder stringBuilder = new StringBuilder();
@@ -70,8 +71,8 @@ public class DeviceRegistrationResponse {
 
     public void setPolicyData(String policyData){
         PolicyData policy = JsonIterator.deserialize(policyData,PolicyData.class);
-        this.allowPeersFromHistory = policy.getAllowPeersFromHistory();
-        this.allowPeersFromTrusted = policy.getAllowPeersFromTrusted();
+        this.allowCertFromHistory = policy.getAllowCertFromHistory();
+        this.allowCertFromTrusted = policy.getAllowCertFromTrusted();
         this.proxyEnabled = policy.getProxyEnabled();
         this.dhtProxyListUrl = policy.getDhtProxyListUrl();
         this.proxyServer = policy.getProxyServer();
@@ -82,10 +83,11 @@ public class DeviceRegistrationResponse {
         this.turnServerPassword = policy.getTurnServerPassword();
         this.videoEnabled = policy.getVideoEnabled();
         this.turnEnabled = policy.getTurnEnabled();
-        this.allowPeersFromContact = policy.getAllowPeersFromContact();
+        this.allowCertFromContact = policy.getAllowCertFromContact();
         this.accountDiscovery = policy.getAccountDiscovery();
         this.peerDiscovery = policy.getPeerDiscovery();
         this.upnpEnabled = policy.getUpnpEnabled();
+        this.rendezVous = policy.getRendezVous();
     }
 
 
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
index 7198e403108677333acca1ccb833548bb9b17748..3256faeb95cdb2a4e7191f6d86555e431415cc4d 100644
--- 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
@@ -7,8 +7,8 @@ import lombok.Setter;
 @Setter
 public class PolicyData {
 
-    private Boolean allowPeersFromHistory;
-    private Boolean allowPeersFromTrusted;
+    private Boolean allowCertFromHistory;
+    private Boolean allowCertFromTrusted;
     private Boolean proxyEnabled;
     private String  dhtProxyListUrl;
     private String proxyServer;
@@ -19,8 +19,9 @@ public class PolicyData {
     private String turnServerPassword;
     private Boolean videoEnabled;
     private Boolean turnEnabled;
-    private Boolean allowPeersFromContact;
+    private Boolean allowCertFromContact;
     private Boolean accountDiscovery;
     private Boolean peerDiscovery;
     private Boolean upnpEnabled;
+    private Boolean rendezVous;
 }
diff --git a/jams-react-client/src/views/Blueprint/EditBlueprintConfiguration.js b/jams-react-client/src/views/Blueprint/EditBlueprintConfiguration.js
index a5d4c98030610ecbb68655f687136c5d1e9bb772..a88d6f7b5c60a96f5a1ad94cf664b09a966f9183 100644
--- a/jams-react-client/src/views/Blueprint/EditBlueprintConfiguration.js
+++ b/jams-react-client/src/views/Blueprint/EditBlueprintConfiguration.js
@@ -171,11 +171,9 @@ export default function EditBlueprintConfiguration(props) {
   const history = useHistory();
 
   const [videoEnabled, setVideoEnabled] = React.useState(true);
-  const [allowPeersFromContact, setAllowPeersFromContact] = React.useState(
-    true
-  );
+  const [allowCertFromContact, setallowCertFromContact] = React.useState(true);
   const [autoAnswer, setAutoAnswer] = React.useState(false);
-  const [accountPeerDiscovery, setAccountPeerDiscovery] = React.useState(true);
+  const [peerDiscovery, setpeerDiscovery] = React.useState(true);
   const [rendezVous, setRendezVous] = React.useState(false);
 
   const [selectedTurnOption, setSelectedTurnOption] = React.useState(
@@ -191,9 +189,7 @@ export default function EditBlueprintConfiguration(props) {
   const [turnServerPassword, setTurnServerPassword] = React.useState("ring");
   const [proxyEnabled, setProxyEnabled] = React.useState(false);
   const [proxyServer, setProxyServer] = React.useState("dhtproxy.jami.net");
-  const [accountDhtProxyListUrl, setAccountDhtProxyListUrl] = React.useState(
-    ""
-  );
+  const [dhtProxyListUrl, setDhtProxyListUrl] = React.useState("");
 
   const [turnPassowrdVisible, setTurnPasswordVisible] = React.useState(false);
 
@@ -213,9 +209,9 @@ export default function EditBlueprintConfiguration(props) {
       .then((response) => {
         let policyData = JSON.parse(response.data.policyData);
         setVideoEnabled(policyData["videoEnabled"]);
-        setAllowPeersFromContact(policyData["allowPeersFromContact"]);
+        setallowCertFromContact(policyData["allowCertFromContact"]);
         setAutoAnswer(policyData["autoAnswer"]);
-        setAccountPeerDiscovery(policyData["Account.peerDiscovery"]);
+        setpeerDiscovery(policyData["peerDiscovery"]);
         setRendezVous(policyData["rendezVous"]);
 
         setUpnpEnabled(policyData["upnpEnabled"]);
@@ -235,7 +231,7 @@ export default function EditBlueprintConfiguration(props) {
           setSelectedDHTProxyOption("customDHTProxy");
           setProxyEnabled(policyData["proxyEnabled"]);
           setProxyServer(policyData["proxyServer"]);
-          setAccountDhtProxyListUrl(policyData["Account.dhtProxyListUrl"]);
+          setDhtProxyListUrl(policyData["dhtProxyListUrl"]);
         } else if (policyData["proxyEnabled"] === false) {
           setSelectedDHTProxyOption("disabledDHTProxy");
           setTurnEnabled(false);
@@ -256,13 +252,13 @@ export default function EditBlueprintConfiguration(props) {
   const handleUpdateConfiguration = (field, value, selectedOptions = []) => {
     let data = {
       videoEnabled: videoEnabled,
-      allowPeersFromContact: allowPeersFromContact,
-      allowPeersFromHistory: allowPeersFromContact,
-      allowPeersFromTrusted: allowPeersFromContact,
+      allowCertFromContact: allowCertFromContact,
+      allowCertFromHistory: allowCertFromContact,
+      allowCertFromTrusted: allowCertFromContact,
       autoAnswer: autoAnswer,
-      "Account.peerDiscovery": accountPeerDiscovery,
-      "Account.accountDiscovery": accountPeerDiscovery,
-      "Account.accountPublish": accountPeerDiscovery,
+      peerDiscovery: peerDiscovery,
+      accountDiscovery: peerDiscovery,
+      accountPublish: peerDiscovery,
       rendezVous: rendezVous,
       upnpEnabled: upnpEnabled,
       turnEnabled: turnEnabled,
@@ -271,14 +267,10 @@ export default function EditBlueprintConfiguration(props) {
       turnServerPassword: turnServerPassword,
       proxyEnabled: proxyEnabled,
       proxyServer: proxyServer,
-      "Account.dhtProxyListUrl": accountDhtProxyListUrl,
+      dhtProxyListUrl: dhtProxyListUrl,
     };
 
-    if (field === "accountDhtProxyListUrl") {
-      data["Account.dhtProxyListUrl"] = value;
-    } else {
-      data[field] = value;
-    }
+    data[field] = value;
 
     selectedOptions.forEach((selectedOption) => {
       if (selectedOption === "defaultTurn") {
@@ -291,7 +283,7 @@ export default function EditBlueprintConfiguration(props) {
       if (selectedOption === "defaultDHTProxy") {
         delete data.proxyEnabled;
         delete data.proxyServer;
-        delete data["Account.dhtProxyListUrl"];
+        delete data.dhtProxyListUrl;
       }
 
       if (selectedOption == "customTurn") {
@@ -627,21 +619,21 @@ export default function EditBlueprintConfiguration(props) {
                                   : "none",
                             }}
                           >
-                            <InputLabel htmlFor="accountDhtProxyListUrl">
+                            <InputLabel htmlFor="dhtProxyListUrl">
                               DHT proxy List URL
                             </InputLabel>
                             <Input
                               id="proxyServer"
-                              placeholder={accountDhtProxyListUrl}
+                              placeholder={dhtProxyListUrl}
                               startAdornment={
                                 <InputAdornment position="start">
                                   <LanguageOutlinedIcon />
                                 </InputAdornment>
                               }
                               onChange={(e) => {
-                                setAccountDhtProxyListUrl(e.target.value);
+                                setDhtProxyListUrl(e.target.value);
                                 handleUpdateConfiguration(
-                                  "accountDhtProxyListUrl",
+                                  "dhtProxyListUrl",
                                   e.target.value,
                                   [selectedTurnOption, "customDHTProxy"]
                                 );
diff --git a/jams-react-client/src/views/Blueprint/EditBlueprintPermissions.js b/jams-react-client/src/views/Blueprint/EditBlueprintPermissions.js
index f479737ca87097bc4b4234df5294c71c0d8d150a..86e9ff85f17f5c451760118f606857f4801425c0 100644
--- a/jams-react-client/src/views/Blueprint/EditBlueprintPermissions.js
+++ b/jams-react-client/src/views/Blueprint/EditBlueprintPermissions.js
@@ -94,11 +94,9 @@ export default function EditBlueprintPermissions(props) {
   const history = useHistory();
 
   const [videoEnabled, setVideoEnabled] = React.useState(true);
-  const [allowPeersFromContact, setAllowPeersFromContact] = React.useState(
-    true
-  );
+  const [allowCertFromContact, setallowCertFromContact] = React.useState(true);
   const [autoAnswer, setAutoAnswer] = React.useState(false);
-  const [accountPeerDiscovery, setAccountPeerDiscovery] = React.useState(true);
+  const [peerDiscovery, setpeerDiscovery] = React.useState(true);
   const [rendezVous, setRendezVous] = React.useState(false);
 
   const [upnpEnabled, setUpnpEnabled] = React.useState(true);
@@ -108,9 +106,7 @@ export default function EditBlueprintPermissions(props) {
   const [turnServerPassword, setTurnServerPassword] = React.useState("ring");
   const [proxyEnabled, setProxyEnabled] = React.useState(false);
   const [proxyServer, setProxyServer] = React.useState("dhtproxy.jami.net");
-  const [accountDhtProxyListUrl, setAccountDhtProxyListUrl] = React.useState(
-    ""
-  );
+  const [dhtProxyListUrl, setdhtProxyListUrl] = React.useState("");
 
   const [open, setOpen] = React.useState(false);
   const [message, setMessage] = React.useState(false);
@@ -128,9 +124,9 @@ export default function EditBlueprintPermissions(props) {
       .then((response) => {
         let policyData = JSON.parse(response.data.policyData);
         setVideoEnabled(policyData["videoEnabled"]);
-        setAllowPeersFromContact(policyData["allowPeersFromContact"]);
+        setallowCertFromContact(policyData["allowCertFromContact"]);
         setAutoAnswer(policyData["autoAnswer"]);
-        setAccountPeerDiscovery(policyData["Account.peerDiscovery"]);
+        setpeerDiscovery(policyData["peerDiscovery"]);
         setRendezVous(policyData["rendezVous"]);
 
         setUpnpEnabled(policyData["upnpEnabled"]);
@@ -140,7 +136,7 @@ export default function EditBlueprintPermissions(props) {
         setTurnServerPassword(policyData["turnServerPassword"]);
         setProxyEnabled(policyData["proxyEnabled"]);
         setProxyServer(policyData["proxyServer"]);
-        setAccountDhtProxyListUrl(policyData["Account.dhtProxyListUrl"]);
+        setdhtProxyListUrl(policyData["Account.dhtProxyListUrl"]);
       })
       .catch((error) => {
         console.log(
@@ -155,13 +151,13 @@ export default function EditBlueprintPermissions(props) {
   const handleUpdatePermissions = (field, value) => {
     let data = {
       videoEnabled: videoEnabled,
-      allowPeersFromContact: allowPeersFromContact,
-      allowPeersFromHistory: allowPeersFromContact,
-      allowPeersFromTrusted: allowPeersFromContact,
+      allowCertFromContact: allowCertFromContact,
+      allowCertFromHistory: allowCertFromContact,
+      allowCertFromTrusted: allowCertFromContact,
       autoAnswer: autoAnswer,
-      "Account.peerDiscovery": accountPeerDiscovery,
-      "Account.accountDiscovery": accountPeerDiscovery,
-      "Account.accountPublish": accountPeerDiscovery,
+      peerDiscovery: peerDiscovery,
+      accountDiscovery: peerDiscovery,
+      accountPublish: peerDiscovery,
       rendezVous: rendezVous,
       upnpEnabled: upnpEnabled,
       turnEnabled: turnEnabled,
@@ -170,17 +166,17 @@ export default function EditBlueprintPermissions(props) {
       turnServerPassword: turnServerPassword,
       proxyEnabled: proxyEnabled,
       proxyServer: proxyServer,
-      "Account.dhtProxyListUrl": accountDhtProxyListUrl,
+      dhtProxyListUrl: dhtProxyListUrl,
     };
 
-    if (field === "allowPeersFromContact") {
-      data["allowPeersFromContact"] = value;
-      data["allowPeersFromHistory"] = value;
-      data["allowPeersFromTrusted"] = value;
-    } else if (field === "accountPeerDiscovery") {
-      data["Account.peerDiscovery"] = value;
-      data["Account.accountDiscovery"] = value;
-      data["Account.accountPublish"] = value;
+    if (field === "allowCertFromContact") {
+      data.allowCertFromContact = value;
+      data.allowCertFromHistory = value;
+      data.allowCertFromTrusted = value;
+    } else if (field === "peerDiscovery") {
+      data.peerDiscovery = value;
+      data.accountDiscovery = value;
+      data.accountPublish = value;
     } else {
       data[field] = value;
     }
@@ -195,7 +191,7 @@ export default function EditBlueprintPermissions(props) {
     if (proxyEnabled == undefined) {
       delete data.proxyEnabled;
       delete data.proxyServer;
-      delete data["Account.dhtProxyListUrl"];
+      delete data.dhtProxyListUrl;
     }
 
     axios(
@@ -274,16 +270,16 @@ export default function EditBlueprintPermissions(props) {
                       <FormControlLabel
                         control={
                           <Checkbox
-                            checked={allowPeersFromContact}
+                            checked={allowCertFromContact}
                             color="primary"
                             onChange={(e) => {
-                              setAllowPeersFromContact(e.target.checked);
+                              setallowCertFromContact(e.target.checked);
                               handleUpdatePermissions(
-                                "allowPeersFromContact",
+                                "allowCertFromContact",
                                 e.target.checked
                               );
                             }}
-                            name="allowPeersFromContact"
+                            name="allowCertFromContact"
                           />
                         }
                         label="Allow incomming calls from unknown contacts"
@@ -312,16 +308,16 @@ export default function EditBlueprintPermissions(props) {
                       <FormControlLabel
                         control={
                           <Checkbox
-                            checked={accountPeerDiscovery}
+                            checked={peerDiscovery}
                             color="primary"
                             onChange={(e) => {
-                              setAccountPeerDiscovery(e.target.checked);
+                              setpeerDiscovery(e.target.checked);
                               handleUpdatePermissions(
-                                "accountPeerDiscovery",
+                                "peerDiscovery",
                                 e.target.checked
                               );
                             }}
-                            name="accountPeerDiscovery"
+                            name="peerDiscovery"
                           />
                         }
                         label="Allow use of Jami in a local lan"
diff --git a/jams-react-client/src/views/Blueprints/Blueprints.js b/jams-react-client/src/views/Blueprints/Blueprints.js
index d3bae49376e6e22f2893a58565a6e851ed9d6251..f5c973f45913dae9e34cdc572b418ffceacd3bc1 100644
--- a/jams-react-client/src/views/Blueprints/Blueprints.js
+++ b/jams-react-client/src/views/Blueprints/Blueprints.js
@@ -172,8 +172,12 @@ export default function Blueprints() {
      let defaultPolicyData = {
         videoEnabled: true,
         allowPeersFromContact: true,
+        allowPeersFromHistory: true,
+        allowPeersFromTrusted: true,
         autoAnswer: false,
-        accountPeerDiscovery: true,
+        "Account.peerDiscovery": true,
+        "Account.accountDiscovery": true,
+        "Account.accountPublish": true,
         rendezVous: false,
         upnpEnabled: true,
       };
diff --git a/jams-server/pom.xml b/jams-server/pom.xml
index c5ec791315b64db5c5645d3746781dc29a546e35..c0df945e47d480f2f2ef4fc1c078127ea02195fc 100644
--- a/jams-server/pom.xml
+++ b/jams-server/pom.xml
@@ -89,6 +89,11 @@
             <artifactId>json</artifactId>
             <version>20190722</version>
         </dependency>
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>2.8.6</version>
+        </dependency>
     </dependencies>
 
     <build>
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 b9e0e5eeb4e17a96736129870674b99bc1f82d15..317a6637ffe559eda0f1e66433fb3cc96c29b621 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
@@ -30,6 +30,7 @@ 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;
@@ -72,14 +73,24 @@ public class RegisterDeviceFlow {
             DeviceRegistrationResponse response = new DeviceRegistrationResponse();
             if(userProfile.getGroupMemberships() != null) {
                 userProfile.getGroupMemberships().forEach(e -> {
-                    StatementElement st = new StatementElement("name", "=", e, "");
-                    StatementList statementList1 = new StatementList();
-                    statementList1.addStatement(st);
-                    try {
-                        Policy policy = dataStore.getPolicyDao().getObjects(statementList1).get(0);
-                        response.setPolicyData(policy.getPolicyData());
-                    } catch (Exception e1) {
-                        log.warn("No policy available for user - not adding a policy component to response");
+                    if (!e.equals("")) {
+                        StatementElement st = new StatementElement("name", "=", e, "");
+                        StatementList statementList1 = new StatementList();
+                        statementList1.addStatement(st);
+
+                        Group group = dataStore.getGroupDao().getObjects(statementList1).get(0);
+                        String policyName = group.getBlueprint();
+                        if(group != null && policyName != null){
+                            StatementElement st2 = new StatementElement("name", "=", policyName, "");
+                            StatementList statementList2 = new StatementList();
+                            statementList2.addStatement((st2));
+                            try {
+                                Policy policy = dataStore.getPolicyDao().getObjects(statementList2).get(0);
+                                response.setPolicyData(policy.getPolicyData());
+                            } catch (Exception e1) {
+                                log.warn("No policy available for user - not adding a policy component to response");
+                            }
+                        }
                     }
                 });
             }
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/DeviceServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/DeviceServlet.java
index 02c4bf65f0d5a32761ae245a45bcdbfe5edb0d43..f05bd2f55722d4ab1b7cefa067140c8f53b7d8b6 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/DeviceServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/DeviceServlet.java
@@ -1,27 +1,29 @@
 /*
-* Copyright (C) 2020 by Savoir-faire Linux
-* Authors: William Enright <william.enright@savoirfairelinux.com>
-*          Ndeye Anna Ndiaye <anna.ndiaye@savoirfairelinux.com>
-*          Johnny Flores <johnny.flores@savoirfairelinux.com>
-*          Mohammed Raza <mohammed.raza@savoirfairelinux.com>
-*          Felix Sidokhine <felix.sidokhine@savoirfairelinux.com>
-*
-*
-* This program is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation; either version 3 of the License, or
-* (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program.  If not, see <https://www.gnu.org/licenses/>.
-*/
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Authors: William Enright <william.enright@savoirfairelinux.com>
+ *          Ndeye Anna Ndiaye <anna.ndiaye@savoirfairelinux.com>
+ *          Johnny Flores <johnny.flores@savoirfairelinux.com>
+ *          Mohammed Raza <mohammed.raza@savoirfairelinux.com>
+ *          Felix Sidokhine <felix.sidokhine@savoirfairelinux.com>
+ *
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ */
 package net.jami.jams.server.servlets.api.auth.device;
 
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
 import com.jsoniter.JsonIterator;
 import com.jsoniter.output.JsonStream;
 import jakarta.servlet.ServletException;
@@ -41,6 +43,8 @@ import net.jami.jams.common.serialization.tomcat.TomcatCustomErrorHandler;
 import net.jami.jams.server.core.workflows.RegisterDeviceFlow;
 import net.jami.jams.server.core.workflows.RevokeDeviceFlow;
 
+import com.google.gson.Gson;
+
 import java.io.IOException;
 
 import static net.jami.jams.server.Server.certificateAuthority;
@@ -113,10 +117,89 @@ public class DeviceServlet extends HttpServlet {
      */
     @Override
     @ScopedServletMethod(securityGroups = {AccessLevel.USER})
-    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
         DeviceRegistrationRequest request = JsonIterator.deserialize(req.getInputStream().readAllBytes(), DeviceRegistrationRequest.class);
         DeviceRegistrationResponse devResponse = RegisterDeviceFlow.registerDevice(req.getAttribute("username").toString(),request);
-        if(devResponse != null) resp.getOutputStream().write(JsonStream.serialize(devResponse).getBytes());
+        if(devResponse != null) {
+            Gson gson = new Gson();
+            String filteredJson = gson.toJson(devResponse);
+            JsonObject obj = gson.fromJson(filteredJson, JsonObject.class);
+
+            if (obj.get("videoEnabled") != null) {
+                obj.add("Account.videoEnabled", obj.get("videoEnabled"));
+                obj.remove("videoEnabled");
+            }
+
+            if (obj.get("allowCertFromContact") != null) {
+                obj.add("Account.allowCertFromContact", obj.get("allowCertFromContact"));
+                obj.remove("allowCertFromContact");
+            }
+            if (obj.get("allowCertFromHistory") != null) {
+                obj.add("Account.allowCertFromHistory", obj.get("allowCertFromHistory"));
+                obj.remove("allowCertFromHistory");
+            }
+            if (obj.get("allowCertFromTrusted") != null) {
+                obj.add("Account.allowCertFromTrusted", obj.get("allowCertFromTrusted"));
+                obj.remove("allowCertFromTrusted");
+            }
+
+            if (obj.get("autoAnswer") != null) {
+                obj.add("Account.autoAnswer", obj.get("autoAnswer"));
+                obj.remove("autoAnswer");
+            }
+            if (obj.get("peerDiscovery") != null) {
+                obj.add("Account.peerDiscovery", obj.get("peerDiscovery"));
+                obj.remove("peerDiscovery");
+            }
+            if (obj.get("accountDiscovery") != null) {
+                obj.add("Account.accountDiscovery", obj.get("accountDiscovery"));
+                obj.remove("accountDiscovery");
+            }
+            if (obj.get("accountPublish") != null) {
+                obj.add("Account.accountPublish", obj.get("accountPublish"));
+                obj.remove("accountPublish");
+            }
+
+            if (obj.get("rendezVous") != null) {
+                obj.add("Account.rendezVous", obj.get("rendezVous"));
+                obj.remove("rendezVous");
+            }
+            if (obj.get("upnpEnabled") != null) {
+                obj.add("Account.upnpEnabled", obj.get("upnpEnabled"));
+                obj.remove("upnpEnabled");
+            }
+
+            if (obj.get("turnEnabled") != null) {
+                obj.add("TURN.enable", obj.get("turnEnabled"));
+                obj.remove("turnEnabled");
+            }
+            if (obj.get("turnServer") != null) {
+                obj.add("TURN.server", obj.get("turnServer"));
+                obj.remove("turnServer");
+            }
+            if (obj.get("turnServerUserName") != null) {
+                obj.add("TURN.username", obj.get("turnServerUserName"));
+                obj.remove("turnServerUserName");
+            }
+            if (obj.get("turnServerPassword") != null) {
+                obj.add("TURN.password", obj.get("turnServerPassword"));
+                obj.remove("turnServerPassword");
+            }
+
+            if (obj.get("proxyEnabled") != null) {
+                obj.add("Account.proxyEnabled", obj.get("proxyEnabled"));
+                obj.remove("proxyEnabled");
+            }
+            if (obj.get("proxyServer") != null) {
+                obj.add("Account.proxyServer", obj.get("proxyServer"));
+                obj.remove("proxyServer");
+            }
+            if (obj.get("dhtProxyListUrl") != null) {
+                obj.add("Account.dhtProxyListUrl", obj.get("dhtProxyListUrl"));
+                obj.remove("dhtProxyListUrl");
+            }
+            resp.getOutputStream().write((obj.toString()).getBytes());
+        }
         else TomcatCustomErrorHandler.sendCustomError(resp,500,"could not enroll a device due to server-side error");
     }
 
@@ -169,7 +252,7 @@ public class DeviceServlet extends HttpServlet {
         StatementElement statementElement = new StatementElement("owner","=",req.getAttribute("username").toString(),"");
         statementList.addStatement(statementElement);
         if(dataStore.getDeviceDao().getObjects(statementList).stream().filter(device ->
-            device.getDeviceId().equals(deviceId)).count() == 0){
+                device.getDeviceId().equals(deviceId)).count() == 0){
             TomcatCustomErrorHandler.sendCustomError(resp,403,"You do not have sufficient rights to revoke this device!");
             return;
         }