diff --git a/docker-compose.yml b/docker-compose.yml
index 3c37cc1329ed8bda7d93fc56c6865571b6755bc3..682937390adefc6ff85ea5c78580c93dbedc3aa3 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -14,6 +14,20 @@ services:
       - ADMIN_USERNAME=${DEV_ADMIN_USERNAME}
       - SERVICE_EMAIL_URL=${DEV_SERVICE_EMAIL_URL}
       - PLATEFORM_DATA_ADMIN_EMAIL=${DEV_PLATEFORM_DATA_ADMIN_EMAIL}
+    restart: unless-stopped
+    depends_on:
+      - redis
+        
+  redis:
+    container_name: middleware-legacy-aut-redis-${NODE_ENV}
+    image: redis:5.0.0-alpine
+    command: ["redis-server", "--appendonly", "yes"]
+    hostname: redis
+    volumes:
+      - redis-data:/data
     restart: unless-stopped 
 
+volumes:
+  redis-data:
+
 
diff --git a/package-lock.json b/package-lock.json
index f0229826d198491d88f6b1411aacece31517d104..086e991f141c9ccef70803ae2314ea840fceccb9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1332,8 +1332,7 @@
     "bluebird": {
       "version": "3.5.3",
       "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz",
-      "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==",
-      "dev": true
+      "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw=="
     },
     "bn.js": {
       "version": "4.11.8",
@@ -2481,6 +2480,11 @@
       "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.1.0.tgz",
       "integrity": "sha512-/veDn2ztgRlB7gKmE3i9f6CmDIyXAy6d5nBq+whO9SLX+Zs1sXEgFLPi+aSuWqUuusMfbi84fT8j34fs1HaYUw=="
     },
+    "double-ended-queue": {
+      "version": "2.1.0-0",
+      "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz",
+      "integrity": "sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw="
+    },
     "duplexer3": {
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
@@ -7165,6 +7169,26 @@
         "util.promisify": "^1.0.0"
       }
     },
