diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2f94addbc510e5ba4c3dd6ad0844a9586d09e59c..66e872cf6a13633c5ff316860ac745b2397c3e79 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -12,6 +12,10 @@ build:
   image: docker:18.09
   services:
     - docker:18.09-dind
+  only:
+    - dev
+    - rec
+    - master
   stage: build
   script:
     - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
@@ -32,12 +36,15 @@ deploy_dev:
     - docker system prune -a -f
 
 code_analysis:
-  image: skilldlabs/sonar-scanner:3.4.0
+  image: skilldlabs/sonar-scanner:4.0.0
   services:
     - docker:18.09-dind
   stage: sonar-analysis
   only:
     - dev
+  before_script:
+    - export NODE_PATH=$NODE_PATH:`npm root -g`
+    - npm install -g typescript
   script:
     - >
       sonar-scanner
@@ -48,3 +55,14 @@ code_analysis:
       -Dsonar.host.url=${SONAR_URL}
       -Dsonar.projectKey=${SONAR_PROJECT_KEY}
       -Dsonar.login=${SONAR_TOKEN}
+
+mr:
+  image: docker:18.09
+  services:
+    - docker:18.09-dind
+  stage: build
+  only:
+    - merge_requests
+  script:
+    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
+    - docker build .
diff --git a/package-lock.json b/package-lock.json
index e7b34caac450c58b2119446195eaa18a0318399f..9cbd9ccb691588704b567e79dd12534926bcd2d6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3538,6 +3538,11 @@
       "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==",
       "dev": true
     },
