diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 11f699b5deec147610d4031015418b1e00a5a752..0f3a7115d819c68866e7dbf1d1d559b85f71b6ab 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,5 +1,5 @@
 stages:
-  - sonar-analysis
+  - quality
   - build
   - deploy
 
@@ -16,6 +16,8 @@ build_branch:
     DOCKER_TLS_CERTDIR: ''
     DOCKER_HOST: tcp://docker:2375/
     DOCKER_DRIVER: overlay2
+  only:
+    - merge_requests
   image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:18.09
   stage: build
   except:
@@ -102,36 +104,53 @@ deploy_rec:
   environment:
     name: rec
     url: https://resin-rec.grandlyon.com
-# code_analysis:
-#   image: skilldlabs/sonar-scanner:3.4.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
-#       -Dsonar.projectName=${SONAR_PROJECT_KEY}
-#       -Dsonar.projectVersion=1.0
-#       -Dsonar.sourceEncoding=UTF-8
-#       -Dsonar.projectBaseDir=.
-#       -Dsonar.host.url=${SONAR_URL}
-#       -Dsonar.projectKey=${SONAR_PROJECT_KEY}
-#       -Dsonar.login=${SONAR_TOKEN}
 
-# mr:
-#   variables:
-#     DOCKER_TLS_CERTDIR: ''
-#     DOCKER_HOST: tcp://docker:2375/
-#     DOCKER_DRIVER: overlay2
-#   image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:18.09
-#   stage: build
-#   only:
-#     - merge_requests
-#   script:
-#     - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
-#     - docker build --pull -t "$CI_REGISTRY_IMAGE:dev" --build-arg conf=dev .
+sonarqube:
+  stage: quality
+  only:
+    - dev
+  image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/sonarsource/sonar-scanner-cli:4
+  variables:
+    SONAR_USER_HOME: '${CI_PROJECT_DIR}/.sonar' # Defines the location of the analysis task cache
+    GIT_DEPTH: '0' # T
+  cache:
+    key: '${CI_JOB_NAME}'
+    paths:
+      - .sonar/cache
+  script:
+    - >
+      sonar-scanner
+      -Dsonar.projectName=${SONAR_PROJECT_KEY}
+      -Dsonar.projectVersion=1.0
+      -Dsonar.sourceEncoding=UTF-8
+      -Dsonar.projectBaseDir=.
+      -Dsonar.host.url=${SONAR_URL}
+      -Dsonar.projectKey=${SONAR_PROJECT_KEY}
+      -Dsonar.login=${SONAR_TOKEN}
+      -Dsonar.cpd.exclusions=tests/**,src/**/*.spec.ts*
+      -Dsonar.qualitygate.wait=true
+
+sonarqube-mr:
+  stage: quality
+  only:
+    - merge_requests
+  image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/sonarsource/sonar-scanner-cli:4
+  variables:
+    SONAR_USER_HOME: '${CI_PROJECT_DIR}/.sonar' # Defines the location of the analysis task cache
+    GIT_DEPTH: '0' # T
+  cache:
+    key: '${CI_JOB_NAME}'
+    paths:
+      - .sonar/cache
+  script:
+    - >
+      sonar-scanner
+      -Dsonar.projectName=${SONAR_PROJECT_KEY}
+      -Dsonar.projectVersion=1.0
+      -Dsonar.sourceEncoding=UTF-8
+      -Dsonar.projectBaseDir=.
+      -Dsonar.host.url=${SONAR_URL}
+      -Dsonar.projectKey=${SONAR_PROJECT_KEY}
+      -Dsonar.login=${SONAR_MR_TOKEN}
+      -Dsonar.cpd.exclusions=tests/**,src/**/*.spec.ts*
+      -Dsonar.qualitygate.wait=true
diff --git a/.gitlab/issue_templates/default.md b/.gitlab/issue_templates/default.md
new file mode 100644
index 0000000000000000000000000000000000000000..042ce20d17a018660540dd34e3fbc5ba8b91700f
--- /dev/null
+++ b/.gitlab/issue_templates/default.md
@@ -0,0 +1,19 @@
+/title [Scope] Description
+
+### Résumé du problème
+
+_Donnez une description briève du problème._
+
+### Les étapes pour reproduire le bug
+
+_Listez les étapes qui vous permettent de reproduire ce bug, cette étape est très importante._
+
+### Décrivez le comportement du bug ?
+
+### Quel serez le comportement attendu ?
+
+### Logs et/ou screenshots
+
+### Possible fixes
+
+/label ~"type::bug"
diff --git a/.gitlab/merge_request_templates/default.md b/.gitlab/merge_request_templates/default.md
new file mode 100644
index 0000000000000000000000000000000000000000..19982d0027e7c778bf136bb773b2a64da959545c
--- /dev/null
+++ b/.gitlab/merge_request_templates/default.md
@@ -0,0 +1,62 @@
+## What does this MR do and why?
+
+_Describe in detail what your merge request does and why._
+
+| :warning: Keep an up to date checklist based on your icescrum tasks during all the draft phase to help any other developer who would take the job after you to finish it. |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+
+
+## Screenshots or screen recordings
+
+_These are strongly recommended to assist reviewers and reduce the time to merge your change._
+
+## How to set up and validate locally (or on alpha)
+
+_List all steps to set up and validate the changes on local environment._
+
+## MR acceptance checklist
+
+_To be completed by the chosen reviewer._
+
+<!---
+Using checklists improves quality in software engineering and other jobs such as with surgeons and airline pilots.
+More reading on checklists can be found in the "Checklist Manifesto": http://atulgawande.com/book/the-checklist-manifesto/
+
+"It is common to misconceive how checklists function in complex lines of work. They are not comprehensive how-to guides, whether for building a skyscraper or getting a plane out of trouble. They are quick and simple tools aimed to buttress the skills of expert professionals." - Gawande, Atul. The Checklist Manifesto
+--->
+
+### Quality
+
+- [ ] Confirmed
+
+1. For the code that this change impacts, I believe that the automated tests validate functionality that is highly important to users. If the existing automated tests do not cover this functionality, I have added the necessary additional tests or I have added an issue to describe the automation testing gap and linked it to this MR.
+1. I have made sure that the sonar quality coverage is up to standards.
+1. I have considered the impact of this change on the front-end, back-end, and database portions of the system where appropriate and applied.
+1. I have tested this MR in all supported browsers or determined that this testing is not needed.
+1. I have confirmed that this change is backwards compatible across updates (migrate up needs a migrate down), or I have decided that this does not apply.
+
+### Performance, reliability and availability
+
+- [ ] Confirmed
+
+1. I am confident that this MR does not harm performance, or I have asked a reviewer to help assess the performance impact.
+1. I have considered the scalability risk based on future predicted growth.
+
+### Documentation
+
+- [ ] Confirmed
+
+1. I have prepared a squash commit to feed the changelog linked to the current milestone.
+1. I have added/updated documentation (also updated if the changes feature a deprecation) or I have decided that documentation changes are not needed for this MR.
+
+### Security
+
+- [ ] Confirmed
+
+1. I have confirmed that if this MR does not contains any sensitive informations hidden in the changes.
+
+### Deployment
+
+- [ ] Confirmed
+
+1. When featured on a self-data project release, i have made sure my app version in the manifest and package.json is incremented and any relative changes to the permissions are clearly written and transmitted to Cozy.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 40fad222e896553dfc221e82404bc5c5ea059415..f0a705de65b6d533293089f288bd1adeba36046c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,37 @@
 
 All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
 