+    "redis": {
+      "version": "2.8.0",
+      "resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz",
+      "integrity": "sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==",
+      "requires": {
+        "double-ended-queue": "^2.1.0-0",
+        "redis-commands": "^1.2.0",
+        "redis-parser": "^2.6.0"
+      }
+    },
+    "redis-commands": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.4.0.tgz",
+      "integrity": "sha512-cu8EF+MtkwI4DLIT0x9P8qNTLFhQD4jLfxLR0cCNkeGzs87FN6879JOJwNQR/1zD7aSYNbU0hgsV9zGY71Itvw=="
+    },
+    "redis-parser": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz",
+      "integrity": "sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs="
+    },
     "reflect-metadata": {
       "version": "0.1.12",
       "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.12.tgz",
diff --git a/package.json b/package.json
index 6bf5423661563dbdc1fd006f86796eaaa1a3fdb8..02a387cfb43506378f77b949b3410e457886b042 100644
--- a/package.json
+++ b/package.json
@@ -23,17 +23,20 @@
     "@nestjs/common": "^5.1.0",
     "@nestjs/core": "^5.1.0",
     "@nestjs/swagger": "^2.5.1",
+    "bluebird": "^3.5.3",
     "class-transformer": "^0.2.0",
     "class-validator": "^0.9.1",
     "dotenv": "^6.1.0",
     "jsonwebtoken": "^8.4.0",
     "moment": "^2.23.0",
     "node-rsa": "^1.0.3",
+    "redis": "^2.8.0",
     "reflect-metadata": "^0.1.12",
     "request": "^2.88.0",
     "request-promise-native": "^1.0.5",
     "rxjs": "^6.2.2",
-    "typescript": "^3.0.1"
+    "typescript": "^3.0.1",
+    "uuid": "^3.3.2"
   },
   "devDependencies": {
     "@nestjs/testing": "^5.1.0",
diff --git a/src/configuration/config.ts b/src/configuration/config.ts
index bb6fc2df6f6ef8235ba17754efdb960f6c7491f5..05d70ed97633dde941db411d598ce224020b9f77 100644
--- a/src/configuration/config.ts
+++ b/src/configuration/config.ts
@@ -7,4 +7,9 @@ export const Config = {
   plateformeDataAdminEmail: '',
   publicKey: '',
   privateKey: '',
+  accountCreationTokenTTL: 86400, // Time to live of the token used to validate the cration of an account in second (24h)
+  redis: {
+    port: 6379,
+    host: 'redis',
+  },
 };
\ No newline at end of file
diff --git a/src/email-templates/account-creation/account-creation-template.html b/src/email-templates/account-creation/account-creation-template.html
new file mode 100644
index 0000000000000000000000000000000000000000..83f047e0bc4944791b5777fe7c5894721c8eaac0
--- /dev/null
+++ b/src/email-templates/account-creation/account-creation-template.html
@@ -0,0 +1,28 @@
+<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Validation de votre compte</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
+          .ReadMsgBody { width:100%; }
+          .ExternalClass { width:100%; }
+          .ExternalClass * { line-height:100%; }
+          body { margin:0;padding:0;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%; }
+          table, td { border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt; }
+          img { border:0;height:auto;line-height:100%; outline:none;text-decoration:none;-ms-interpolation-mode:bicubic; }
+          p { display:block;margin:13px 0; }</style><!--[if !mso]><!--><style type="text/css">@media only screen and (max-width:480px) {
+            @-ms-viewport { width:320px; }
+            @viewport { width:320px; }
+          }</style><!--<![endif]--><!--[if mso]>
+        <xml>
+        <o:OfficeDocumentSettings>
+          <o:AllowPNG/>
+          <o:PixelsPerInch>96</o:PixelsPerInch>
+        </o:OfficeDocumentSettings>
+        </xml>
+        <![endif]--><!--[if lte mso 11]>
+        <style type="text/css">
+          .outlook-group-fix { width:100% !important; }
+        </style>
+        <![endif]--><!--[if !mso]><!--><link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet" type="text/css"><style type="text/css">@import url(https://fonts.googleapis.com/css?family=Lato);</style><!--<![endif]--><style type="text/css">@media only screen and (min-width:480px) {
+        .mj-column-per-100 { width:100% !important; max-width: 100%; }
+      }</style><style type="text/css">@media only screen and (max-width:480px) {
+      table.full-width-mobile { width: 100% !important; }
+      td.full-width-mobile { width: auto !important; }
+    }</style></head><body><div><!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--><div style="Margin:0px auto;max-width:600px;"><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;"><tbody><tr><td style="border:1px solid #ccc;direction:ltr;font-size:0px;padding:0px 0px;text-align:center;vertical-align:top;"><!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" width="600px" ><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:598px;" width="598" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--><div style="background:white;background-color:white;Margin:0px auto;max-width:598px;"><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:white;background-color:white;width:100%;"><tbody><tr><td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;vertical-align:top;"><!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:598px;" ><![endif]--><div class="mj-column-per-100 outlook-group-fix" style="font-size:13px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%"><tr><td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:collapse;border-spacing:0px;"><tbody><tr><td style="width:250px;"><img height="auto" src="https://highway-to-data.alpha.grandlyon.com/email-template-assets/datagrandlyoncom.png" style="border:0;display:block;outline:none;text-decoration:none;height:auto;width:100%;" width="250"></td></tr></tbody></table></td></tr><tr><td style="font-size:0px;padding:10px 25px;word-break:break-word;"><p style="border-top:solid 4px #ed1c24;font-size:1;margin:0px auto;width:100%;"></p><!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" style="border-top:solid 4px #ed1c24;font-size:1;margin:0px auto;width:548px;" role="presentation" width="548px" ><tr><td style="height:0;line-height:0;"> &nbsp;
+</td></tr></table><![endif]--></td></tr><tr><td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;"><div style="font-family:Lato;font-size:16px;line-height:25px;text-align:left;color:#000000;"><h2 align="center">Validation de votre compte</h2></div></td></tr><tr><td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;"><div style="font-family:Lato;font-size:16px;line-height:25px;text-align:left;color:#000000;"><p style="margin:0px;">Bonjour,</p><p>Vous avez récemment effectué une demarche de cration de compte sur la plateforme data.grandlyon.com.</p><p>Afin de valider votre email et de finaliser la création de votre compte, veuillez cliquer sur le lien suivant.</p><p><a href="${info.accountValidationUrl}">${info.accountValidationUrl}</a></p><p>Ce lien expirera ${info.tokenValidity}h après la saisie du formulaire de création de compte.</p><p>Merci d'utiliser notre site !</p><p>L'équipe de data.grandlyon.com</p></div></td></tr></table></div><!--[if mso | IE]></td></tr></table><![endif]--></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table></td></tr><tr><td class="" width="600px" ><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:598px;" width="598" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--><div style="background:#ed1c24;background-color:#ed1c24;Margin:0px auto;max-width:598px;"><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#ed1c24;background-color:#ed1c24;width:100%;"><tbody><tr><td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;vertical-align:top;"><!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:598px;" ><![endif]--><div class="mj-column-per-100 outlook-group-fix" style="font-size:13px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%"><tr><td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;"><!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" ><tr><td><![endif]--><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;"><tr><td style="padding:4px;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:25px;"><tr><td style="font-size:0;height:25px;vertical-align:middle;width:25px;"><a href="https://download.data.grandlyon.com/catalogue/srv/fre/rss.search?sortBy=publicationDate&amp;georss=simplepoint&amp;data" target="_blank"><img height="25" src="https://highway-to-data.alpha.grandlyon.com/email-template-assets/rss.png" style="border-radius:3px;" width="25"></a></td></tr></table></td></tr></table><!--[if mso | IE]></td><td><![endif]--><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;"><tr><td style="padding:4px;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:25px;"><tr><td style="font-size:0;height:25px;vertical-align:middle;width:25px;"><a href="http://www.facebook.com/legrandlyon" target="_blank"><img height="25" src="https://highway-to-data.alpha.grandlyon.com/email-template-assets/facebook.png" style="border-radius:3px;" width="25"></a></td></tr></table></td></tr></table><!--[if mso | IE]></td><td><![endif]--><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;"><tr><td style="padding:4px;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:25px;"><tr><td style="font-size:0;height:25px;vertical-align:middle;width:25px;"><a href="https://twitter.com/grandlyon" target="_blank"><img height="25" src="https://highway-to-data.alpha.grandlyon.com/email-template-assets/twitter.png" style="border-radius:3px;" width="25"></a></td></tr></table></td></tr></table><!--[if mso | IE]></td></tr></table><![endif]--></td></tr></table></div><!--[if mso | IE]></td></tr></table><![endif]--></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table></td></tr></table><![endif]--></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table><![endif]--></div></body></html>
\ No newline at end of file
diff --git a/src/email-templates/account-creation/account-creation-template.mjml b/src/email-templates/account-creation/account-creation-template.mjml
new file mode 100644
index 0000000000000000000000000000000000000000..0040fbbfa849e5c10f458e0410aaad05d5c2005c
--- /dev/null
+++ b/src/email-templates/account-creation/account-creation-template.mjml
@@ -0,0 +1,65 @@
+<mjml>
+  <mj-head>
+    <mj-title>Validation de votre compte</mj-title>
+    <mj-font name="Lato" href="https://fonts.googleapis.com/css?family=Lato" />
+    <mj-attributes>
+      <mj-text font-family="Lato" line-height="25px" font-size="16px" />
+    </mj-attributes>
+  </mj-head>
+  <mj-body>
+    <mj-wrapper border="1px solid #ccc" padding="0px 0px">
+      <mj-section background-color="white">
+        <mj-column>
+
+          <mj-image width="250px" src="https://highway-to-data.alpha.grandlyon.com/email-template-assets/datagrandlyoncom.png"></mj-image>
+
+          <mj-divider border-color="#ed1c24"></mj-divider>
+
+          <mj-text>
+            <h2 align="center">
+              Validation de votre compte
+            </h2>
+          </mj-text>
+          <mj-text>
+            <p style="margin:0px;">Bonjour,</p>
+
+            <p>Vous avez récemment effectué une demarche de cration de compte sur la plateforme data.grandlyon.com.</p>
+
+            <p>Afin de valider votre email et de finaliser la création de votre compte, veuillez cliquer sur le lien suivant.</p>
+
+            <p>
+              <a href="${info.accountValidationUrl}">
+                ${info.accountValidationUrl}
+              </a>
+            </p>
+
+            <p>Ce lien expirera ${info.tokenValidity}h après la saisie du formulaire de création de compte.</p>
+
+            <p>
+              Merci d'utiliser notre site !
+            </p>
+
+            <p>
+              L'équipe de data.grandlyon.com
+            </p>
+          </mj-text>
+        </mj-column>
+      </mj-section>
+
+      <mj-section background-color="#ed1c24">
+        <mj-column>
+          <mj-social font-size="15px" icon-size="25px" mode="horizontal">
+            <mj-social-element href="https://download.data.grandlyon.com/catalogue/srv/fre/rss.search?sortBy=publicationDate&amp;georss=simplepoint&amp;data" src="https://highway-to-data.alpha.grandlyon.com/email-template-assets/rss.png">
+            </mj-social-element>
+            <mj-social-element href="http://www.facebook.com/legrandlyon" src="https://highway-to-data.alpha.grandlyon.com/email-template-assets/facebook.png">
+            </mj-social-element>
+            <mj-social-element href="https://twitter.com/grandlyon" src="https://highway-to-data.alpha.grandlyon.com/email-template-assets/twitter.png">
+            </mj-social-element>
+          </mj-social>
+        </mj-column>
+      </mj-section>
+
+
+    </mj-wrapper>
+  </mj-body>
+</mjml>
\ No newline at end of file
diff --git a/src/email-templates/account-creation/index.ts b/src/email-templates/account-creation/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..9507f4738b8e85d082f6759097e6bd9603b35ca6
--- /dev/null
+++ b/src/email-templates/account-creation/index.ts
@@ -0,0 +1,37 @@
+export const buildAccountValidationEmail = (info: AccountValidationEmailInfo) => {
+  const html = `<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Validation de votre compte</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
+  .ReadMsgBody { width:100%; }
+  .ExternalClass { width:100%; }
+  .ExternalClass * { line-height:100%; }
+  body { margin:0;padding:0;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%; }
+  table, td { border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt; }
+  img { border:0;height:auto;line-height:100%; outline:none;text-decoration:none;-ms-interpolation-mode:bicubic; }
+  p { display:block;margin:13px 0; }</style><!--[if !mso]><!--><style type="text/css">@media only screen and (max-width:480px) {
+    @-ms-viewport { width:320px; }
+    @viewport { width:320px; }
+  }</style><!--<![endif]--><!--[if mso]>
+<xml>
+<o:OfficeDocumentSettings>
+  <o:AllowPNG/>
+  <o:PixelsPerInch>96</o:PixelsPerInch>
+</o:OfficeDocumentSettings>
+</xml>
+<![endif]--><!--[if lte mso 11]>
+<style type="text/css">
+  .outlook-group-fix { width:100% !important; }
+</style>
+<![endif]--><!--[if !mso]><!--><link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet" type="text/css"><style type="text/css">@import url(https://fonts.googleapis.com/css?family=Lato);</style><!--<![endif]--><style type="text/css">@media only screen and (min-width:480px) {
+.mj-column-per-100 { width:100% !important; max-width: 100%; }
+}</style><style type="text/css">@media only screen and (max-width:480px) {
+table.full-width-mobile { width: 100% !important; }
+td.full-width-mobile { width: auto !important; }
+}</style></head><body><div><!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--><div style="Margin:0px auto;max-width:600px;"><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;"><tbody><tr><td style="border:1px solid #ccc;direction:ltr;font-size:0px;padding:0px 0px;text-align:center;vertical-align:top;"><!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" width="600px" ><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:598px;" width="598" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--><div style="background:white;background-color:white;Margin:0px auto;max-width:598px;"><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:white;background-color:white;width:100%;"><tbody><tr><td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;vertical-align:top;"><!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:598px;" ><![endif]--><div class="mj-column-per-100 outlook-group-fix" style="font-size:13px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%"><tr><td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:collapse;border-spacing:0px;"><tbody><tr><td style="width:250px;"><img height="auto" src="https://highway-to-data.alpha.grandlyon.com/email-template-assets/datagrandlyoncom.png" style="border:0;display:block;outline:none;text-decoration:none;height:auto;width:100%;" width="250"></td></tr></tbody></table></td></tr><tr><td style="font-size:0px;padding:10px 25px;word-break:break-word;"><p style="border-top:solid 4px #ed1c24;font-size:1;margin:0px auto;width:100%;"></p><!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" style="border-top:solid 4px #ed1c24;font-size:1;margin:0px auto;width:548px;" role="presentation" width="548px" ><tr><td style="height:0;line-height:0;"> &nbsp;
+</td></tr></table><![endif]--></td></tr><tr><td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;"><div style="font-family:Lato;font-size:16px;line-height:25px;text-align:left;color:#000000;"><h2 align="center">Validation de votre compte</h2></div></td></tr><tr><td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;"><div style="font-family:Lato;font-size:16px;line-height:25px;text-align:left;color:#000000;"><p style="margin:0px;">Bonjour,</p><p>Vous avez récemment effectué une demarche de cration de compte sur la plateforme data.grandlyon.com.</p><p>Afin de valider votre email et de finaliser la création de votre compte, veuillez cliquer sur le lien suivant.</p><p><a href="${info.accountValidationUrl}">${info.accountValidationUrl}</a></p><p>Ce lien expirera ${info.tokenValidity}h après la saisie du formulaire de création de compte.</p><p>Merci d'utiliser notre site !</p><p>L'équipe de data.grandlyon.com</p></div></td></tr></table></div><!--[if mso | IE]></td></tr></table><![endif]--></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table></td></tr><tr><td class="" width="600px" ><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:598px;" width="598" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--><div style="background:#ed1c24;background-color:#ed1c24;Margin:0px auto;max-width:598px;"><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#ed1c24;background-color:#ed1c24;width:100%;"><tbody><tr><td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;vertical-align:top;"><!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:598px;" ><![endif]--><div class="mj-column-per-100 outlook-group-fix" style="font-size:13px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%"><tr><td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;"><!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" ><tr><td><![endif]--><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;"><tr><td style="padding:4px;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:25px;"><tr><td style="font-size:0;height:25px;vertical-align:middle;width:25px;"><a href="https://download.data.grandlyon.com/catalogue/srv/fre/rss.search?sortBy=publicationDate&amp;georss=simplepoint&amp;data" target="_blank"><img height="25" src="https://highway-to-data.alpha.grandlyon.com/email-template-assets/rss.png" style="border-radius:3px;" width="25"></a></td></tr></table></td></tr></table><!--[if mso | IE]></td><td><![endif]--><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;"><tr><td style="padding:4px;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:25px;"><tr><td style="font-size:0;height:25px;vertical-align:middle;width:25px;"><a href="http://www.facebook.com/legrandlyon" target="_blank"><img height="25" src="https://highway-to-data.alpha.grandlyon.com/email-template-assets/facebook.png" style="border-radius:3px;" width="25"></a></td></tr></table></td></tr></table><!--[if mso | IE]></td><td><![endif]--><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;"><tr><td style="padding:4px;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:25px;"><tr><td style="font-size:0;height:25px;vertical-align:middle;width:25px;"><a href="https://twitter.com/grandlyon" target="_blank"><img height="25" src="https://highway-to-data.alpha.grandlyon.com/email-template-assets/twitter.png" style="border-radius:3px;" width="25"></a></td></tr></table></td></tr></table><!--[if mso | IE]></td></tr></table><![endif]--></td></tr></table></div><!--[if mso | IE]></td></tr></table><![endif]--></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table></td></tr></table><![endif]--></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table><![endif]--></div></body></html>`;
+
+  return html;
+};
+
+class AccountValidationEmailInfo {
+  accountValidationUrl: string;
+  tokenValidity: number;
+}
\ No newline at end of file
diff --git a/src/email-templates/data-access-deletion/data-access-deletion-admin-template.html b/src/email-templates/data-access-deletion/data-access-deletion-admin-template.html
index c3aca2cd6b5c27609ebbd55d7961c523e939427d..f0dd89cdee85ea9614b78f9a3d5af329374588c9 100644
--- a/src/email-templates/data-access-deletion/data-access-deletion-admin-template.html
+++ b/src/email-templates/data-access-deletion/data-access-deletion-admin-template.html
@@ -1,4 +1,4 @@
-<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Réinitialisation du mot de passe</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
+<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Demande de suppression d’accès aux données</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
           .ReadMsgBody { width:100%; }
           .ExternalClass { width:100%; }
           .ExternalClass * { line-height:100%; }