+    "class-transformer": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.3.1.tgz",
+      "integrity": "sha512-cKFwohpJbuMovS8xVLmn8N2AUbAuc8pVo4zEfsUVo8qgECOogns1WVk/FkOZoxhOPTyTYFckuoH+13FO+MQ8GA=="
+    },
     "class-utils": {
       "version": "0.3.6",
       "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
diff --git a/package.json b/package.json
index e31fb5242390f4bc84e6f9313ae223c447e19a24..35186b8b3707f6b468d07db0d8bcabf1f294e6b1 100644
--- a/package.json
+++ b/package.json
@@ -30,6 +30,7 @@
     "@nestjs/swagger": "^4.7.5",
     "@types/bcrypt": "^3.0.0",
     "bcrypt": "^5.0.0",
+    "class-transformer": "^0.3.1",
     "class-validator": "^0.12.2",
     "dotenv": "^8.2.0",
     "ejs": "^3.1.5",
diff --git a/src/auth/auth.controller.spec.ts b/src/auth/auth.controller.spec.ts
index 5d080347ed76c593ad45056fbf716d96f2c32db6..819bebe40d056c7a9315d71c309bd092e61e17d5 100644
--- a/src/auth/auth.controller.spec.ts
+++ b/src/auth/auth.controller.spec.ts
@@ -1,15 +1,13 @@
-import { JwtModule, JwtService } from '@nestjs/jwt';
+import { JwtModule } from '@nestjs/jwt';
 import { getModelToken } from '@nestjs/mongoose';
 import { PassportModule } from '@nestjs/passport';
 import { Test, TestingModule } from '@nestjs/testing';
 import { ConfigurationModule } from '../configuration/configuration.module';
 import { MailerModule } from '../mailer/mailer.module';
 import { User } from '../users/user.schema';
-import { UsersModule } from '../users/users.module';
 import { UsersService } from '../users/users.service';
 import { AuthController } from './auth.controller';
 import { AuthService } from './auth.service';
-import { JwtStrategy } from './strategy/jwt.strategy';
 
 describe('AuthController', () => {
   let controller: AuthController;
diff --git a/src/auth/auth.service.spec.ts b/src/auth/auth.service.spec.ts
index f097f8d4e8f2859483a68d3ced21b8ca56b9ea8e..0582053c0ba31e3b72bc38e036442121a5e58ab1 100644
--- a/src/auth/auth.service.spec.ts
+++ b/src/auth/auth.service.spec.ts
@@ -51,14 +51,14 @@ describe('AuthService', () => {
         email: 'jacques.dupont@mii.com',
         role: 0,
       };
-      const loginDto: LoginDto = { email: 'jacques.dupont@mii.com', password: 'test1A!!' };
+      const loginDto: LoginDto = { email: 'jacques.dupont@mii.com', password: 'test1A!!' }; //NOSONAR
       jest.spyOn(service, 'validateUser').mockImplementation(async (): Promise<any> => result);
       expect(await service.validateUser(loginDto)).toBe(result);
     });
 
     it('should not validateUser', async () => {
       const result = null;
-      const loginDto: LoginDto = { email: 'jacques.dupont@mii.com', password: 'test1A!!' };
+      const loginDto: LoginDto = { email: 'jacques.dupont@mii.com', password: 'test1A!!' }; //NOSONAR
       jest.spyOn(service, 'validateUser').mockImplementation(async (): Promise<any> => result);
       expect(await service.validateUser(loginDto)).toBe(result);
     });
@@ -67,28 +67,28 @@ describe('AuthService', () => {
   describe('login', () => {
     it('should login user jacques.dupont@mii.com', async () => {
       const result = { username: ' jacques.dupont@mii.com', token: 'tok3n!1sfq' };
-      const loginDto: LoginDto = { email: 'jacques.dupont@mii.com', password: 'test1A!!' };
+      const loginDto: LoginDto = { email: 'jacques.dupont@mii.com', password: 'test1A!!' }; //NOSONAR
       jest.spyOn(service, 'validateUser').mockImplementation(async (): Promise<{ username; token }> => result);
       expect(await service.validateUser(loginDto)).toBe(result);
     });
 
     it('should not login jacques.dupont@mii.com, email not verified', async () => {
       const result = new HttpException('Invalid credentials', HttpStatus.UNAUTHORIZED);
-      const loginDto: LoginDto = { email: 'jacques.dupont@mii.com', password: 'test1A!!' };
+      const loginDto: LoginDto = { email: 'jacques.dupont@mii.com', password: 'test1A!!' }; //NOSONAR
       jest.spyOn(service, 'validateUser').mockImplementation(async (): Promise<any> => result);
       expect(await service.validateUser(loginDto)).toBe(result);
     });
 
     it('should not login jacques.dupont@mii.com, bad password', async () => {
       const result = new HttpException('Invalid credentials', HttpStatus.UNAUTHORIZED);
-      const loginDto: LoginDto = { email: 'jacques.dupont@mii.com', password: 'test1A!!' };
+      const loginDto: LoginDto = { email: 'jacques.dupont@mii.com', password: 'test1A!!' }; //NOSONAR
       jest.spyOn(service, 'validateUser').mockImplementation(async (): Promise<any> => result);
       expect(await service.validateUser(loginDto)).toBe(result);
     });
 
     it('should not login jacques.dupont@mii.com, username does not exist', async () => {
       const result = new HttpException('Invalid credentials', HttpStatus.UNAUTHORIZED);
-      const loginDto: LoginDto = { email: 'jacques.dupont@mii.com', password: 'test1A!!' };
+      const loginDto: LoginDto = { email: 'jacques.dupont@mii.com', password: 'test1A!!' }; //NOSONAR
       jest.spyOn(service, 'validateUser').mockImplementation(async (): Promise<any> => result);
       expect(await service.validateUser(loginDto)).toBe(result);
     });
diff --git a/src/main.ts b/src/main.ts
index 65ac8383570553afd58e1b089359a71bd922ceb5..ed8e487ca1cfc569b967338942d322c5c1f7f31c 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -1,10 +1,11 @@
+import { ValidationPipe } from '@nestjs/common';
 import { NestFactory } from '@nestjs/core';
 import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
 import { AppModule } from './app.module';
 
 async function bootstrap() {
   const app = await NestFactory.create(AppModule);
-
+  app.useGlobalPipes(new ValidationPipe());
   const options = new DocumentBuilder().setTitle('RAM').setDescription('RAM API description').setVersion('1.0').build();
   const document = SwaggerModule.createDocument(app, options);
   SwaggerModule.setup('api', app, document);
diff --git a/src/structures/dto/create-structure.dto.ts b/src/structures/dto/create-structure.dto.ts
index 857697914c2aad758535f706b2e2f0811fb3e2bd..147b677fa780ca6827161ae71483d8d278e98fc2 100644
--- a/src/structures/dto/create-structure.dto.ts
+++ b/src/structures/dto/create-structure.dto.ts
@@ -1,55 +1,70 @@
+import { Type } from 'class-transformer';
+import { ArrayNotEmpty, IsNotEmpty, ValidateNested } from 'class-validator';
+import { Address } from '../schemas/address.schema';
 import { Week } from '../schemas/week.schema';
 
 export class CreateStructureDto {
   id: number;
-  numero: number;
-  dateDeCreation: string;
-  derniereModification: string;
-  nomDeLusager: string;
-  votreStructureEstElle: string;
-  nomDeVotreStructure: string;
+  numero: string;
+  createdAt: string;
+  updatedAt: string;
+
+  @IsNotEmpty()
+  structureRepresentation: string;
+
+  @IsNotEmpty()
+  structureName: string;
+
+  @ArrayNotEmpty()
+  structureType: string[];
+
+  @IsNotEmpty()
   description: string;
-  activitesMaintenuesDansLeCadreDuConfinement: string;
-  n: string;
-  voie: string;
-  telephone: string;
-  courriel: string;
-  siteWeb: string;
+
+  @ValidateNested({ each: true })
+  @Type(() => Address)
+  address: Address;
+
+  @IsNotEmpty()
+  contactPhone: string;
+
+  @IsNotEmpty()
+  contactMail: string;
+
+  website: string;
   facebook: string;
   twitter: string;
   instagram: string;
-  civilite: string;
-  nom: string;
-  prenom: string;
+  gender: string;
+  contactName: string;
+  contactSurname: string;
   fonction: string;
-  accessibilitePersonnesAMobiliteReduitePmr: string;
-  modalitesDacces: string[];
-  labelsEtQualifications: string[];
-  publicsAcceptes: string[];
-  fermeturesExceptionnelles: string;
-  jaccompagneLesUsagersDansLeursDemarchesEnLigne: boolean;
-  accompagnementDesDemarches: string[];
-  autresAccompagnements: string;
-  lesCompetencesDeBase: string[];
-  accesAuxDroits: string[];
-  insertionSocialeEtProfessionnelle: string[];
-  aideALaParentalite: string[];
-  cultureEtSecuriteNumerique: string[];
-  wifiEnAccesLibre: boolean;
-  nbComputers: boolean;
-  nombre: string;
-  tablettes: boolean;
-  bornesNumeriques: boolean;
-  imprimantes: boolean;
-  precisionsSiNecessaire: string;
-  statutJuridique: string;
-  appartenezVousAUnReseauDeMediation: string;
-  precisezLequel: string;
-  idDeLitemStructureDansDirectus: string;
-  statutDeLitemStructureDansDirectus: string;
-  idDeLitemOffreDansDirectus: string;
-  statut: string;
-  typeDeStructure: string[];
-  commune: string;
+  lockdownActivity: string;
+  pmrAccess: boolean;
+  publicsAccompaniment: string[];
+  proceduresAccompaniment: string[];
+  @ArrayNotEmpty()
+  accessModality: string[];
+
+  documentsMeeting: string;
+  labelsQualifications: string[];
+
+  @ArrayNotEmpty()
+  publics: string[];
+
+  nbComputers: number;
+  nbPrinters: number;
+  nbTablets: number;
+  nbNumericTerminal: number;
+  exceptionalClosures: string;
+  equipmentsAndServices: string[];
   hours: Week;
+  equipmentsDetails: string;
+  equipmentsAccessType: string[];
+  baseSkills: string[];
+  accessRight: string[];
+  parentingHelp: string[];
+  socialAndProfessional: string[];
+  digitalCultureSecurity: string[];
+  coord: number[];
 }
diff --git a/src/structures/schemas/address.schema.ts b/src/structures/schemas/address.schema.ts
new file mode 100644
index 0000000000000000000000000000000000000000..8fa4e35c5c469dcfd2a36d88b78faf7d1575a93f
--- /dev/null
+++ b/src/structures/schemas/address.schema.ts
@@ -0,0 +1,16 @@
+import { SchemaFactory } from '@nestjs/mongoose';
+import { IsNotEmpty } from 'class-validator';
+
+export type AddressDocument = Address & Document;
+
+export class Address {
+  numero: string;
+
+  @IsNotEmpty()
+  street: string;
+
+  @IsNotEmpty()
+  commune: string;
+}
+
+export const AddressSchema = SchemaFactory.createForClass(Address);
diff --git a/src/structures/schemas/structure.schema.ts b/src/structures/schemas/structure.schema.ts
index 711c63714c5c39442ed74f8bf29d333788155755..3e609fa7d5d2010cabbb09d9e25411cce1505dea 100644
--- a/src/structures/schemas/structure.schema.ts
+++ b/src/structures/schemas/structure.schema.ts
@@ -1,5 +1,6 @@
 import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
 import { Document } from 'mongoose';
+import { Address } from './address.schema';
 import { Week } from './week.schema';
 
 export type StructureDocument = Structure & Document;
@@ -13,43 +14,36 @@ export class Structure {
   numero: string;
 
   @Prop()
-  dateDeCreation: string;
+  createdAt: string;
 
   @Prop()
-  derniereModification: string;
+  updatedAt: string;
 
   @Prop()
-  nomDeLusager: string;
+  structureRepresentation: string;
 
   @Prop()
-  votreStructureEstElle: string;
+  structureName: string;
 
   @Prop()
-  nomDeVotreStructure: string;
+  structureType: string[];
 
   @Prop()
   description: string;
 
   @Prop()
-  activitesMaintenuesDansLeCadreDuConfinement: string;
+  lockdownActivity: string;
 
   @Prop()
-  n: string;
+  address: Address;
 
   @Prop()
-  voie: string;
+  contactPhone: string;
 
   @Prop()
-  address: string;
-
-  @Prop()
-  telephone: string;
-
-  @Prop()
-  courriel: string;
-
+  contactMail: string;
   @Prop()
-  siteWeb: string;
+  website: string;
 
   @Prop()
   facebook: string;
@@ -61,91 +55,76 @@ export class Structure {
   instagram: string;
 
   @Prop()
-  civilite: string;
+  gender: string;
 
   @Prop()
-  nom: string;
+  contactName: string;
 
   @Prop()
-  prenom: string;
+  contactSurname: string;
 
   @Prop()
   fonction: string;
 
   @Prop()
-  accessibilitePersonnesAMobiliteReduitePmr: string;
+  pmrAccess: boolean;
 
   @Prop()
-  modalitesDacces: string[];
+  accessModality: string[];
 
   @Prop()
-  labelsEtQualifications: string[];
+  documentsMeeting: string;
 
   @Prop()
-  publicsAcceptes: string[];
+  labelsQualifications: string[];
 
   @Prop()
-  fermeturesExceptionnelles: string;
+  publics: string[];
 
   @Prop()
-  jaccompagneLesUsagersDansLeursDemarchesEnLigne: boolean;
+  exceptionalClosures: string;
 
   @Prop()
-  accompagnementDesDemarches: string[];
+  publicsAccompaniment: string[];
 
   @Prop()
-  autresAccompagnements: string;
+  proceduresAccompaniment: string[];
 
   @Prop()
-  lesCompetencesDeBase: string[];
+  baseSkills: string[];
 
   @Prop()
-  accesAuxDroits: string[];
+  accessRight: string[];
 
   @Prop()
-  insertionSocialeEtProfessionnelle: string[];
+  socialAndProfessional: string[];
 
   @Prop()
-  aideALaParentalite: string[];
+  parentingHelp: string[];
 
   @Prop()
-  cultureEtSecuriteNumerique: string[];
+  digitalCultureSecurity: string[];
 
   @Prop()
-  equipementsEtServicesProposes: string[];
+  equipmentsDetails: string;
 
   @Prop()
-  nbComputers: number;
-
-  @Prop()
-  precisionsSiNecessaire: string;
+  equipmentsAccessType: string[];
 
   @Prop()
-  statutJuridique: string;
+  equipmentsAndServices: string[];
 
   @Prop()
-  appartenezVousAUnReseauDeMediation: string;
-
-  @Prop()
-  precisezLequel: string;
-
-  @Prop()
-  idDeLitemStructureDansDirectus: string;
-
-  @Prop()
-  statutDeLitemStructureDansDirectus: string;
-
-  @Prop()
-  idDeLitemOffreDansDirectus: string;
+  nbComputers: number;
 
   @Prop()
-  statut: string;
+  nbPrinters: number;
 
   @Prop()
-  typeDeStructure: string[];
+  nbTablets: number;
 
   @Prop()
-  commune: string;
+  nbNumericTerminal: number;
 
   @Prop()
   hours: Week;
diff --git a/src/structures/structures.controller.ts b/src/structures/structures.controller.ts
index b3a33b8aa05b35c191abfef770bb228f2cb3a420..8026e174751cf674eea9043758705172c9d41e8f 100644
--- a/src/structures/structures.controller.ts
+++ b/src/structures/structures.controller.ts
@@ -1,4 +1,4 @@
-import { Body, Controller, Get, Param, Post, Query, Req } from '@nestjs/common';
+import { Body, Controller, Get, Param, Post, Query } from '@nestjs/common';
 import { CreateStructureDto } from './dto/create-structure.dto';
 import { QueryStructure } from './dto/query-structure.dto';
 import { Structure } from './schemas/structure.schema';
@@ -18,6 +18,11 @@ export class StructuresController {
     return this.structureService.search(query.query, body ? body.filters : null);
   }
 
+  @Post(':id')
+  public async update(@Param('id') id: number, @Body() body: CreateStructureDto) {
+    return this.structureService.update(id, body);
+  }
+
   @Get()
   public async findAll(): Promise<Structure[]> {
     return this.structureService.findAll();
@@ -26,18 +31,26 @@ export class StructuresController {
   @Get('count')
   public async countCategories(): Promise<Array<{ id: string; count: number }>> {
     const data = await Promise.all([
-      this.structureService.countByStructureKey('accesAuxDroits'),
-      this.structureService.countByStructureKey('aideALaParentalite'),
-      this.structureService.countByStructureKey('cultureEtSecuriteNumerique'),
-      this.structureService.countByStructureKey('insertionSocialeEtProfessionnelle'),
-      this.structureService.countByStructureKey('accompagnementDesDemarches'),
-      this.structureService.countByStructureKey('labelsEtQualifications'),
-      this.structureService.countByStructureKey('publicsAcceptes'),
-      this.structureService.countByStructureKey('modalitesDacces'),
-      this.structureService.countByStructureKey('lesCompetencesDeBase'),
-      this.structureService.countByStructureKey('equipementsEtServicesProposes'),
+      this.structureService.countByStructureKey('proceduresAccompaniment'),
+
+      this.structureService.countByStructureKey('accessRight'),
+      this.structureService.countByStructureKey('baseSkills'),
+      this.structureService.countByStructureKey('parentingHelp'),
+      this.structureService.countByStructureKey('digitalCultureSecurity'),
+      this.structureService.countByStructureKey('socialAndProfessional'),
+
+      this.structureService.countByStructureKey('publicsAccompaniment'),
+      this.structureService.countByStructureKey('labelsQualifications'),
+      this.structureService.countByStructureKey('publics'),
+      this.structureService.countByStructureKey('accessModality'),
+      this.structureService.countByStructureKey('equipmentsAndServices'),
     ]);
     // Return a concat of all arrays
     return data.reduce((a, b) => [...a, ...b]);
   }
+
+  @Get(':id')
+  public async find(@Param('id') id: number) {
+    return this.structureService.findOne(id);
+  }
 }
diff --git a/src/structures/structures.service.ts b/src/structures/structures.service.ts
index 3e473a5e65cf26b369fded508fc8328bfae73f7a..543058c8c971a9875bf2435c2c8ad44b7446a694 100644
--- a/src/structures/structures.service.ts
+++ b/src/structures/structures.service.ts
@@ -1,4 +1,4 @@
-import { HttpService, Injectable } from '@nestjs/common';
+import { HttpException, HttpService, Injectable, HttpStatus } from '@nestjs/common';
 import { InjectModel } from '@nestjs/mongoose';
 import { Model } from 'mongoose';
 import { Observable } from 'rxjs';
@@ -69,15 +69,25 @@ export class StructuresService {
     return this.structureModel.find().exec();
   }
 
+  public async update(idStructure: number, structure: CreateStructureDto): Promise<Structure> {
+    const result = await this.structureModel.update({ id: idStructure }, structure);
+    if (!result) {
+      throw new HttpException('Invalid structure id', HttpStatus.BAD_REQUEST);
+    }
+    return structure;
+  }
+
+  public findOne(idParam: number): Promise<Structure> {
+    return this.structureModel.findOne({ id: idParam }).exec();
+  }
   /**
    * Get structures positions and add marker corresponding to those positons on the map
    */
   private getStructurePosition(structure: Structure): Promise<Structure> {
     return new Promise((resolve) => {
-      this.getCoord(structure.n, structure.voie, structure.commune).subscribe(
+      this.getCoord(structure.address.numero, structure.address.street, structure.address.commune).subscribe(
         (res) => {
           const address = res.data.features[0];
-          structure.address = structure.voie + ' - ' + address.properties.postcode + ' ' + address.properties.city;
           structure.coord = address.geometry.coordinates;
           resolve(structure);
         },
diff --git a/src/users/users.controller.spec.ts b/src/users/users.controller.spec.ts
index 565a6704dd072f9110fc7b61190bac9d600b21c7..714006debf399341880614d0a8e280e93bbadb7c 100644
--- a/src/users/users.controller.spec.ts
+++ b/src/users/users.controller.spec.ts
@@ -1,4 +1,4 @@
-import { HttpModule, HttpService } from '@nestjs/common';
+import { HttpModule } from '@nestjs/common';
 import { getModelToken } from '@nestjs/mongoose';
 import { Test, TestingModule } from '@nestjs/testing';
 import { ConfigurationModule } from '../configuration/configuration.module';
diff --git a/src/users/users.service.spec.ts b/src/users/users.service.spec.ts
index 0eeba2b54fdf5970d01ab14f5368cada2d0feab9..3ce659dfd93d0d596c0ed0dba9a948f20233056f 100644
--- a/src/users/users.service.spec.ts
+++ b/src/users/users.service.spec.ts
@@ -40,14 +40,14 @@ describe('UsersService', () => {
         password: '$2a$12$vLQjJ9zAWyUwiXLeQDa6w.yazDArYIpf2WnQF1jRHOjBxADEjUEA3',
         resetPasswordToken: null,
       };
-      const userDto: CreateUserDto = { email: 'jacques.dupont@mii.com', password: 'test1A!!' };
+      const userDto: CreateUserDto = { email: 'jacques.dupont@mii.com', password: 'test1A!!' }; //NOSONAR
       jest.spyOn(service, 'create').mockImplementation(async (): Promise<User> => result);
       expect(await service.create(userDto)).toBe(result);
     });
 
     it('User should not be created, already exist', async () => {
       const result = new HttpException('User already exists', HttpStatus.BAD_REQUEST);
-      const userDto: CreateUserDto = { email: 'jacques.dupont@mii.com', password: 'test1A!!' };
+      const userDto: CreateUserDto = { email: 'jacques.dupont@mii.com', password: 'test1A!!' }; //NOSONAR
       jest.spyOn(service, 'create').mockImplementation(async (): Promise<any> => result);
       expect(await service.create(userDto)).toBe(result);
     });
@@ -57,7 +57,7 @@ describe('UsersService', () => {
         'Weak password, it must contain ne lowercase alphabetical character, one uppercase alphabetical character, one numeric character, one special character and be eight characters or longer',
         HttpStatus.UNPROCESSABLE_ENTITY
       );
-      const userDto: CreateUserDto = { email: 'jacques.dupont@mii.com', password: 'test' };
+      const userDto: CreateUserDto = { email: 'jacques.dupont@mii.com', password: 'test' }; //NOSONAR
       jest.spyOn(service, 'create').mockImplementation(async (): Promise<any> => result);
       expect(await service.create(userDto)).toBe(result);
     });
@@ -74,21 +74,21 @@ describe('UsersService', () => {
         role: 0,
         resetPasswordToken: null,
       };
-      const loginDto: LoginDto = { email: 'jacques.dupont@mii.com', password: 'test1A!!' };
+      const loginDto: LoginDto = { email: 'jacques.dupont@mii.com', password: 'test1A!!' }; //NOSONAR
       jest.spyOn(service, 'findByLogin').mockImplementation(async (): Promise<User> => result);
       expect(await service.findByLogin(loginDto)).toBe(result);
     });
 
     it('user does not exist, should be unauthorized issue', async () => {
       const result: HttpException = new HttpException('Invalid credentials', HttpStatus.UNAUTHORIZED);
-      const loginDto: LoginDto = { email: 'jean.dupont@mii.com', password: 'test1A!!' };
+      const loginDto: LoginDto = { email: 'jean.dupont@mii.com', password: 'test1A!!' }; //NOSONAR
       jest.spyOn(service, 'findByLogin').mockImplementation(async (): Promise<any> => result);
       expect(await service.findByLogin(loginDto)).toBe(result);
     });
 
     it('wrong password, should be unauthorized issue', async () => {
       const result: HttpException = new HttpException('Invalid credentials', HttpStatus.UNAUTHORIZED);
-      const loginDto: LoginDto = { email: 'jacques.dupont@mii.com', password: 'test1A!!!' };
+      const loginDto: LoginDto = { email: 'jacques.dupont@mii.com', password: 'test1A!!!' }; //NOSONAR
       jest.spyOn(service, 'findByLogin').mockImplementation(async (): Promise<any> => result);
       expect(await service.findByLogin(loginDto)).toBe(result);
     });
diff --git a/src/users/users.service.ts b/src/users/users.service.ts
index cf052eaf13a1ec98903fd1775a1dfd87942221fd..d38588f6ffd278a373f5cab356c6a7b2d4551cd2 100644
--- a/src/users/users.service.ts
+++ b/src/users/users.service.ts
@@ -47,7 +47,7 @@ export class UsersService {
    * @param password string
    */
   private isStrongPassword(password: string): boolean {
-    const strongRegex = new RegExp('^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*])(?=.{8,})');
+    const strongRegex = new RegExp('^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*])(?=.{8,})'); //NOSONAR
     return strongRegex.test(password);
   }