+## [1.17.0](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/compare/v1.16.3...v1.17.0) (2022-05-30)
+
+
+### Features
+
+* **admin:** now display last update date next to structure names ([9d80147](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/9d80147c9f19143f24c84541b812e7fefd0ab059))
+* **structures:** add MaisonFranceService to structure types ([177d226](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/177d226e5e301889c4a569e8beffbfa8b82dee67))
+
+
+### Bug Fixes
+
+* add sonar again ([05b5573](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/05b557390ae8f2a53f185fd59dcd0bb8e56aeb49))
+* change resin website placeholder ([4c3f8dd](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/4c3f8dded9911470b060126a3a2694ea85df44f6))
+* **orientation:** wrong result with address on 2 postcodes ([67a2106](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/67a2106ec932b2ce9279dafbb6daf72059be7b14))
+
+### [1.16.3](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/compare/v1.16.2...v1.16.3) (2022-03-31)
+
+
+### Bug Fixes
+
+* **orientation:** broken layout ([67c6b23](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/67c6b23945b60b5f0fbc76d50f5b213deab7be61))
+* **orientation:** issue on height ([87f8ea5](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/87f8ea5c59c2dbadb963d7e2fa5359375d47a2d7))
+* **orientation:** map height ([cd75ee2](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/cd75ee22bee5e241624cd200b6e066794faa1634))
+
+### [1.16.2](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/compare/v1.16.1...v1.16.2) (2022-03-31)
+
+
+### Bug Fixes
+
+* **news:** broken layout with double scroll ([44757f6](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/44757f619e9f23535cbf9c2dba502c6066732728))
+
 ### [1.16.1](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/compare/v1.16.0...v1.16.1) (2022-03-29)
 
 
