diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/testutils/X509CertificateTestUtils.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/testutils/X509CertificateTestUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..05efb297f6e9ec2672160c3f2fb9ee2f2a658f7a
--- /dev/null
+++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/testutils/X509CertificateTestUtils.java
@@ -0,0 +1,86 @@
+package eu.europa.ec.edelivery.smp.testutils;
+
+import org.bouncycastle.asn1.x500.X500Name;
+import org.bouncycastle.asn1.x509.*;
+import org.bouncycastle.cert.X509v3CertificateBuilder;
+import org.bouncycastle.cert.jcajce.JcaX509CertificateConverter;
+import org.bouncycastle.operator.ContentSigner;
+import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder;
+
+import java.math.BigInteger;
+import java.security.KeyPair;
+import java.security.KeyPairGenerator;
+import java.security.PrivateKey;
+import java.security.cert.X509Certificate;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class X509CertificateTestUtils {
+
+    public static X509Certificate createX509CertificateForTest( String subject) throws Exception {
+        return createX509CertificateForTest("1234321", subject);
+    }
+
+    public static X509Certificate createX509CertificateForTest(String serialNumber,  String subject) throws Exception {
+        Calendar from = Calendar.getInstance();
+        Calendar to = Calendar.getInstance();
+        to.add(Calendar.DAY_OF_YEAR, 1);
+        from.add(Calendar.DAY_OF_YEAR, -1);
+        return createX509CertificateForTest(serialNumber, subject, subject, from.getTime(), to.getTime(), Collections.emptyList());
+    }
+
+    public static X509Certificate createX509CertificateForTest(String serialNumber, String issuer, String subject, Date startDate, Date expiryDate, List<String> distributionList) throws Exception {
+
+        KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
+        keyGen.initialize(1024);
+        KeyPair key = keyGen.generateKeyPair();
+        X509v3CertificateBuilder certBuilder = new X509v3CertificateBuilder(new X500Name(issuer),
+                new BigInteger(serialNumber, 16), startDate, expiryDate, new X500Name(subject),
+                SubjectPublicKeyInfo.getInstance(key.getPublic().getEncoded()));
+        if (!distributionList.isEmpty()) {
+
+            List<DistributionPoint> distributionPoints = distributionList.stream().map(url -> {
+                DistributionPointName distPointOne = new DistributionPointName(new GeneralNames(
+                        new GeneralName(GeneralName.uniformResourceIdentifier, url)));
+
+                return new DistributionPoint(distPointOne, null, null);
+            }).collect(Collectors.toList());
+
+            certBuilder.addExtension(Extension.cRLDistributionPoints, false, new CRLDistPoint(distributionPoints.toArray(new DistributionPoint[]{})));
+        }
+
+        ContentSigner sigGen = new JcaContentSignerBuilder("SHA1WithRSAEncryption").setProvider("BC").build(key.getPrivate());
+        return new JcaX509CertificateConverter().setProvider("BC").getCertificate(certBuilder.build(sigGen));
+    }
+
+    public static X509Certificate[] createCertificateChain(String[] subjects, Date startDate, Date expiryDate) throws Exception {
+
+        String issuer = null;
+        PrivateKey issuerKey = null;
+        long iSerial = 10000;
+        X509Certificate[] certs = new X509Certificate[subjects.length];
+
+        int index = subjects.length;
+        for (String sbj: subjects){
+            KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
+            keyGen.initialize(1024);
+            KeyPair key = keyGen.generateKeyPair();
+
+            X509v3CertificateBuilder certBuilder = new X509v3CertificateBuilder(new X500Name(issuer ==null? sbj:issuer),
+                    BigInteger.valueOf(iSerial++), startDate, expiryDate, new X500Name(sbj),
+                    SubjectPublicKeyInfo.getInstance(key.getPublic().getEncoded()));
+
+            ContentSigner sigGen = new JcaContentSignerBuilder("SHA1WithRSAEncryption")
+                    .setProvider("BC").build(issuerKey ==null?key.getPrivate():issuerKey);
+
+            certs[--index] = new JcaX509CertificateConverter().setProvider("BC").getCertificate(certBuilder.build(sigGen));
+            issuer= sbj;
+            issuerKey = key.getPrivate();
+
+        }
+        return certs;
+    }
+}
diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/UserResourceTest.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/UserResourceTest.java
index 0911d0541e096365e825d195fab99779eea3b9b2..eb0485282c2c05833bc790eb38f10e90e09455e6 100644
--- a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/UserResourceTest.java
+++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/UserResourceTest.java
@@ -9,6 +9,7 @@ import eu.europa.ec.edelivery.smp.data.ui.CertificateRO;
 import eu.europa.ec.edelivery.smp.data.ui.ServiceGroupRO;
 import eu.europa.ec.edelivery.smp.data.ui.ServiceResult;
 import eu.europa.ec.edelivery.smp.data.ui.UserRO;
+import eu.europa.ec.edelivery.smp.testutils.X509CertificateTestUtils;
 import org.apache.commons.io.IOUtils;
 import org.junit.Before;
 import org.junit.Test;
@@ -31,6 +32,8 @@ import org.springframework.web.context.WebApplicationContext;
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
 
+import java.security.cert.X509Certificate;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
@@ -119,7 +122,26 @@ public class UserResourceTest {
         assertEquals("3", res.getSerialNumber());
         assertEquals("CN=SMP test,O=DIGIT,C=BE:0000000000000003", res.getCertificateId());
         assertEquals("sno=3&subject=C%3DBE%2CO%3DDIGIT%2CCN%3DSMP+test%2CE%3Dsmp%40test.com&validfrom=May+22+20%3A59%3A00+2018+GMT&validto=May+22+20%3A56%3A00+2019+GMT&issuer=C%3DBE%2CO%3DDIGIT%2CCN%3DIntermediate+CA", res.getBlueCoatHeader());
+    }
+
+    @Test
+    public void uploadCertificateIdWithEmailSerialNumberInSubjectCertIdTest() throws Exception {
+        String subject = "CN=common name,emailAddress=CEF-EDELIVERY-SUPPORT@ec.europa.eu,serialNumber=1,O=org,ST=My town,postalCode=2151, L=GreatTown,street=My Street. 20, C=BE";
+        String serialNumber = "1234321";
+        X509Certificate certificate = X509CertificateTestUtils.createX509CertificateForTest(serialNumber, subject);
+        byte[] buff = certificate.getEncoded();
+        // given when
+        MvcResult result = mvc.perform(post(PATH+"/1098765430/certdata")
+                .with(SYSTEM_CREDENTIALS)
+                .content(buff))
+                .andExpect(status().isOk()).andReturn();
+
+        //them
+        ObjectMapper mapper = new ObjectMapper();
+        CertificateRO res = mapper.readValue(result.getResponse().getContentAsString(), CertificateRO.class);
+
 
+        assertEquals("CN=common name,O=org,C=BE:0000000001234321", res.getCertificateId());
     }
 
     @Test