diff --git a/jams-ca/src/main/java/net/jami/jams/ca/workers/csr/builders/DeviceBuilder.java b/jams-ca/src/main/java/net/jami/jams/ca/workers/csr/builders/DeviceBuilder.java
index 64c2c9f005d589f753aa79872e05a6a5ab489a86..e0c9162bdeb62b77b088effe1a67defac491a7ad 100644
--- a/jams-ca/src/main/java/net/jami/jams/ca/workers/csr/builders/DeviceBuilder.java
+++ b/jams-ca/src/main/java/net/jami/jams/ca/workers/csr/builders/DeviceBuilder.java
@@ -6,6 +6,7 @@ import net.jami.jams.ca.workers.csr.utils.CertificateSigner;
 import net.jami.jams.ca.workers.csr.utils.ExtensionLibrary;
 import net.jami.jams.common.objects.devices.Device;
 import net.jami.jams.common.objects.user.User;
+import org.bouncycastle.asn1.ASN1ObjectIdentifier;
 import org.bouncycastle.cert.X509v3CertificateBuilder;
 import org.bouncycastle.cert.jcajce.JcaX509CertificateHolder;
 
@@ -16,6 +17,9 @@ import java.util.Date;
 @Slf4j
 public class DeviceBuilder {
 
+    private static final ASN1ObjectIdentifier DEVICE_ID_FIELD = new ASN1ObjectIdentifier("0.9.2342.19200300.100.1.1");
+    private static final ASN1ObjectIdentifier DEVICE_CN = new ASN1ObjectIdentifier("2.5.4.3");
+
     public static Device generateDevice(User user, Device device){
         try {
             X509v3CertificateBuilder builder = new X509v3CertificateBuilder(
@@ -27,6 +31,11 @@ public class DeviceBuilder {
                     device.getCertificationRequest().getSubjectPublicKeyInfo()
             );
             device.setCertificate(CertificateSigner.signCertificate(user.getPrivateKey(),builder, ExtensionLibrary.deviceExtensions));
+            for(int i=0; i < device.getCertificationRequest().getSubject().getRDNs().length;i++) {
+                if(device.getCertificationRequest().getSubject().getRDNs()[i].getFirst().getType().equals(DEVICE_ID_FIELD)){
+                    device.setDeviceId(device.getCertificationRequest().getSubject().getRDNs()[i].getFirst().getValue().toString());
+                }
+            }
             //kill off the certification request it's useless.
             device.setCertificationRequest(null);
             return device;
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 541e78a81bf1b869e3e7fa22124a8d38df57ae07..90ad9bd9169a08a538f676bba238b18954b9a118 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
@@ -18,8 +18,6 @@ import static net.jami.jams.server.Server.*;
 public class RegisterDeviceFlow {
 
     public static DeviceRegistrationResponse registerDevice(String username, DeviceRegistrationRequest registrationRequest){
-       //User always exists now because we auto-create on log-in
-        //and search.
         try {
             StatementList statementList = new StatementList();
             statementList.addStatement(new StatementElement("username", "=", username, ""));