diff --git a/README.md b/README.md
index 345494d02012e1cbfc201c458f1b7bcd212409a6..2eed6eaac7240d3bb0952602cce8a7598a3e3ffa 100644
--- a/README.md
+++ b/README.md
@@ -5,12 +5,14 @@
 [![Security Rating](https://sonarqube.forge.grandlyon.com/api/project_badges/measure?project=pamn_client&metric=security_rating)](https://sonarqube.forge.grandlyon.com/dashboard?id=pamn_client)
 [![Vulnerabilities](https://sonarqube.forge.grandlyon.com/api/project_badges/measure?project=pamn_client&metric=vulnerabilities)](https://sonarqube.forge.grandlyon.com/dashboard?id=pamn_client)
 
-
-
 # Pamn
 
 This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.1.3.
 
+## Wikis
+
+Find [here](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/-/wikis/home) wikis about useful informations like installation and gitflow.
+
 ## Development server
 
 Run `npm start` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
@@ -35,12 +37,16 @@ Run `npm run e2e` to execute the end-to-end tests via [Protractor](http://www.pr
 
 Use conventional commit format. For more info please read this article on [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/)
 
-## Documentation 
+## Documentation
+
 A documentation is generated with compodoc in addition of the existing documentation on the wiki.
+
 ```sh
 npm run doc:serve
 ```
+
 You can now visualize it at : `localhost:8080`
+
 ## Further help
 
 To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
diff --git a/package-lock.json b/package-lock.json
index ba7b9b57360e243006531f6d1df57490ad24fd22..199f1a8d4630b528c13247cd5968c04e38cf8ade 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
 {
   "name": "pamn",
-  "version": "1.16.1",
+  "version": "1.17.0",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
diff --git a/package.json b/package.json
index ff023eec40e9d54a7c7e637263528126dc0b0831..e3d34969acaa6beb36823f910ec83815e70a20f8 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "pamn",
-  "version": "1.16.1",
+  "version": "1.17.0",
   "scripts": {
     "ng": "ng",
     "start": "ng serve --configuration=fr --proxy-config proxy.conf.json",
diff --git a/src/app/admin/admin-pannel.scss b/src/app/admin/admin-pannel.scss
index ff8626de17f5779ffb0d40d5813565d69bc16091..1b7c40a1915975c133b207488b72daa7ca83cc60 100644
--- a/src/app/admin/admin-pannel.scss
+++ b/src/app/admin/admin-pannel.scss
@@ -18,3 +18,36 @@
 .incomplete {
   color: $red;
 }
+
+.isOutdated {
+  color: $red;
+}
+
+.structure-updated-at {
+  text-align: right;
+}
+
+.error {
+  color: red;
+  font-weight: bold;
+}
+
+.singleCheckbox {
+  background: $white;
+  border-radius: 4px;
+  padding: 0 16px;
+  height: 44px;
+  padding-top: 22px;
+  outline: none;
+  border: 1px solid;
+  margin: 8px 0;
+  &.checked {
+    color: $white;
+    background: $green-1;
+    border: none;
+  }
+  input,
+  label {
+    cursor: pointer;
+  }
+}
diff --git a/src/app/admin/admin.module.ts b/src/app/admin/admin.module.ts
index 29e6689e76c172fe4492ad8f8c8000fb9b792e6c..d937cc788209447e747154bc501758c4718fae3c 100644
--- a/src/app/admin/admin.module.ts
+++ b/src/app/admin/admin.module.ts
@@ -6,6 +6,7 @@ import { ManageUsersComponent } from './components/manage-users/manage-users.com
 import { SharedModule } from '../shared/shared.module';
 import { NewsletterUsersComponent } from './components/newsletter-users/newsletter-users.component';
 import { AdminStructuresListComponent } from './components/structures-list/admin-structures-list.component';
+import { ManageLockdownInfoComponent } from './components/lockdown-info/manage-lockdown-info.component';
 import { AdminRoutingModule } from './admin-routing.module';
 import { AgGridModule } from 'ag-grid-angular';
 import { DeleteUserComponent } from './components/manage-users/delete-user/delete-user.component';
@@ -17,6 +18,7 @@ import { AdministredStructuresComponent } from './components/manage-users/admini
     ClaimStructureComponent,
     NewsletterUsersComponent,
     AdminStructuresListComponent,
+    ManageLockdownInfoComponent,
     ManageUsersComponent,
     DeleteUserComponent,
     AdministredStructuresComponent,
diff --git a/src/app/admin/components/lockdown-info/manage-lockdown-info.component.html b/src/app/admin/components/lockdown-info/manage-lockdown-info.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..942e5a16ccfe0bd9c088b27dfafeb5175d6016eb
--- /dev/null
+++ b/src/app/admin/components/lockdown-info/manage-lockdown-info.component.html
@@ -0,0 +1,19 @@
+<div *ngIf="isLoading" class="loader">
+  <img class="loader-gif" src="/assets/gif/loader_circle.gif" alt />
+</div>
+<div *ngIf="!isLoading" fxLayout="column" fxLayoutAlign="center center">
+  <H2>Gestion de l'affichage des infos Covid</H2>
+  <div *ngIf="lockdownInfoDisplay">Les infos covid sont actuellement affichées dans les fiches structure.</div>
+  <div *ngIf="!lockdownInfoDisplay">Les infos covid ne sont actuellement pas affichées dans les fiches structure.</div>
+  <div *ngIf="!error" class="singleCheckbox" [ngClass]="{ checked: lockdownInfoDisplay }">
+    <input
+      type="checkbox"
+      name="lockdownInfo"
+      id="lockdownInfo"
+      [checked]="lockdownInfoDisplay"
+      (change)="toggleLockdownInfo()"
+    />
+    <label for="lockdownInfo"> Afficher les infos covid</label>
+  </div>
+  <p *ngIf="error" class="error">Une erreur s'est produite a l'enregistrement, veuillez ré-essayer plus tard.</p>
+</div>
diff --git a/src/app/admin/components/lockdown-info/manage-lockdown-info.component.spec.ts b/src/app/admin/components/lockdown-info/manage-lockdown-info.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..ba95d305f527a5e8f46d3502245d712f5fdf10fb
--- /dev/null
+++ b/src/app/admin/components/lockdown-info/manage-lockdown-info.component.spec.ts
@@ -0,0 +1,24 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ManageLockdownInfoComponent } from './manage-lockdown-info.component';
+
+describe('ManageLockdownInfoComponent', () => {
+  let component: ManageLockdownInfoComponent;
+  let fixture: ComponentFixture<ManageLockdownInfoComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      declarations: [ManageLockdownInfoComponent],
+    }).compileComponents();
+  });
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(ManageLockdownInfoComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/src/app/admin/components/lockdown-info/manage-lockdown-info.component.ts b/src/app/admin/components/lockdown-info/manage-lockdown-info.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..187fb3541a963c6fb72174751a12938e19cb09ad
--- /dev/null
+++ b/src/app/admin/components/lockdown-info/manage-lockdown-info.component.ts
@@ -0,0 +1,31 @@
+import { Component, OnInit } from '@angular/core';
+import { ParametersService } from '../../services/parameters.service';
+
+@Component({
+  selector: 'app-admin-manage-lockdown-info',
+  templateUrl: './manage-lockdown-info.component.html',
+  styleUrls: ['../../admin-pannel.scss'],
+})
+export class ManageLockdownInfoComponent implements OnInit {
+  public isLoading: boolean = true;
+  public lockdownInfoDisplay: boolean;
+  public error: boolean = false;
+  constructor(private parametersService: ParametersService) {}
+
+  ngOnInit(): void {
+    this.parametersService.getParameters().subscribe((params) => {
+      this.lockdownInfoDisplay = params.lockdownInfoDisplay;
+      this.isLoading = false;
+    });
+  }
+
+  public toggleLockdownInfo() {
+    this.lockdownInfoDisplay = !this.lockdownInfoDisplay;
+    this.parametersService.SetLockdownInfoDisplay(this.lockdownInfoDisplay).subscribe(
+      () => {},
+      () => {
+        this.error = true;
+      }
+    );
+  }
+}
diff --git a/src/app/admin/components/manage-users/manage-users.component.ts b/src/app/admin/components/manage-users/manage-users.component.ts
index d4713e661aa5d7013f2e30e5c1d3a2f3109d2bc1..03399985c36f17ec38c16b133dc6ae7500ba9648 100644
--- a/src/app/admin/components/manage-users/manage-users.component.ts
+++ b/src/app/admin/components/manage-users/manage-users.component.ts
@@ -1,8 +1,8 @@
 import { Component } from '@angular/core';
 import { User } from '../../../models/user.model';
 import { AdminService } from '../../services/admin.service';
-import { DeleteUserComponent } from './delete-user/delete-user.component';
 import { AdministredStructuresComponent } from './administred-structures/administred-structures.component';
+import { DeleteUserComponent } from './delete-user/delete-user.component';
 
 @Component({
   selector: 'app-admin-manage-users',
@@ -105,7 +105,7 @@ export class ManageUsersComponent {
   public findAttachedUsers(): void {
     this.adminService.getAttachedUsers().subscribe((users) => {
       this.attachedUsers = users;
-      this.attachedUsers.map((user) => {
+      this.attachedUsers.forEach((user) => {
         user._id = user['id'];
       });
     });
@@ -120,7 +120,7 @@ export class ManageUsersComponent {
   public findUnVerifiedUsers(): void {
     this.adminService.getUnVerifiedUsers().subscribe((users) => {
       this.unVerifiedUsers = users;
-      this.unVerifiedUsers.map((user) => {
+      this.unVerifiedUsers.forEach((user) => {
         user._id = user['id'];
       });
     });
diff --git a/src/app/admin/components/panel/panel.component.html b/src/app/admin/components/panel/panel.component.html
index 0443ed9b817fe673bf23a02565b2d6747c8d3e41..8cc0ae1383e2e2f38a5c045b7cb89f9ff50eae73 100644
--- a/src/app/admin/components/panel/panel.component.html
+++ b/src/app/admin/components/panel/panel.component.html
@@ -4,6 +4,7 @@
     <button (click)="changeActiveFeature(features.pendingStructures)">Revendication structure</button>
     <button (click)="changeActiveFeature(features.structuresList)">Liste structures</button>
     <button (click)="changeActiveFeature(features.deleteUsers)">Gestion des utilisateurs</button>
+    <button (click)="changeActiveFeature(features.lockdownInfo)">Gestion des infos covid</button>
     <button (click)="changeActiveFeature(features.newsletterUsers)">Newsletter</button>
     <a target="_blank" class="custom-link" rel="noopener noreferrer" [href]="ghostLink">Ghost</a>
   </div>
@@ -16,6 +17,9 @@
   <div *ngIf="selectedFeature === features.pendingStructures">
     <app-admin-claim-structure></app-admin-claim-structure>
   </div>
+  <div *ngIf="selectedFeature === features.lockdownInfo">
+    <app-admin-manage-lockdown-info></app-admin-manage-lockdown-info>
+  </div>
   <div *ngIf="selectedFeature === features.newsletterUsers">
     <app-admin-newsletter-users></app-admin-newsletter-users>
   </div>
diff --git a/src/app/admin/components/structures-list/admin-structures-list.component.html b/src/app/admin/components/structures-list/admin-structures-list.component.html
index aef30389371bef50c6774e038248607b4e9ee081..e483cbb350108cfbbcc1d9e32260f61eafbc8945 100644
--- a/src/app/admin/components/structures-list/admin-structures-list.component.html
+++ b/src/app/admin/components/structures-list/admin-structures-list.component.html
@@ -4,7 +4,7 @@
 <div *ngIf="!isLoading" fxLayout="column" fxLayoutAlign="center center">
   <table aria-describedby="demands attachment results" class="results-tab results-column">
     <thead>
-      <th scope="col">
+      <th colspan="2" scope="colgroup">
         Structures avec des données manquantes ({{ structuresIncomplete ? structuresIncomplete.length : 0 }})
       </th>
     </thead>
@@ -15,6 +15,9 @@
             {{ structure.structureName }}</a
           >
         </td>
+        <td class="structure-updated-at">
+          <span [ngClass]="{ isOutdated: structure.isOutdated }">{{ structure.updatedAt | date: 'mediumDate' }}</span>
+        </td>
       </tr>
       <tr *ngIf="!structuresIncomplete?.length">
         <td colspan="3">Aucune structure</td>
@@ -23,13 +26,16 @@
   </table>
   <table aria-describedby="demands attachment results" class="results-tab results-column">
     <thead>
-      <th scope="col">Structures en cours de revendication ({{ structuresInClaim.length }})</th>
+      <th colspan="2" scope="colgroup">Structures en cours de revendication ({{ structuresInClaim.length }})</th>
     </thead>
     <tbody>
       <tr *ngFor="let structure of structuresInClaim">
         <td>
           <a href="/acteurs?id={{ structure.structureId }}" target="_blank"> {{ structure.structureName }}</a>
         </td>
+        <td class="structure-updated-at">
+          <span [ngClass]="{ isOutdated: structure.isOutdated }">{{ structure.updatedAt | date: 'mediumDate' }}</span>
+        </td>
       </tr>
       <tr *ngIf="!structuresInClaim?.length">
         <td colspan="3">Aucune structure</td>
@@ -38,13 +44,16 @@
   </table>
   <table aria-describedby="demands attachment results" class="results-tab results-column">
     <thead>
-      <th scope="col">Structures à revendiquer ({{ structuresToClaim.length }})</th>
+      <th colspan="2" scope="colgroup">Structures à revendiquer ({{ structuresToClaim.length }})</th>
     </thead>
     <tbody>
       <tr *ngFor="let structure of structuresToClaim">
         <td>
           <a href="/acteurs?id={{ structure.structureId }}" target="_blank"> {{ structure.structureName }}</a>
         </td>
+        <td class="structure-updated-at">
+          <span [ngClass]="{ isOutdated: structure.isOutdated }">{{ structure.updatedAt | date: 'mediumDate' }}</span>
+        </td>
       </tr>
       <tr *ngIf="!structuresToClaim?.length">
         <td colspan="3">Aucune structure</td>
@@ -53,13 +62,16 @@
   </table>
   <table aria-describedby="demands attachment results" class="results-tab results-column">
     <thead>
-      <th scope="col">Structures revendiquées ({{ structuresClaimed.length }})</th>
+      <th colspan="2" scope="colgroup">Structures revendiquées ({{ structuresClaimed.length }})</th>
     </thead>
     <tbody>
       <tr *ngFor="let structure of structuresClaimed">
         <td>
           <a href="/acteurs?id={{ structure.structureId }}" target="_blank"> {{ structure.structureName }}</a>
         </td>
+        <td class="structure-updated-at">
+          <span [ngClass]="{ isOutdated: structure.isOutdated }">{{ structure.updatedAt | date: 'mediumDate' }}</span>
+        </td>
       </tr>
       <tr *ngIf="!structuresClaimed?.length">
         <td colspan="3">Aucune structure</td>
diff --git a/src/app/admin/services/parameters.service.ts b/src/app/admin/services/parameters.service.ts
new file mode 100644
index 0000000000000000000000000000000000000000..149900697a92f7ed46a5639d2225e898dff5283a
--- /dev/null
+++ b/src/app/admin/services/parameters.service.ts
@@ -0,0 +1,19 @@
+import { HttpClient } from '@angular/common/http';
+import { Injectable } from '@angular/core';
+import { Observable } from 'rxjs';
+
+@Injectable({
+  providedIn: 'root',
+})
+export class ParametersService {
+  private readonly baseUrl = 'api/';
+  constructor(private http: HttpClient) {}
+
+  public getParameters(): Observable<any> {
+    return this.http.get<any>(`${this.baseUrl}parameters`);
+  }
+
+  public SetLockdownInfoDisplay(lockdownInfoDisplay: boolean): Observable<any> {
+    return this.http.post(`${this.baseUrl}parameters/`, { lockdownInfoDisplay });
+  }
+}
diff --git a/src/app/app.component.scss b/src/app/app.component.scss
index f6a2d3edfa97ff90f40610254e9685406ff05517..442de430c63451ad2cb90e2961fe84c282bcc7fd 100644
--- a/src/app/app.component.scss
+++ b/src/app/app.component.scss
@@ -17,7 +17,7 @@
   overflow-y: auto;
   overflow-x: hidden;
   position: relative;
-  height: calc(var(--vh, 1vh) * 100 - #{$header-height});
+  height: calc(100vh - #{$header-height});
 }
 
 .motif {
diff --git a/src/app/form/orientation-form/component/structure-print-header/structure-print-header.component.html b/src/app/form/orientation-form/component/structure-print-header/structure-print-header.component.html
index 7c09be92799f365e0fd65b12ceaa7647836d95f0..2e40f733618062b2bee566a82b9d04553ac623c6 100644
--- a/src/app/form/orientation-form/component/structure-print-header/structure-print-header.component.html
+++ b/src/app/form/orientation-form/component/structure-print-header/structure-print-header.component.html
@@ -25,8 +25,15 @@
     </div>
     <div class="beneficiary">
       <div class="informationHeader">{{ 'Bénéficiaire' | uppercase }}</div>
-      <!-- Name -->
+
       <table class="beneficiaryNeeds">
+        <caption style="display: none">
+          Résumé du besoin de l'utilisateur pour impresion.
+        </caption>
+        <thead style="display: none">
+          <th>Résumé de besoin</th>
+        </thead>
+        <!-- Name -->
         <tr>
           <td class="informationHeader">Nom</td>
           <td class="bold">{{ beneficiaryName }}</td>
diff --git a/src/app/form/orientation-form/orientation-form.component.html b/src/app/form/orientation-form/orientation-form.component.html
index c8c0679cf027f85e1ee264dd9712b68e01b3434d..1b6a8131772c7744a3415dd8dc70d3ef180f47cf 100644
--- a/src/app/form/orientation-form/orientation-form.component.html
+++ b/src/app/form/orientation-form/orientation-form.component.html
@@ -1,4 +1,10 @@
-<div id="body" *ngIf="!multiPrint" class="form" fxLayout="column">
+<div
+  id="body"
+  *ngIf="!multiPrint"
+  class="form"
+  fxLayout="column"
+  [ngClass]="{ 'form-override': currentPage == pageTypeEnum.structuresSelection }"
+>
   <app-modal-confirmation
     [openned]="showConfirmationModal"
     [content]="'Il vous faudra de nouveau remplir le formulaire si vous quittez'"
diff --git a/src/app/form/orientation-form/orientation-form.component.scss b/src/app/form/orientation-form/orientation-form.component.scss
index c0d9b713d54af3fc20bab1f1f5edad14bbadaa5f..3f4da661cd42285190f1f78a2bbb74d7a2346bf9 100644
--- a/src/app/form/orientation-form/orientation-form.component.scss
+++ b/src/app/form/orientation-form/orientation-form.component.scss
@@ -72,12 +72,17 @@
   margin: 0 0.5em;
 }
 
+.form-override {
+  height: unset !important;
+}
+
 .form-footer {
   padding: 17px 0;
   width: 100%;
   text-align: center;
   z-index: calc($btn-phone-switch-map-list-z-index - 1);
   background: $grey-6;
+  height: $footer-form-height;
 }
 
 .btnSwitch {
@@ -100,7 +105,7 @@
 }
 
 .content {
-  min-height: 450px;
+  height: 100% !important;
   background-color: $white;
   margin-left: 25%;
   margin-right: 24%;
@@ -132,14 +137,6 @@
   float: right;
   height: 58vh;
   padding: unset;
-  // height: 100%;
-  @media #{$tablet} {
-    height: 57vh !important;
-  }
-
-  @media #{$desktop} {
-    height: 100%;
-  }
 
   ::ng-deep .structure-card .structure {
     margin-right: 16px;
@@ -157,7 +154,6 @@
 }
 
 .progress-container {
-  margin-top: 1%;
   margin-left: 25.5%;
   width: 50%;
   @media #{$tablet} {
diff --git a/src/app/form/orientation-form/orientation-form.component.ts b/src/app/form/orientation-form/orientation-form.component.ts
index 31b2c36d0739011568ed088b17966434370f4175..50b648f25e42a26f6acf91a7b9ad0b3d46b3544f 100644
--- a/src/app/form/orientation-form/orientation-form.component.ts
+++ b/src/app/form/orientation-form/orientation-form.component.ts
@@ -1,8 +1,6 @@
-import { stringify } from '@angular/compiler/src/util';
-import { Component, EventEmitter, HostListener, OnInit, Output } from '@angular/core';
-import { AbstractControl, Form, FormArray, FormControl, FormGroup, Validators } from '@angular/forms';
+import { Component, HostListener, OnInit } from '@angular/core';
+import { AbstractControl, FormArray, FormControl, FormGroup, Validators } from '@angular/forms';
 import { Meta } from '@angular/platform-browser';
-import { GeoJson } from '../../map/models/geojson.model';
 import { Address } from '../../models/address.model';
 import { OrientationFormFilters } from '../../models/orientation-filter.object';
 import { Structure } from '../../models/structure.model';
@@ -10,14 +8,13 @@ import { GeojsonService } from '../../services/geojson.service';
 import { RouterListenerService } from '../../services/routerListener.service';
 import { StructureService } from '../../services/structure.service';
 import { CategoryEnum } from '../../shared/enum/category.enum';
-import * as _ from 'lodash';
 import { Category } from '../../structure-list/models/category.model';
 import { Filter } from '../../structure-list/models/filter.model';
 import { Module } from '../../structure-list/models/module.model';
 import { SearchService } from '../../structure-list/services/search.service';
-import { PageTypeEnum } from './pageType.enum';
-import { Utils } from '../../utils/utils';
 import { CustomRegExp } from '../../utils/CustomRegExp';
+import { Utils } from '../../utils/utils';
+import { PageTypeEnum } from './pageType.enum';
 
 @Component({
   selector: 'app-orientation-form',
@@ -163,6 +160,7 @@ export class OrientationFormComponent implements OnInit {
         numero: new FormControl(''),
         street: new FormControl('', Validators.required),
         commune: new FormControl('', Validators.required),
+        postcode: new FormControl(''),
       }),
       structureAccompaniment: new FormControl(orientationFormFilters.structureAccompaniment, Validators.required),
       contactAccompanimentPhone: new FormControl(
@@ -344,6 +342,7 @@ export class OrientationFormComponent implements OnInit {
       this.getOrientationControl('address').get('numero').setValue(address.numero);
       this.getOrientationControl('address').get('street').setValue(address.street);
       this.getOrientationControl('address').get('commune').setValue(address.commune);
+      this.getOrientationControl('address').get('postcode').setValue(address.postcode);
       this.userLocation = address.coordinates;
     } else {
       this.orientationForm.get('address').reset();
@@ -441,7 +440,11 @@ export class OrientationFormComponent implements OnInit {
 
   private setStructuresAndCoord(): void {
     this.geoJsonService
-      .getCoord(this.orientationForm.value.address.numero, this.orientationForm.value.address.street, '69000')
+      .getCoord(
+        this.orientationForm.value.address.numero,
+        this.orientationForm.value.address.street,
+        this.orientationForm.value.address.postcode ? this.orientationForm.value.address.postcode : '69000'
+      )
       .subscribe((res) => {
         this.structureService.getStructures(this.filters.filter((elem) => elem.checked == true)).subscribe((data) => {
           data.map((structure) => {
@@ -518,6 +521,7 @@ export class OrientationFormComponent implements OnInit {
           }
           this.getOrientationControl('address').get('street').setValue(location.properties.street);
           this.getOrientationControl('address').get('commune').setValue(location.properties.city);
+          this.getOrientationControl('address').get('postcode').setValue(location.properties.postcode);
           this.setValidationsForm();
           this.isLoading = false;
         },
diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html
index f943a843276058ddbeb8f5f81fa67ffa5d663692..ecfd746969b3ae4cb543a5bd6df51dc579d888f0 100644
--- a/src/app/form/structure-form/form.component.html
+++ b/src/app/form/structure-form/form.component.html
@@ -647,7 +647,7 @@
                 <div fxLayout="row" fxLayoutGap="27px">
                   <input
                     type="text"
-                    placeholder="www.resin.grandlyon.com"
+                    placeholder="www.grandlyon.com"
                     (input)="setValidationsForm()"
                     formControlName="website"
                     class="form-input"
diff --git a/src/app/models/address.model.ts b/src/app/models/address.model.ts
index 0b30ddc1cfb70325d383260bd511831f61d8fcb8..8ef6bc349a222c69531a34eac3331b4174c974a2 100644
--- a/src/app/models/address.model.ts
+++ b/src/app/models/address.model.ts
@@ -1,6 +1,7 @@
-export class Address {
-  numero: string = null;
-  street: string = null;
-  commune: string = null;
-  coordinates? = [];
-}
+export class Address {
+  numero: string = null;
+  street: string = null;
+  commune: string = null;
+  postcode?: number = null;
+  coordinates? = [];
+}
diff --git a/src/app/shared/components/address-autocomplete/address-autocomplete.component.ts b/src/app/shared/components/address-autocomplete/address-autocomplete.component.ts
index 45710320a46494229892ebfe77369aaeaf4ebbd1..f079a7934fa946e79aea7cd21c6dbf759f4788e9 100644
--- a/src/app/shared/components/address-autocomplete/address-autocomplete.component.ts
+++ b/src/app/shared/components/address-autocomplete/address-autocomplete.component.ts
@@ -59,6 +59,7 @@ export class AddressAutocompleteComponent implements OnInit {
     address.numero = hit.properties.housenumber ? hit.properties.housenumber : null;
     address.commune = hit.properties.city;
     address.coordinates = hit.geometry.coordinates;
+    address.postcode = hit.properties.postcode;
     if (hit.properties.street) {
       address.street = hit.properties.street;
     } else {
diff --git a/src/app/shared/enum/adminPanel.enum.ts b/src/app/shared/enum/adminPanel.enum.ts
index 7608abd461ecf63679d68348f738424757436351..1c82cf1e5bd03bf9e2be43979de0513b88ab5d1d 100644
--- a/src/app/shared/enum/adminPanel.enum.ts
+++ b/src/app/shared/enum/adminPanel.enum.ts
@@ -3,4 +3,5 @@ export enum AdminPannelEnum {
   pendingStructures,
   newsletterUsers,
   structuresList,
+  lockdownInfo,
 }
diff --git a/src/app/shared/enum/typeStructure.enum.ts b/src/app/shared/enum/typeStructure.enum.ts
index e23ed6665387765f6a697d4c1773bf2ab2e743ef..f2924fa8d649587d7d7e34d522ae2afa391d01e8 100644
--- a/src/app/shared/enum/typeStructure.enum.ts
+++ b/src/app/shared/enum/typeStructure.enum.ts
@@ -19,6 +19,7 @@ export enum typeStructureEnum {
   prefecture = 'Préfecture',
   bijPij = 'BIJ/PIJ',
   logement = 'Logement',
+  MaisonFranceService = 'Maison France Service',
 
   association = 'Association',
   centreSocio = 'Centre socio-culturel',
diff --git a/src/app/structure-list/components/structure-list-search/structure-list-search.component.spec.ts b/src/app/structure-list/components/structure-list-search/structure-list-search.component.spec.ts
index d3480a96473500ca0bfd04257ea0aec7d9ae22a1..1cac4adfa66f31be62dfaf480b0d3a1643612953 100644
--- a/src/app/structure-list/components/structure-list-search/structure-list-search.component.spec.ts
+++ b/src/app/structure-list/components/structure-list-search/structure-list-search.component.spec.ts
@@ -1,13 +1,13 @@
+import { HttpClientTestingModule } from '@angular/common/http/testing';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ReactiveFormsModule } from '@angular/forms';
+import { of } from 'rxjs';
+import { GeoJson } from '../../../map/models/geojson.model';
+import { GeojsonService } from '../../../services/geojson.service';
+import { TypeModal } from '../../enum/typeModal.enum';
 import { Filter } from '../../models/filter.model';
-import { HttpClientTestingModule } from '@angular/common/http/testing';
-import { StructureListSearchComponent } from './structure-list-search.component';
 import { Module } from '../../models/module.model';
-import { TypeModal } from '../../enum/typeModal.enum';
-import { GeojsonService } from '../../../services/geojson.service';
-import { GeoJson } from '../../../map/models/geojson.model';
-import { of } from 'rxjs';
+import { StructureListSearchComponent } from './structure-list-search.component';
 
 describe('StructureListSearchComponent', () => {
   let component: StructureListSearchComponent;
@@ -104,7 +104,6 @@ describe('StructureListSearchComponent', () => {
     const checkedModules: Module[] = [{ id: evt.target.value, text: categ, count: 0 }];
     component.checkedModulesFilter = checkedModules;
     component.externalCheckboxCheck(evt, categ);
-    new Module(evt.target.value, categ);
     expect(component.checkedModulesFilter.length).toEqual(0);
     expect(component.numberMoreFiltersChecked).toEqual(0);
   });
@@ -122,7 +121,6 @@ describe('StructureListSearchComponent', () => {
     const checkedModules: Module[] = [{ id: evt.target.value, text: categ, count: 0 }];
     component.checkedModulesFilter = checkedModules;
     component.externalCheckboxCheck(evt, categ);
-    new Module(evt.target.value, categ);
     expect(component.checkedModulesFilter.length).toEqual(0);
     expect(component.numberMoreFiltersChecked).toEqual(0);
   });
diff --git a/src/assets/scss/_layout.scss b/src/assets/scss/_layout.scss
index d8f402ac2af754d5866c26ec9bf2c3bff5356053..d6b0a0c745cee97270a60f4c2f1f4de6fe5bcd03 100644
--- a/src/assets/scss/_layout.scss
+++ b/src/assets/scss/_layout.scss
@@ -1,5 +1,6 @@
 $header-height: 70px;
 $footer-height: 56px;
+$footer-form-height: 36px;
 $header-height-phone: 70px;
 $footer-height-phone: 75px;
 $progressBar-height: 50px;
diff --git a/src/styles.scss b/src/styles.scss
index 05073c59bc7a2b5abcdd5763d1bf3618defde45d..d01edb7f38f3f43e8e187d5b8e92b6f09afe0eee 100644
--- a/src/styles.scss
+++ b/src/styles.scss
@@ -26,6 +26,7 @@ body {
   background-color: $grey-6;
   min-height: 100vh;
   min-height: -webkit-fill-available;
+  overflow: hidden;
 }
 a {
   color: $default-link-color;