diff --git a/src/email-templates/data-access-deletion/data-access-deletion-admin-template.mjml b/src/email-templates/data-access-deletion/data-access-deletion-admin-template.mjml
index 76e443ebb31d1d3be58532595df92a70b4d1bc07..7a85c8aa8e0c3f34626dff9a8b1a617f529b8e36 100644
--- a/src/email-templates/data-access-deletion/data-access-deletion-admin-template.mjml
+++ b/src/email-templates/data-access-deletion/data-access-deletion-admin-template.mjml
@@ -1,6 +1,6 @@
 <mjml>
   <mj-head>
-    <mj-title>Réinitialisation du mot de passe</mj-title>
+    <mj-title>Demande de suppression d’accès aux données</mj-title>
     <mj-font name="Lato" href="https://fonts.googleapis.com/css?family=Lato" />
     <mj-attributes>
       <mj-text font-family="Lato" line-height="25px" font-size="16px" />
diff --git a/src/email-templates/data-access-deletion/data-access-deletion-user-template.html b/src/email-templates/data-access-deletion/data-access-deletion-user-template.html
index 688c01ca49d163cca2761eeb0047e6208c596f76..74ff92872f4fac7396bcf1c5d4e74b6384a9e22e 100644
--- a/src/email-templates/data-access-deletion/data-access-deletion-user-template.html
+++ b/src/email-templates/data-access-deletion/data-access-deletion-user-template.html
@@ -1,4 +1,4 @@
-<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Réinitialisation du mot de passe</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
+<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Demande de suppression d’accès aux données</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
           .ReadMsgBody { width:100%; }
           .ExternalClass { width:100%; }
           .ExternalClass * { line-height:100%; }
diff --git a/src/email-templates/data-access-deletion/data-access-deletion-user-template.mjml b/src/email-templates/data-access-deletion/data-access-deletion-user-template.mjml
index b014c279ad8707ba6a23a45ec9a2b1bc36ec8a61..10aff6c4ff2bce98d50c49d86c94e6179690ed87 100644
--- a/src/email-templates/data-access-deletion/data-access-deletion-user-template.mjml
+++ b/src/email-templates/data-access-deletion/data-access-deletion-user-template.mjml
@@ -1,6 +1,6 @@
 <mjml>
   <mj-head>
-    <mj-title>Réinitialisation du mot de passe</mj-title>
+    <mj-title>Demande de suppression d’accès aux données</mj-title>
     <mj-font name="Lato" href="https://fonts.googleapis.com/css?family=Lato" />
     <mj-attributes>
       <mj-text font-family="Lato" line-height="25px" font-size="16px" />
diff --git a/src/email-templates/data-access-deletion/index.ts b/src/email-templates/data-access-deletion/index.ts
index b3c68281bef236e2afb06b6c2f47b9d029e1a56b..99017b71fb64a71e314d566138a236cc515a591f 100644
--- a/src/email-templates/data-access-deletion/index.ts
+++ b/src/email-templates/data-access-deletion/index.ts
@@ -1,5 +1,5 @@
 export const buildDataAccessDeletionAdminEmail = (params: DataAccessEmailDeletionInfo) => {
-  const html = `<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Réinitialisation du mot de passe</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
+  const html = `<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Demande de suppression d’accès aux données</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
   .ReadMsgBody { width:100%; }
   .ExternalClass { width:100%; }
   .ExternalClass * { line-height:100%; }
@@ -32,7 +32,7 @@ td.full-width-mobile { width: auto !important; }
 };
 
 export const buildDataAccessDeletionUserEmail = (datasets: string) => {
-  const html = `<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Réinitialisation du mot de passe</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
+  const html = `<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Demande de suppression d’accès aux données</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
   .ReadMsgBody { width:100%; }
   .ExternalClass { width:100%; }
   .ExternalClass * { line-height:100%; }
diff --git a/src/email-templates/data-access-renew/data-access-renew-admin-template.html b/src/email-templates/data-access-renew/data-access-renew-admin-template.html
index dec30bb7013521108878c7f835f740b522c00445..b66e15f6323d8185d8408216d9d610936234ad15 100644
--- a/src/email-templates/data-access-renew/data-access-renew-admin-template.html
+++ b/src/email-templates/data-access-renew/data-access-renew-admin-template.html
@@ -1,4 +1,4 @@
-<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Réinitialisation du mot de passe</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
+<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Demande de renouvellement d’accès aux données</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
           .ReadMsgBody { width:100%; }
           .ExternalClass { width:100%; }
           .ExternalClass * { line-height:100%; }
diff --git a/src/email-templates/data-access-renew/data-access-renew-admin-template.mjml b/src/email-templates/data-access-renew/data-access-renew-admin-template.mjml
index 39ccb8c2388349615bb2e977eb6e0d653f4d4c44..08927c91d2925fac71a25f9aa2251cd8fc920a58 100644
--- a/src/email-templates/data-access-renew/data-access-renew-admin-template.mjml
+++ b/src/email-templates/data-access-renew/data-access-renew-admin-template.mjml
@@ -1,6 +1,6 @@
 <mjml>
   <mj-head>
-    <mj-title>Réinitialisation du mot de passe</mj-title>
+    <mj-title>Demande de renouvellement d’accès aux données</mj-title>
     <mj-font name="Lato" href="https://fonts.googleapis.com/css?family=Lato" />
     <mj-attributes>
       <mj-text font-family="Lato" line-height="25px" font-size="16px" />
diff --git a/src/email-templates/data-access-renew/data-access-renew-user-template.html b/src/email-templates/data-access-renew/data-access-renew-user-template.html
index 26e0b0050ce38dc3de7bbe0630aba59f4dffef91..da3fb24f74455b58a06a169bf764cad683d7bfff 100644
--- a/src/email-templates/data-access-renew/data-access-renew-user-template.html
+++ b/src/email-templates/data-access-renew/data-access-renew-user-template.html
@@ -1,4 +1,4 @@
-<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Réinitialisation du mot de passe</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
+<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Demande de renouvellement d’accès aux données</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
           .ReadMsgBody { width:100%; }
           .ExternalClass { width:100%; }
           .ExternalClass * { line-height:100%; }
diff --git a/src/email-templates/data-access-renew/data-access-renew-user-template.mjml b/src/email-templates/data-access-renew/data-access-renew-user-template.mjml
index 387a0adcfdca7ef17e682ae64a3cc77606ea70d6..32156413b3b28cbd65a771931ad60b17a260d759 100644
--- a/src/email-templates/data-access-renew/data-access-renew-user-template.mjml
+++ b/src/email-templates/data-access-renew/data-access-renew-user-template.mjml
@@ -1,6 +1,6 @@
 <mjml>
   <mj-head>
-    <mj-title>Réinitialisation du mot de passe</mj-title>
+    <mj-title>Demande de renouvellement d’accès aux données</mj-title>
     <mj-font name="Lato" href="https://fonts.googleapis.com/css?family=Lato" />
     <mj-attributes>
       <mj-text font-family="Lato" line-height="25px" font-size="16px" />
diff --git a/src/email-templates/data-access-renew/index.ts b/src/email-templates/data-access-renew/index.ts
index ef2d2d977bc9a140439a5cb441d8b02c23ac2fca..b34409ba042997246952924b0b5751cdb4074c32 100644
--- a/src/email-templates/data-access-renew/index.ts
+++ b/src/email-templates/data-access-renew/index.ts
@@ -1,5 +1,5 @@
 export const buildRenewDataAccessRequestAdminEmail = (params: DataAccessEmailDeletionInfo) => {
-  const html = `<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Réinitialisation du mot de passe</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
+  const html = `<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Demande de renouvellement d’accès aux données</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
   .ReadMsgBody { width:100%; }
   .ExternalClass { width:100%; }
   .ExternalClass * { line-height:100%; }
@@ -32,7 +32,7 @@ td.full-width-mobile { width: auto !important; }
 };
 
 export const buildRenewDataAccessRequestUserEmail = (datasets: string) => {
-  const html = `<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Réinitialisation du mot de passe</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
+  const html = `<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Demande de renouvellement d’accès aux données</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
   .ReadMsgBody { width:100%; }
   .ExternalClass { width:100%; }
   .ExternalClass * { line-height:100%; }
diff --git a/src/email-templates/data-access-request/data-access-request-admin-template.html b/src/email-templates/data-access-request/data-access-request-admin-template.html
index e7543e71ca487b87818f2f997c3c8671a6823a34..e3217ac11d293f441ae4ba7cf638a7d781d5db61 100644
--- a/src/email-templates/data-access-request/data-access-request-admin-template.html
+++ b/src/email-templates/data-access-request/data-access-request-admin-template.html
@@ -1,4 +1,4 @@
-<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Réinitialisation du mot de passe</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
+<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Demande d’accès aux données</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
           .ReadMsgBody { width:100%; }
           .ExternalClass { width:100%; }
           .ExternalClass * { line-height:100%; }
diff --git a/src/email-templates/data-access-request/data-access-request-admin-template.mjml b/src/email-templates/data-access-request/data-access-request-admin-template.mjml
index 2d0e9ee6052f905b3c2ca3528e2b133bbf5dc210..91014e9c9a5238a6e9b6810c20b590d543764d88 100644
--- a/src/email-templates/data-access-request/data-access-request-admin-template.mjml
+++ b/src/email-templates/data-access-request/data-access-request-admin-template.mjml
@@ -1,6 +1,6 @@
 <mjml>
   <mj-head>
-    <mj-title>Réinitialisation du mot de passe</mj-title>
+    <mj-title>Demande d’accès aux données</mj-title>
     <mj-font name="Lato" href="https://fonts.googleapis.com/css?family=Lato" />
     <mj-attributes>
       <mj-text font-family="Lato" line-height="25px" font-size="16px" />
diff --git a/src/email-templates/data-access-request/data-access-request-user-template.html b/src/email-templates/data-access-request/data-access-request-user-template.html
index dd04e7896135395246427a9c9c52aea5fe7d0ed9..8ff98c7b0f31806a2fe3f9ba9ef424565389e634 100644
--- a/src/email-templates/data-access-request/data-access-request-user-template.html
+++ b/src/email-templates/data-access-request/data-access-request-user-template.html
@@ -1,4 +1,4 @@
-<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Réinitialisation du mot de passe</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
+<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Demande d’accès aux données</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
           .ReadMsgBody { width:100%; }
           .ExternalClass { width:100%; }
           .ExternalClass * { line-height:100%; }
diff --git a/src/email-templates/data-access-request/data-access-request-user-template.mjml b/src/email-templates/data-access-request/data-access-request-user-template.mjml
index 549b43a078a01966a3d17f0b29e086e0cc71467e..43b16ab46198de282949b36ed08d90c8d1cab939 100644
--- a/src/email-templates/data-access-request/data-access-request-user-template.mjml
+++ b/src/email-templates/data-access-request/data-access-request-user-template.mjml
@@ -1,6 +1,6 @@
 <mjml>
   <mj-head>
-    <mj-title>Réinitialisation du mot de passe</mj-title>
+    <mj-title>Demande d’accès aux données</mj-title>
     <mj-font name="Lato" href="https://fonts.googleapis.com/css?family=Lato" />
     <mj-attributes>
       <mj-text font-family="Lato" line-height="25px" font-size="16px" />
diff --git a/src/email-templates/data-access-request/index.ts b/src/email-templates/data-access-request/index.ts
index 094ca5a015c987606747dc748b2c38fa32094f09..4559d212c98d2e141fcda72dd8ec790b6b2a3ef2 100644
--- a/src/email-templates/data-access-request/index.ts
+++ b/src/email-templates/data-access-request/index.ts
@@ -1,5 +1,5 @@
 export const buildDataAccessRequestAdminEmail = (params: DataAccessEmailDeletionInfo) => {
-  const html = `<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Réinitialisation du mot de passe</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
+  const html = `<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Demande d’accès aux données</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
   .ReadMsgBody { width:100%; }
   .ExternalClass { width:100%; }
   .ExternalClass * { line-height:100%; }
@@ -32,7 +32,7 @@ td.full-width-mobile { width: auto !important; }
 };
 
 export const buildDataAccessRequestUserEmail = (datasets: string) => {
-  const html = `<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Réinitialisation du mot de passe</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
+  const html = `<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title>Demande d’accès aux données</title><!--[if !mso]><!-- --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
   .ReadMsgBody { width:100%; }
   .ExternalClass { width:100%; }
   .ExternalClass * { line-height:100%; }
diff --git a/src/legacy/errorHandlingHelper.ts b/src/legacy/errorHandlingHelper.ts
new file mode 100644
index 0000000000000000000000000000000000000000..7729554c747bd240de909d02b979bba598a1daa9
--- /dev/null
+++ b/src/legacy/errorHandlingHelper.ts
@@ -0,0 +1,14 @@
+import { HttpException } from '@nestjs/common';
+
+export function handleError(err, defaultErr) {
+  if (err instanceof HttpException) {
+    throw err;
+  } else {
+    if (err && err.error) {
+      const error = JSON.parse(err.error);
+      throw new HttpException(error.message, err.statusCode);
+    } else {
+      throw defaultErr;
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/legacy/legacy.service.ts b/src/legacy/legacy.service.ts
index 5672367633b10da05ebfb7c528ac138c89f62201..897f20ba0f4a7429e96c6bd21a817c9d4180b512 100644
--- a/src/legacy/legacy.service.ts
+++ b/src/legacy/legacy.service.ts
@@ -13,6 +13,12 @@ import { decrypt } from './encryptionHelpers';
 import { buildDataAccessDeletionAdminEmail, buildDataAccessDeletionUserEmail } from 'email-templates/data-access-deletion';
 import { buildDataAccessRequestAdminEmail, buildDataAccessRequestUserEmail } from 'email-templates/data-access-request';
 import { buildRenewDataAccessRequestAdminEmail, buildRenewDataAccessRequestUserEmail } from 'email-templates/data-access-renew';
+import { handleError } from './errorHandlingHelper';
+import * as bluebird from 'bluebird';
+import * as redis from 'redis';
+bluebird.promisifyAll(redis);
+import * as uuid4 from 'uuid/v4';
+import { buildAccountValidationEmail } from 'email-templates/account-creation';
 
 @Injectable()
 export class LegacyService {
@@ -139,34 +145,48 @@ export class LegacyService {
   async createUser(form: UserCreationForm): Promise<void> {
     Logger.log(`[-] createUser method`);
     try {
-      form.password = decrypt(form.password, this.conf.privateKey);
+      // form.password = decrypt(form.password, this.conf.privateKey);
       const legacyForm = new LegacyUserCreationForm(form);
-      let res = await request.post(`${this.conf.authUrl}/add_user/`).form(legacyForm);
-      res = JSON.parse(res);
-      if (res.server_response && res.server_response === 'Success') {
-        Logger.log(res);
-        return;
-      } else {
-        Logger.error(` [x] Error: ${res.message}`);
-        if (res.message === 'Error during account creation') {
-          throw new InternalServerErrorException(res.message);
-        }
-        if (res.message === 'Account already exists') {
-          throw new BadRequestException('existingAccount');
-        }
-        if (res.message === 'Uncomplete form') {
-          throw new BadRequestException('uncompleteForm');
-        } else {
-          throw new BadRequestException(res.message);
-        }
-      }
+
+      // Generate a unique random token
+      const accountCreationToken = uuid4();
+      Logger.log('Reset password token:', accountCreationToken);
+
+      // Set a redis key/value, this allow to open a 24h session with the token as key that will let us identify the email associated to the token
+      await this.setRedisKeyValue(accountCreationToken, JSON.stringify(legacyForm) , this.conf.accountCreationTokenTTL);
+
+      const html = buildAccountValidationEmail({ accountValidationUrl: 'test', tokenValidity: (this.conf.accountCreationTokenTTL / 3600) });
+
+      await request.post(`${this.conf.serviceEmailUrl}/email/send`).form({
+        html,
+        to: [form.email],
+        subject: 'Validation de votre compte data.grandlyon.com',
+      });
+
+      return;
+
+      // let res = await request.post(`${this.conf.authUrl}/add_user/`).form(legacyForm);
+      // res = JSON.parse(res);
+      // if (res.server_response && res.server_response === 'Success') {
+      //   Logger.log(res);
+      //   return;
+      // } else {
+      //   Logger.error(` [x] Error: ${res.message}`);
+      //   if (res.message === 'Error during account creation') {
+      //     throw new InternalServerErrorException(res.message);
+      //   }
+      //   if (res.message === 'Account already exists') {
+      //     throw new BadRequestException('existingAccount');
+      //   }
+      //   if (res.message === 'Uncomplete form') {
+      //     throw new BadRequestException('uncompleteForm');
+      //   } else {
+      //     throw new BadRequestException(res.message);
+      //   }
+      // }
     } catch (err) {
       Logger.error(err);
-      if (err instanceof HttpException) {
-        throw new HttpException(err.message, err.getStatus());
-      } else {
-        throw new InternalServerErrorException('Something went wrong.');
-      }
+      handleError(err, new InternalServerErrorException('Something went wrong.'));
     }
   }
 
@@ -607,4 +627,76 @@ export class LegacyService {
       throw new InternalServerErrorException('Couldn\'t get the public key.');
     }
   }
+
+  /****  Redis methods ****/
+
+  private async setRedisKeyValue(key: string, value: string, ttl: number): Promise<any> {
+    Logger.log(`[-] setRedisKeyValue with params: ${key} ${value} ${ttl}`);
+
+    const client = this.connectToRedis();
+
+    try {
+      // Set key value with expiration time in seconds
+      const res = await client.setAsync(key, value, 'EX', ttl);
+      Logger.log(`    [*] Setting key/pair result => ${res}`);
+      client.quit();
+      return res;
+    } catch (error) {
+      Logger.error(`    [x] Setting key/pair error:`);
+      Logger.error(error);
+      client.quit();
+      handleError(error, new InternalServerErrorException('Couldn\'t set key/value in redis.'));
+    }
+  }
+
+  private async deleteRedisKey(key: string): Promise<any> {
+    Logger.log(`[-] deleteRedisKey with params: ${key}`);
+
+    const client = this.connectToRedis();
+
+    try {
+      // Set key value with expiration time in seconds
+      const res = await client.delAsync(key);
+      Logger.log(`    [*] Removing key/pair result => ${res}`);
+      client.quit();
+      return res;
+    } catch (error) {
+      Logger.error(`    [x] Removing key/pair error:`);
+      Logger.error(error);
+      client.quit();
+      handleError(error, new InternalServerErrorException('Couldn\'t remove key/value in redis.'));
+    }
+  }
+
+  private async getRedisValueByKey(key: string): Promise<string> {
+    Logger.log(`[-] getRedisValueByKey with key: ${key}`);
+
+    const client = this.connectToRedis();
+
+    try {
+      const res = await client.getAsync(key);
+      Logger.log(`    [*] Value found => ${res}`);
+      client.quit();
+      return res;
+    } catch (error) {
+      Logger.error(`    [x] Error getting value from redis:`);
+      Logger.error(error);
+      client.quit();
+      handleError(error, new InternalServerErrorException('Couldn\'t get value from redis.'));
+    }
+  }
+
+  private connectToRedis() {
+    Logger.log(`[-] Connecting to redis`);
+
+    const client = redis.createClient({ host: this.conf.redis.host, port: this.conf.redis.port });
+
+    client.on('error', (err) => {
+      Logger.error('    [x] Redis client error:');
+      Logger.error(err);
+      client.quit();
+    });
+
+    return client;
+  }
 }
\ No newline at end of file