diff --git a/ubuntu-bionic-18.04-cloudimg-console.log b/ubuntu-bionic-18.04-cloudimg-console.log
new file mode 100644
index 0000000000000000000000000000000000000000..185d9d43fa0e47d31b632f4999e099663a882cb2
--- /dev/null
+++ b/ubuntu-bionic-18.04-cloudimg-console.log
@@ -0,0 +1,611 @@
+[    0.000000] Linux version 4.15.0-161-generic (buildd@lcy01-amd64-012) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #169-Ubuntu SMP Fri Oct 15 13:41:54 UTC 2021 (Ubuntu 4.15.0-161.169-generic 4.15.18)
+[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.15.0-161-generic root=UUID=b4821a18-e421-4128-97a6-636c3c3a9a1c ro console=tty1 console=ttyS0
+[    0.000000] KERNEL supported cpus:
+[    0.000000]   Intel GenuineIntel
+[    0.000000]   AMD AuthenticAMD
+[    0.000000]   Centaur CentaurHauls
+[    0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
+[    0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
+[    0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
+[    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
+[    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
+[    0.000000] e820: BIOS-provided physical RAM map:
+[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
+[    0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
+[    0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
+[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000007ffeffff] usable
+[    0.000000] BIOS-e820: [mem 0x000000007fff0000-0x000000007fffffff] ACPI data
+[    0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved
+[    0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
+[    0.000000] BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
+[    0.000000] NX (Execute Disable) protection: active
+[    0.000000] SMBIOS 2.5 present.
+[    0.000000] DMI: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
+[    0.000000] Hypervisor detected: KVM
+[    0.000000] e820: last_pfn = 0x7fff0 max_arch_pfn = 0x400000000
+[    0.000000] MTRR: Disabled
+[    0.000000] x86/PAT: MTRRs disabled, skipping PAT initialization too.
+[    0.000000] CPU MTRRs all blank - virtualized system.
+[    0.000000] x86/PAT: Configuration [0-7]: WB  WT  UC- UC  WB  WT  UC- UC  
+[    0.000000] found SMP MP-table at [mem 0x0009fff0-0x0009ffff]
+[    0.000000] Scanning 1 areas for low memory corruption
+[    0.000000] RAMDISK: [mem 0x3581f000-0x36c06fff]
+[    0.000000] ACPI: Early table checksum verification disabled
+[    0.000000] ACPI: RSDP 0x00000000000E0000 000024 (v02 VBOX  )
+[    0.000000] ACPI: XSDT 0x000000007FFF0030 00003C (v01 VBOX   VBOXXSDT 00000001 ASL  00000061)
+[    0.000000] ACPI: FACP 0x000000007FFF00F0 0000F4 (v04 VBOX   VBOXFACP 00000001 ASL  00000061)
+[    0.000000] ACPI: DSDT 0x000000007FFF0470 002325 (v02 VBOX   VBOXBIOS 00000002 INTL 20190509)
+[    0.000000] ACPI: FACS 0x000000007FFF0200 000040
+[    0.000000] ACPI: FACS 0x000000007FFF0200 000040
+[    0.000000] ACPI: APIC 0x000000007FFF0240 00005C (v02 VBOX   VBOXAPIC 00000001 ASL  00000061)
+[    0.000000] ACPI: SSDT 0x000000007FFF02A0 0001CC (v01 VBOX   VBOXCPUT 00000002 INTL 20190509)
+[    0.000000] ACPI: Reserving FACP table memory at [mem 0x7fff00f0-0x7fff01e3]
+[    0.000000] ACPI: Reserving DSDT table memory at [mem 0x7fff0470-0x7fff2794]
+[    0.000000] ACPI: Reserving FACS table memory at [mem 0x7fff0200-0x7fff023f]
+[    0.000000] ACPI: Reserving FACS table memory at [mem 0x7fff0200-0x7fff023f]
+[    0.000000] ACPI: Reserving APIC table memory at [mem 0x7fff0240-0x7fff029b]
+[    0.000000] ACPI: Reserving SSDT table memory at [mem 0x7fff02a0-0x7fff046b]
+[    0.000000] No NUMA configuration found
+[    0.000000] Faking a node at [mem 0x0000000000000000-0x000000007ffeffff]
+[    0.000000] NODE_DATA(0) allocated [mem 0x7ffc5000-0x7ffeffff]
+[    0.000000] kvm-clock: cpu 0, msr 0:7ff44001, primary cpu clock
+[    0.000000] kvm-clock: Using msrs 4b564d01 and 4b564d00
+[    0.000000] kvm-clock: using sched offset of 3630853417 cycles
+[    0.000000] clocksource: kvm-clock: mask: 0xffffffffffffffff max_cycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns
+[    0.000000] Zone ranges:
+[    0.000000]   DMA      [mem 0x0000000000001000-0x0000000000ffffff]
+[    0.000000]   DMA32    [mem 0x0000000001000000-0x000000007ffeffff]
+[    0.000000]   Normal   empty
+[    0.000000]   Device   empty
+[    0.000000] Movable zone start for each node
+[    0.000000] Early memory node ranges
+[    0.000000]   node   0: [mem 0x0000000000001000-0x000000000009efff]
+[    0.000000]   node   0: [mem 0x0000000000100000-0x000000007ffeffff]
+[    0.000000] Reserved but unavailable: 104 pages
+[    0.000000] Initmem setup node 0 [mem 0x0000000000001000-0x000000007ffeffff]
+[    0.000000] ACPI: PM-Timer IO Port: 0x4008
+[    0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-23
+[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
+[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level)
+[    0.000000] Using ACPI (MADT) for SMP configuration information
+[    0.000000] smpboot: Allowing 2 CPUs, 0 hotplug CPUs
+[    0.000000] PM: Registered nosave memory: [mem 0x00000000-0x00000fff]
+[    0.000000] PM: Registered nosave memory: [mem 0x0009f000-0x0009ffff]
+[    0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000effff]
+[    0.000000] PM: Registered nosave memory: [mem 0x000f0000-0x000fffff]
+[    0.000000] e820: [mem 0x80000000-0xfebfffff] available for PCI devices
+[    0.000000] Booting paravirtualized kernel on KVM
+[    0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645519600211568 ns
+[    0.000000] random: get_random_bytes called from start_kernel+0x99/0x500 with crng_init=0
+[    0.000000] setup_percpu: NR_CPUS:8192 nr_cpumask_bits:2 nr_cpu_ids:2 nr_node_ids:1
+[    0.000000] percpu: Embedded 45 pages/cpu s147456 r8192 d28672 u1048576
+[    0.000000] PV qspinlock hash table entries: 256 (order: 0, 4096 bytes)
+[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 515961
+[    0.000000] Policy zone: DMA32
+[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.15.0-161-generic root=UUID=b4821a18-e421-4128-97a6-636c3c3a9a1c ro console=tty1 console=ttyS0
+[    0.000000] Memory: 2014044K/2096696K available (12300K kernel code, 2483K rwdata, 4320K rodata, 2448K init, 2724K bss, 82652K reserved, 0K cma-reserved)
+[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
+[    0.000000] Kernel/User page tables isolation: enabled
+[    0.000000] ftrace: allocating 39475 entries in 155 pages
+[    0.004000] Hierarchical RCU implementation.
+[    0.004000] 	RCU restricting CPUs from NR_CPUS=8192 to nr_cpu_ids=2.
+[    0.004000] 	Tasks RCU enabled.
+[    0.004000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
+[    0.004000] NR_IRQS: 524544, nr_irqs: 440, preallocated irqs: 16
+[    0.004000] Console: colour VGA+ 80x25
+[    0.004000] console [tty1] enabled
+[    0.004000] console [ttyS0] enabled
+[    0.004000] ACPI: Core revision 20170831
+[    0.004000] ACPI: 2 ACPI AML tables successfully acquired and loaded
+[    0.004000] APIC: Switch to symmetric I/O mode setup
+[    0.004000] x2apic enabled
+[    0.004000] Switched APIC routing to physical x2apic.
+[    0.004000] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
+[    0.004004] tsc: Detected 2596.188 MHz processor
+[    0.004783] Calibrating delay loop (skipped) preset value.. 5192.37 BogoMIPS (lpj=10384752)
+[    0.005383] pid_max: default: 32768 minimum: 301
+[    0.006319] Security Framework initialized
+[    0.008006] Yama: becoming mindful.
+[    0.008697] AppArmor: AppArmor initialized
+[    0.010323] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes)
+[    0.012701] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes)
+[    0.014002] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes)
+[    0.015490] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes)
+[    0.016310] Last level iTLB entries: 4KB 1024, 2MB 1024, 4MB 1024
+[    0.017299] Last level dTLB entries: 4KB 1024, 2MB 1024, 4MB 1024, 1GB 4
+[    0.018393] Spectre V1 : Mitigation: usercopy/swapgs barriers and __user pointer sanitization
+[    0.020004] Spectre V2 : Mitigation: Full generic retpoline
+[    0.020967] Spectre V2 : Spectre v2 / SpectreRSB mitigation: Filling RSB on context switch
+[    0.022294] Speculative Store Bypass: Vulnerable
+[    0.023108] SRBDS: Unknown: Dependent on hypervisor status
+[    0.024003] MDS: Mitigation: Clear CPU buffers
+[    0.024930] Freeing SMP alternatives memory: 36K
+[    0.136755] smpboot: CPU0: Intel(R) Core(TM) i7-4510U CPU @ 2.00GHz (family: 0x6, model: 0x45, stepping: 0x1)
+[    0.138642] Performance Events: unsupported p6 CPU model 69 no PMU driver, software events only.
+[    0.140000] Hierarchical SRCU implementation.
+[    0.140763] NMI watchdog: Perf event create on CPU 0 failed with -2
+[    0.141831] NMI watchdog: Perf NMI watchdog permanently disabled
+[    0.142867] smp: Bringing up secondary CPUs ...
+[    0.143723] x86: Booting SMP configuration:
+[    0.144004] .... node  #0, CPUs:      #1
+[    0.004000] kvm-clock: cpu 1, msr 0:7ff44041, secondary cpu clock
+[    0.148024] smp: Brought up 1 node, 2 CPUs
+[    0.148750] smpboot: Max logical packages: 1
+[    0.149691] smpboot: Total of 2 processors activated (10384.75 BogoMIPS)
+[    0.152203] devtmpfs: initialized
+[    0.152819] x86/mm: Memory block size: 128MB
+[    0.153793] evm: security.selinux
+[    0.154431] evm: security.SMACK64
+[    0.155022] evm: security.SMACK64EXEC
+[    0.156005] evm: security.SMACK64TRANSMUTE
+[    0.156696] evm: security.SMACK64MMAP
+[    0.157383] evm: security.apparmor
+[    0.157989] evm: security.ima
+[    0.158512] evm: security.capability
+[    0.159180] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
+[    0.160024] futex hash table entries: 512 (order: 3, 32768 bytes)
+[    0.162001] pinctrl core: initialized pinctrl subsystem
+[    0.164127] RTC time: 19:16:48, date: 11/03/21
+[    0.165080] NET: Registered protocol family 16
+[    0.165920] audit: initializing netlink subsys (disabled)
+[    0.166841] audit: type=2000 audit(1635967014.381:1): state=initialized audit_enabled=0 res=1
+[    0.168040] cpuidle: using governor ladder
+[    0.168730] cpuidle: using governor menu
+[    0.169464] ACPI: bus type PCI registered
+[    0.170165] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
+[    0.172101] PCI: Using configuration type 1 for base access
+[    0.173081] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
+[    0.176085] ACPI: Added _OSI(Module Device)
+[    0.176868] ACPI: Added _OSI(Processor Device)
+[    0.177630] ACPI: Added _OSI(3.0 _SCP Extensions)
+[    0.178436] ACPI: Added _OSI(Processor Aggregator Device)
+[    0.180007] ACPI: Added _OSI(Linux-Dell-Video)
+[    0.180750] ACPI: Added _OSI(Linux-Lenovo-NV-HDMI-Audio)
+[    0.181665] ACPI: Added _OSI(Linux-HPI-Hybrid-Graphics)
+[    0.182778] ACPI: Executed 1 blocks of module-level executable AML code
+[    0.187390] ACPI: Interpreter enabled
+[    0.188016] ACPI: (supports S0 S5)
+[    0.188711] ACPI: Using IOAPIC for interrupt routing
+[    0.189824] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
+[    0.192226] ACPI: Enabled 2 GPEs in block 00 to 07
+[    0.200150] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
+[    0.201286] acpi PNP0A03:00: _OSC: OS supports [ASPM ClockPM Segments MSI]
+[    0.202916] acpi PNP0A03:00: _OSC: not requesting OS control; OS requires [ExtendedConfig ASPM ClockPM MSI]
+[    0.204016] acpi PNP0A03:00: fail to add MMCONFIG information, can't access extended PCI configuration space under this bridge.
+[    0.206270] PCI host bridge to bus 0000:00
+[    0.207003] pci_bus 0000:00: root bus resource [io  0x0000-0x0cf7 window]
+[    0.208005] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff window]
+[    0.209120] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window]
+[    0.211049] pci_bus 0000:00: root bus resource [mem 0x80000000-0xfdffffff window]
+[    0.212007] pci_bus 0000:00: root bus resource [bus 00-ff]
+[    0.216045] pci 0000:00:01.1: legacy IDE quirk: reg 0x10: [io  0x01f0-0x01f7]
+[    0.217279] pci 0000:00:01.1: legacy IDE quirk: reg 0x14: [io  0x03f6]
+[    0.218361] pci 0000:00:01.1: legacy IDE quirk: reg 0x18: [io  0x0170-0x0177]
+[    0.219510] pci 0000:00:01.1: legacy IDE quirk: reg 0x1c: [io  0x0376]
+[    0.250742] pci 0000:00:07.0: quirk: [io  0x4000-0x403f] claimed by PIIX4 ACPI
+[    0.252016] pci 0000:00:07.0: quirk: [io  0x4100-0x410f] claimed by PIIX4 SMB
+[    0.265697] ACPI: PCI Interrupt Link [LNKA] (IRQs 5 9 10 *11)
+[    0.267100] ACPI: PCI Interrupt Link [LNKB] (IRQs 5 9 *10 11)
+[    0.268121] ACPI: PCI Interrupt Link [LNKC] (IRQs 5 *9 10 11)
+[    0.269202] ACPI: PCI Interrupt Link [LNKD] (IRQs 5 9 10 *11)
+[    0.270560] SCSI subsystem initialized
+[    0.271283] pci 0000:00:02.0: vgaarb: setting as boot VGA device
+[    0.271283] pci 0000:00:02.0: vgaarb: VGA device added: decodes=io+mem,owns=io+mem,locks=none
+[    0.272016] pci 0000:00:02.0: vgaarb: bridge control possible
+[    0.273033] vgaarb: loaded
+[    0.273656] ACPI: bus type USB registered
+[    0.276039] usbcore: registered new interface driver usbfs
+[    0.277051] usbcore: registered new interface driver hub
+[    0.277967] usbcore: registered new device driver usb
+[    0.279068] EDAC MC: Ver: 3.0.0
+[    0.280234] PCI: Using ACPI for IRQ routing
+[    0.281020] NetLabel: Initializing
+[    0.281728] NetLabel:  domain hash size = 128
+[    0.282488] NetLabel:  protocols = UNLABELED CIPSOv4 CALIPSO
+[    0.284021] NetLabel:  unlabeled traffic allowed by default
+[    0.284994] clocksource: Switched to clocksource kvm-clock
+[    0.296017] VFS: Disk quotas dquot_6.6.0
+[    0.296856] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
+[    0.298063] AppArmor: AppArmor Filesystem Enabled
+[    0.299017] pnp: PnP ACPI init
+[    0.300661] pnp: PnP ACPI: found 3 devices
+[    0.310893] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
+[    0.313561] NET: Registered protocol family 2
+[    0.314645] IP idents hash table entries: 32768 (order: 6, 262144 bytes)
+[    0.316750] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
+[    0.318527] TCP bind hash table entries: 16384 (order: 6, 262144 bytes)
+[    0.320829] TCP: Hash tables configured (established 16384 bind 16384)
+[    0.322347] UDP hash table entries: 1024 (order: 3, 32768 bytes)
+[    0.323701] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes)
+[    0.325189] NET: Registered protocol family 1
+[    0.326204] pci 0000:00:00.0: Limiting direct PCI/PCI transfers
+[    0.327496] pci 0000:00:01.0: Activating ISA DMA hang workarounds
+[    0.329185] pci 0000:00:02.0: Video device with shadowed ROM at [mem 0x000c0000-0x000dffff]
+[    0.331174] Unpacking initramfs...
+[    0.600761] Freeing initrd memory: 20384K
+[    0.601888] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x256c2b17ef9, max_idle_ns: 440795271172 ns
+[    0.604163] platform rtc_cmos: registered platform RTC device (no PNP device found)
+[    0.605913] Scanning for low memory corruption every 60 seconds
+[    0.608181] Initialise system trusted keyrings
+[    0.608975] Key type blacklist registered
+[    0.609756] workingset: timestamp_bits=36 max_order=19 bucket_order=0
+[    0.612094] zbud: loaded
+[    0.613145] squashfs: version 4.0 (2009/01/31) Phillip Lougher
+[    0.614408] fuse init (API version 7.26)
+[    0.617719] Key type asymmetric registered
+[    0.618713] Asymmetric key parser 'x509' registered
+[    0.619866] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
+[    0.621647] io scheduler noop registered
+[    0.622579] io scheduler deadline registered
+[    0.623604] io scheduler cfq registered (default)
+[    0.625085] ACPI: AC Adapter [AC] (on-line)
+[    0.626137] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input0
+[    0.628033] ACPI: Power Button [PWRF]
+[    0.628998] input: Sleep Button as /devices/LNXSYSTM:00/LNXSLPBN:00/input/input1
+[    0.630662] ACPI: Sleep Button [SLPF]
+[    0.633892] ACPI: Battery Slot [BAT0] (battery present)
+[    0.635580] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
+[    0.658226] 00:02: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
+[    0.667283] Linux agpgart interface v0.103
+[    0.671226] loop: module loaded
+[    0.672614] scsi host0: ata_piix
+[    0.673635] scsi host1: ata_piix
+[    0.674426] ata1: PATA max UDMA/33 cmd 0x1f0 ctl 0x3f6 bmdma 0xd000 irq 14
+[    0.675913] ata2: PATA max UDMA/33 cmd 0x170 ctl 0x376 bmdma 0xd008 irq 15
+[    0.678120] libphy: Fixed MDIO Bus: probed
+[    0.679365] tun: Universal TUN/TAP device driver, 1.6
+[    0.681012] PPP generic driver version 2.4.2
+[    0.682193] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
+[    0.684016] ehci-pci: EHCI PCI platform driver
+[    0.685307] ehci-platform: EHCI generic platform driver
+[    0.686808] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
+[    0.688465] ohci-pci: OHCI PCI platform driver
+[    0.689814] ohci-platform: OHCI generic platform driver
+[    0.691735] uhci_hcd: USB Universal Host Controller Interface driver
+[    0.694058] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f03:PS2M] at 0x60,0x64 irq 1,12
+[    0.696785] serio: i8042 KBD port at 0x60,0x64 irq 1
+[    0.698156] serio: i8042 AUX port at 0x60,0x64 irq 12
+[    0.699752] mousedev: PS/2 mouse device common for all mice
+[    0.701589] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input2
+[    0.704048] rtc_cmos rtc_cmos: rtc core: registered rtc_cmos as rtc0
+[    0.705782] rtc_cmos rtc_cmos: alarms up to one day, 114 bytes nvram
+[    0.707503] i2c /dev entries driver
+[    0.708574] device-mapper: uevent: version 1.0.3
+[    0.709874] device-mapper: ioctl: 4.37.0-ioctl (2017-09-20) initialised: dm-devel@redhat.com
+[    0.712549] ledtrig-cpu: registered to indicate activity on CPUs
+[    0.714406] NET: Registered protocol family 10
+[    0.720693] Segment Routing with IPv6
+[    0.721717] NET: Registered protocol family 17
+[    0.722889] Key type dns_resolver registered
+[    0.724524] mce: Using 0 MCE banks
+[    0.725508] RAS: Correctable Errors collector initialized.
+[    0.726990] sched_clock: Marking stable (724476675, 0)->(894611429, -170134754)
+[    0.729649] registered taskstats version 1
+[    0.730874] Loading compiled-in X.509 certificates
+[    0.736305] Loaded X.509 cert 'Build time autogenerated kernel key: 1542c441293f32312405dc023a70312e7f0d3f0a'
+[    0.739184] Loaded X.509 cert 'Canonical Ltd. Live Patch Signing: 14df34d1a87cf37625abec039ef2bf521249b969'
+[    0.742446] Loaded X.509 cert 'Canonical Ltd. Kernel Module Signing: 88f752e560a1e0737e31163a466ad7b70a850c19'
+[    0.745030] zswap: loaded using pool lzo/zbud
+[    0.752375] Key type big_key registered
+[    0.753148] Key type trusted registered
+[    0.756153] Key type encrypted registered
+[    0.757121] AppArmor: AppArmor sha1 policy hashing enabled
+[    0.758361] ima: No TPM chip found, activating TPM-bypass! (rc=-19)
+[    0.759770] ima: Allocated hash algorithm: sha1
+[    0.761739] evm: HMAC attrs: 0x1
+[    0.762921]   Magic number: 13:989:292
+[    0.764092] tty tty25: hash matches
+[    0.765179] rtc_cmos rtc_cmos: setting system clock to 2021-11-03 19:16:49 UTC (1635967009)
+[    0.767358] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found
+[    0.768735] EDD information not available.
+[    0.868669] Freeing unused kernel image memory: 2448K
+[    1.144954] Write protecting the kernel read-only data: 20480k
+[    1.151329] Freeing unused kernel image memory: 2008K
+[    1.154942] Freeing unused kernel image memory: 1824K
+[    1.165470] x86/mm: Checked W+X mappings: passed, no W+X pages found.
+[    1.166598] x86/mm: Checking user space page tables
+[    1.174652] x86/mm: Checked W+X mappings: passed, no W+X pages found.
+Loading, please wait...
+starting version 237
+[    1.244278] e1000: Intel(R) PRO/1000 Network Driver - version 7.3.21-k8-NAPI
+[    1.246023] e1000: Copyright (c) 1999-2006 Intel Corporation.
+[    1.250501] Fusion MPT base driver 3.04.20
+[    1.252906] Copyright (c) 1999-2008 LSI Corporation
+[    1.265972] Fusion MPT SPI Host driver 3.04.20
+[    1.286949] AVX2 version of gcm_enc/dec engaged.
+[    1.288268] AES CTR mode by8 optimization enabled
+[    1.469408] input: ImExPS/2 Generic Explorer Mouse as /devices/platform/i8042/serio1/input/input4
+[    1.652804] e1000 0000:00:03.0 eth0: (PCI:33MHz:32-bit) 02:2f:77:f1:0c:e0
+[    1.654908] e1000 0000:00:03.0 eth0: Intel(R) PRO/1000 Network Connection
+[    1.657770] mptbase: ioc0: Initiating bringup
+[    1.658236] e1000 0000:00:03.0 enp0s3: renamed from eth0
+[    2.328849] ioc0: LSI53C1030 A0: Capabilities={Initiator}
+[    4.625219] scsi host2: ioc0: LSI53C1030 A0, FwRev=00000000h, Ports=1, MaxQ=256, IRQ=20
+[    7.077502] scsi 2:0:0:0: Direct-Access     VBOX     HARDDISK         1.0  PQ: 0 ANSI: 5
+[    7.192234] scsi target2:0:0: Beginning Domain Validation
+[    7.198705] scsi target2:0:0: Domain Validation skipping write tests
+[    7.200274] scsi target2:0:0: Ending Domain Validation
+[    7.201391] scsi target2:0:0: asynchronous
+[    7.202833] scsi 2:0:1:0: Direct-Access     VBOX     HARDDISK         1.0  PQ: 0 ANSI: 5
+[    8.147448] scsi target2:0:1: Beginning Domain Validation
+[    8.154133] random: fast init done
+[    8.157163] scsi target2:0:1: Domain Validation skipping write tests
+[    8.158958] scsi target2:0:1: Ending Domain Validation
+[    8.160131] scsi target2:0:1: asynchronous
+[    8.164298] random: systemd-udevd: uninitialized urandom read (16 bytes read)
+[    8.165818] random: systemd-udevd: uninitialized urandom read (16 bytes read)
+[    8.168254] random: systemd-udevd: uninitialized urandom read (16 bytes read)
+[    8.170293] sd 2:0:0:0: Attached scsi generic sg0 type 0
+[    8.171572] sd 2:0:0:0: [sda] 83886080 512-byte logical blocks: (42.9 GB/40.0 GiB)
+[    8.173546] sd 2:0:0:0: [sda] Write Protect is off
+[    8.175532] sd 2:0:1:0: Attached scsi generic sg1 type 0
+[    8.177049] sd 2:0:0:0: [sda] Incomplete mode parameter data
+[    8.177051] sd 2:0:0:0: [sda] Assuming drive cache: write through
+[    8.178247] sd 2:0:1:0: [sdb] 20480 512-byte logical blocks: (10.5 MB/10.0 MiB)
+[    8.183981] sd 2:0:1:0: [sdb] Write Protect is off
+[    8.186014] sd 2:0:1:0: [sdb] Incomplete mode parameter data
+[    8.187523] sd 2:0:1:0: [sdb] Assuming drive cache: write through
+[    8.189890]  sda: sda1
+[    8.191385] sd 2:0:0:0: [sda] Attached SCSI disk
+[    8.193881] sd 2:0:1:0: [sdb] Attached SCSI disk
+Begin: Loading essential drivers ... [    9.675988] raid6: sse2x1   gen() 12018 MB/s
+[    9.730388] raid6: sse2x1   xor()  8077 MB/s
+[    9.776855] raid6: sse2x2   gen() 12098 MB/s
+[    9.824013] raid6: sse2x2   xor()  7684 MB/s
+[    9.884066] raid6: sse2x4   gen() 17129 MB/s
+[    9.939891] raid6: sse2x4   xor() 10260 MB/s
+[    9.995963] raid6: avx2x1   gen() 23309 MB/s
+[   10.051851] raid6: avx2x1   xor() 15215 MB/s
+[   10.109797] raid6: avx2x2   gen() 26903 MB/s
+[   10.164008] raid6: avx2x2   xor() 16227 MB/s
+[   10.215847] raid6: avx2x4   gen() 28083 MB/s
+[   10.264356] raid6: avx2x4   xor() 16052 MB/s
+[   10.265393] raid6: using algorithm avx2x4 gen() 28083 MB/s
+[   10.266503] raid6: .... xor() 16052 MB/s, rmw enabled
+[   10.267678] raid6: using avx2x2 recovery algorithm
+[   10.270850] xor: automatically using best checksumming function   avx       
+[   10.273861] async_tx: api initialized (async)
+done.
+Begin: Running /scripts/init-premount ... done.
+Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
+Begin: Running /scripts/local-premount ... [   10.328739] Btrfs loaded, crc32c=crc32c-intel
+Scanning for Btrfs filesystems
+done.
+Begin: Will now check root file system ... fsck from util-linux 2.31.1
+[/sbin/fsck.ext4 (1) -- /dev/sda1] fsck.ext4 -a -C0 /dev/sda1 
+cloudimg-rootfs: clean, 232179/5120000 files, 1100707/10485499 blocks
+done.
+[   10.387851] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
+done.
+Begin: Running /scripts/local-bottom ... done.
+Begin: Running /scripts/init-bottom ... done.
+[   10.606451] ip_tables: (C) 2000-2006 Netfilter Core Team
+[   10.623601] systemd[1]: systemd 237 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid)
+[   10.628658] systemd[1]: Detected virtualization oracle.
+[   10.629873] systemd[1]: Detected architecture x86-64.
+
+Welcome to Ubuntu 18.04.6 LTS!
+
+[   10.637465] systemd[1]: Set hostname to <ubuntu-bionic>.
+[   10.967584] systemd[1]: Reached target System Time Synchronized.
+[  OK  ] Reached target System Time Synchronized.
+[   10.972210] systemd[1]: Created slice User and Session Slice.
+[  OK  ] Created slice User and Session Slice.
+[   10.975444] systemd[1]: Created slice System Slice.
+[  OK  ] Created slice System Slice.
+[   11.076720] systemd[1]: Reached target Slices.
+[  OK  ] Reached target Slices.
+[   11.079281] systemd[1]: Listening on udev Control Socket.
+[  OK  ] Listening on udev Control Socket.
+[   11.190117] systemd[1]: Listening on LVM2 poll daemon socket.
+[  OK  ] Listening on LVM2 poll daemon socket.
+[  OK  ] Listening on LVM2 metadata daemon socket.
+[  OK  ] Listening on Journal Socket (/dev/log).
+[  OK  ] Created slice system-serial\x2dgetty.slice.
+[  OK  ] Listening on Journal Audit Socket.
+[  OK  ] Listening on Journal Socket.
+         Starting Set the console keyboard layout...
+         Starting Create list of required st…ce nodes for the current kernel...
+         Starting Uncomplicated firewall...
+         Starting Load Kernel Modules...
+         Mounting POSIX Message Queue File System...
+         Mounting Huge Pages File System...
+[  OK  ] Listening on Device-mapper event daemon FIFOs.
+         Starting Monitoring of LVM2 mirrors…ng dmeventd or progress polling...
+[  OK  ] Listening on Network Service Netlink Socket.
+[  OK  ] Listening on Syslog Socket.
+         Starting Journal Service...
+[  OK  ] Set up automount Arbitrary Executab…rmats File System Automount Point.
+         Mounting Kernel Debug File System...
+[  OK  ] Listening on fsck to fsckd communication Socket.
+         Starting Remount Root and Kernel File Systems...
+[  OK  ] Listening on /dev/initctl Compatibility Named Pipe.
+[  OK  ] Reached target User and Group Name Lookups.
+[  OK  ] Listening on udev Kernel Socket.
+         Starting udev Coldplug all Devices...
+[  OK  ] Reached target Swap.
+[   12.179575] Loading iSCSI transport class v2.0-870.
+[   12.187768] iscsi: registered transport (tcp)
+[  OK  ] Started Forward Password Requests to Wall Directory Watch.
+[  OK  ] Started Create list of required sta…vice nodes for the current kernel.
+[  OK  ] Mounted POSIX Message Queue File System.
+[  OK  ] Mounted Huge Pages File System.
+[  OK  ] Mounted Kernel Debug File System.
+[  OK  ] Started LVM2 metadata daemon.
+         Starting Create Static Device Nodes in /dev...
+[  OK  ] Started Journal Service.
+[   12.236264] EXT4-fs (sda1): re-mounted. Opts: (null)
+[  OK  ] Started Remount Root and Kernel File Systems.
+         Starting Flush Journal to Persistent Storage...
+         Starting Load/Save Random Seed...
+[  OK  ] Started Set the console keyboard layout.
+[  OK  ] Started udev Coldplug all Devices.
+[  OK  ] Started Create Static Device Nodes in /dev.
+         Starting udev Kernel Device Manager...
+[  OK  ] Started Monitoring of LVM2 mirrors,…sing dmeventd or progress polling.
+[  OK  ] Reached target Local File Systems (Pre).
+[  OK  ] Reached target Local File Systems.
+         Starting Tell Plymouth To Write Out Runtime Data...
+         Starting ebtables ruleset management...
+[   12.312415] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
+         Starting AppArmor initialization...
+         Starting Set console font and keymap...
+[   12.323998] systemd-journald[430]: Received request to flush runtime journal from PID 1
+[  OK  ] Started Load/Save Random Seed.
+[  OK  ] Started udev Kernel Device Manager.
+[  OK  ] Started Dispatch Password Requests to Console Directory Watch.
+[  OK  ] Reached target Local Encrypted Volumes.
+[  OK  ] Started Tell Plymouth To Write Out Runtime Data.
+[  OK  ] Started Set console font and keymap.
+[   12.438745] iscsi: registered transport (iser)
+[  OK  ] Started Load Kernel Modules.
+         Starting Apply Kernel Variables...
+         Mounting FUSE Control File System...
+         Mounting Kernel Configuration File System...
+[  OK  ] Mounted FUSE Control File System.
+[  OK  ] Mounted Kernel Configuration File System.
+[  OK  ] Started Apply Kernel Variables.
+[  OK  ] Started Flush Journal to Persistent Storage.
+         Starting Create Volatile Files and Directories...
+[  OK  ] Started Create Volatile Files and Directories.
+         Starting Update UTMP about System Boot/Shutdown...
+[  OK  ] Found device /dev/ttyS0.
+[  OK  ] Started ebtables ruleset management.
+[  OK  ] Started Update UTMP about System Boot/Shutdown.
+[  OK  ] Listening on Load/Save RF Kill Switch Status /dev/rfkill Watch.
+[  OK  ] Started AppArmor initialization.
+         Starting Initial cloud-init job (pre-networking)...
+         Starting Load AppArmor profiles managed internally by snapd...
+[  OK  ] Started Load AppArmor profiles managed internally by snapd.
+[  OK  ] Started Uncomplicated firewall.
+[   14.369168] cloud-init[592]: Cloud-init v. 21.3-1-g6803368d-0ubuntu1~18.04.4 running 'init-local' at Wed, 03 Nov 2021 19:17:02 +0000. Up 14.16 seconds.
+[  OK  ] Started Initial cloud-init job (pre-networking).
+[  OK  ] Reached target Network (Pre).
+         Starting Network Service...
+[  OK  ] Started Network Service.
+         Starting Wait for Network to be Configured...
+         Starting Network Name Resolution...
+[  OK  ] Started Network Name Resolution.
+[  OK  ] Reached target Network.
+[  OK  ] Reached target Host and Network Name Lookups.
+[  OK  ] Started Wait for Network to be Configured.
+         Starting Initial cloud-init job (metadata service crawler)...
+[   16.962371] cloud-init[760]: Cloud-init v. 21.3-1-g6803368d-0ubuntu1~18.04.4 running 'init' at Wed, 03 Nov 2021 19:17:05 +0000. Up 16.83 seconds.
+[   16.964443] cloud-init[760]: ci-info: +++++++++++++++++++++++++++++++++++++Net device info++++++++++++++++++++++++++++++++++++++
+[   16.966192] cloud-init[760]: ci-info: +--------+------+---------------------------+---------------+--------+-------------------+
+[   16.967962] cloud-init[760]: ci-info: | Device |  Up  |          Address          |      Mask     | Scope  |     Hw-Address    |
+[   16.970529] cloud-init[760]: ci-info: +--------+------+---------------------------+---------------+--------+-------------------+
+[   16.972116] cloud-init[760]: ci-info: | enp0s3 | True |         10.0.2.15         | 255.255.255.0 | global | 02:2f:77:f1:0c:e0 |
+[   16.973862] cloud-init[760]: ci-info: | enp0s3 | True | fe80::2f:77ff:fef1:ce0/64 |       .       |  link  | 02:2f:77:f1:0c:e0 |
+[   16.975633] cloud-init[760]: ci-info: |   lo   | True |         127.0.0.1         |   255.0.0.0   |  host  |         .         |
+[   16.977581] cloud-init[760]: ci-info: |   lo   | True |          ::1/128          |       .       |  host  |         .         |
+[   16.979311] cloud-init[760]: ci-info: +--------+------+---------------------------+---------------+--------+-------------------+
+[   16.981078] cloud-init[760]: ci-info: ++++++++++++++++++++++++++++Route IPv4 info+++++++++++++++++++++++++++++
+[   16.982645] cloud-init[760]: ci-info: +-------+-------------+----------+-----------------+-----------+-------+
+[   16.984232] cloud-init[760]: ci-info: | Route | Destination | Gateway  |     Genmask     | Interface | Flags |
+[   16.985872] cloud-init[760]: ci-info: +-------+-------------+----------+-----------------+-----------+-------+
+[   16.987222] cloud-init[760]: ci-info: |   0   |   0.0.0.0   | 10.0.2.2 |     0.0.0.0     |   enp0s3  |   UG  |
+[   16.989240] cloud-init[760]: ci-info: |   1   |   10.0.2.0  | 0.0.0.0  |  255.255.255.0  |   enp0s3  |   U   |
+[   17.000279] cloud-init[760]: ci-info: |   2   |   10.0.2.2  | 0.0.0.0  | 255.255.255.255 |   enp0s3  |   UH  |
+[   17.001761] cloud-init[760]: ci-info: +-------+-------------+----------+-----------------+-----------+-------+
+[   17.003750] cloud-init[760]: ci-info: +++++++++++++++++++Route IPv6 info+++++++++++++++++++
+[   17.016354] cloud-init[760]: ci-info: +-------+-------------+---------+-----------+-------+
+[   17.017647] cloud-init[760]: ci-info: | Route | Destination | Gateway | Interface | Flags |
+[   17.018900] cloud-init[760]: ci-info: +-------+-------------+---------+-----------+-------+
+[   17.020015] cloud-init[760]: ci-info: |   1   |  fe80::/64  |    ::   |   enp0s3  |   U   |
+[   17.021372] cloud-init[760]: ci-info: |   3   |    local    |    ::   |   enp0s3  |   U   |
+[   17.022595] cloud-init[760]: ci-info: |   4   |   ff00::/8  |    ::   |   enp0s3  |   U   |
+[   17.023700] cloud-init[760]: ci-info: +-------+-------------+---------+-----------+-------+
+[  OK  ] Started Initial cloud-init job (metadata service crawler).
+[  OK  ] Reached target System Initialization.
+[  OK  ] Started Ubuntu Advantage Timer for running repeated jobs.
+         Starting LXD - unix socket.
+[  OK  ] Started Discard unused blocks once a week.
+         Starting Socket activation for snappy daemon.
+[  OK  ] Listening on UUID daemon activation socket.
+[  OK  ] Started Daily apt download activities.
+[  OK  ] Listening on Open-iSCSI iscsid Socket.
+[  OK  ] Started Message of the Day.
+[  OK  ] Started Daily Cleanup of Temporary Directories.
+[  OK  ] Started ACPI Events Check.
+[  OK  ] Listening on cloud-init hotplug hook socket.
+[  OK  ] Started Trigger to poll for Ubuntu …(Only enabled on GCP LTS non-pro).
+[  OK  ] Reached target Paths.
+[  OK  ] Listening on D-Bus System Message Bus Socket.
+[  OK  ] Started Daily apt upgrade and clean activities.
+[  OK  ] Reached target Timers.
+[  OK  ] Listening on ACPID Listen Socket.
+[  OK  ] Reached target Network is Online.
+[  OK  ] Reached target Remote File Systems (Pre).
+[  OK  ] Reached target Remote File Systems.
+         Starting Availability of block devices...
+[  OK  ] Reached target Cloud-config availability.
+[  OK  ] Listening on LXD - unix socket.
+[  OK  ] Listening on Socket activation for snappy daemon.
+[  OK  ] Reached target Sockets.
+[  OK  ] Reached target Basic System.
+         Starting System Logging Service...
+[  OK  ] Started D-Bus System Message Bus.
+         Starting LSB: automatic crash report generation...
+         Starting Login Service...
+         Starting OpenBSD Secure Shell server...
+[  OK  ] Started FUSE filesystem for LXC.
+         Starting LSB: Record successful boot for GRUB...
+         Starting Permit User Sessions...
+         Starting Accounts Service...
+         Starting Virtualbox guest utils...
+[  OK  ] Started Regular background program processing daemon.
+         Starting LXD - container startup/shutdown...
+[  OK  ] Started Deferred execution scheduler.
+[  OK  ] Started irqbalance daemon.
+         Starting The Apache HTTP Server...
+         Starting Dispatcher daemon for systemd-networkd...
+         Starting Snap Daemon...
+[  OK  ] Started System Logging Service.
+[  OK  ] Started Availability of block devices.
+[  OK  ] Started Permit User Sessions.
+[  OK  ] Started Login Service.
+[  OK  ] Started OpenBSD Secure Shell server.
+         Starting Authorization Manager...
+[  OK  ] Started Unattended Upgrades Shutdown.
+         Starting Hold until boot process finishes up...
+         Starting Terminate Plymouth Boot Screen...
+[  OK  ] Started Hold until boot process finishes up.
+[  OK  ] Started Serial Getty on ttyS0.
+         Starting Set console scheme...
+[  OK  ] Started Terminate Plymouth Boot Screen.
+[  OK  ] Started Set console scheme.
+[  OK  ] Created slice system-getty.slice.
+[  OK  ] Started Getty on tty1.
+[  OK  ] Reached target Login Prompts.
+[  OK  ] Started LSB: Record successful boot for GRUB.
+[  OK  ] Started LSB: automatic crash report generation.
+[  OK  ] Started Authorization Manager.
+[  OK  ] Started Accounts Service.
+[  OK  ] Started Virtualbox guest utils.
+[  OK  ] Started LXD - container startup/shutdown.
+[  OK  ] Started The Apache HTTP Server.
+[  OK  ] Started Dispatcher daemon for systemd-networkd.
+[  OK  ] Started Snap Daemon.
+         Starting Wait until snapd is fully seeded...
+[  OK  ] Started Wait until snapd is fully seeded.
+         Starting Apply the settings specified in cloud-config...
+[  OK  ] Reached target Multi-User System.
+[  OK  ] Reached target Graphical Interface.
+         Starting Update UTMP about System Runlevel Changes...
+[  OK  ] Started Update UTMP about System Runlevel Changes.
+[  OK  ] Created slice User Slice of vagrant.
+         Starting User Manager for UID 1000...
+[  OK  ] Started Session 1 of user vagrant.
+[  OK  ] Started User Manager for UID 1000.
+[   19.364369] cloud-init[1285]: Cloud-init v. 21.3-1-g6803368d-0ubuntu1~18.04.4 running 'modules:config' at Wed, 03 Nov 2021 19:17:07 +0000. Up 19.16 seconds.
+[  OK  ] Started Apply the settings specified in cloud-config.
+         Starting Execute cloud user/final scripts...
+[   20.047162] cloud-init[1366]: Cloud-init v. 21.3-1-g6803368d-0ubuntu1~18.04.4 running 'modules:final' at Wed, 03 Nov 2021 19:17:08 +0000. Up 19.92 seconds.
+[   20.049622] cloud-init[1366]: Cloud-init v. 21.3-1-g6803368d-0ubuntu1~18.04.4 finished at Wed, 03 Nov 2021 19:17:08 +0000. Datasource DataSourceNoCloud [seed=/dev/sdb][dsmode=net].  Up 20.03 seconds
+[  OK  ] Started Execute cloud user/final scripts.
+[  OK  ] Reached target Cloud-init target.
+

+Ubuntu 18.04.6 LTS ubuntu-bionic ttyS0
+
+ubuntu-bionic login: 
\ No newline at end of file
diff --git a/www/i18n/locale-en-GB.json b/www/i18n/locale-en-GB.json
index e9ddd3a84dea60b2b2d74721028d3332360ed07a..b617c340a1bf35d6d401d8158626fd1946863580 100644
--- a/www/i18n/locale-en-GB.json
+++ b/www/i18n/locale-en-GB.json
@@ -565,6 +565,24 @@
     "SELECT_WALLET_MODAL": {
       "TITLE": "Wallet selection"
     },
+    "CERTIFICATION_MODAL": {
+      "CHECKLIST_TITLE": "Certification check list",
+      "INFOS": "Each member is responsible for the security of Ğ1 currency. Before certifying this person's identity, you should have performed few checks. Please answer following questions:",
+      "BTN_ALL_CHECK": "Certify",
+      "CHECKLIST_CONDITIONS_NOT_MET": "Certification has not been sent. All answers are not right. Please double-check each point with the person you want to certify.",
+      "QUESTIONS": {
+        "WELL_KNOWN": "Do you know <b>well</b> the person you are about to certify? Do you know other people who also know thes person well?",
+        "REVOCATION": "Has this person downloaded their <b>revocation document</b> and do they know where to find it?",
+        "CONTACT": "Have you <b>had contact</b> with this person by many means, and did they answer?",
+        "DOUBLE_IDENTITY": "The person should own <b>only one active member identity</b>. Do you think they own another one?",
+        "MASTER_ACCOUNT": "Does this person own their accounts secrets? Have they already <b>sent money from their account</b> at least once?",
+        "LICENSE": "Has this person <b>understood the Duniter license</b>? Do they agree to comply with it for future certifications?",
+        "CREDENTIALS": "Was the account created with <b>long and complex ID/Password</b> (ex. passphrases) ? Did the person understand that both ID and password must remain secret ? Are they <b>sure to remember them</b> or to be able to find them?",
+        "PUBLIC_KEY_DIFFERENT": "The <b>public key</b> that is shown must be <b>identical</b> to the one the person gave you. The public keys are they <b>different</b> ?"
+      },
+      "REMINDER_TITLE": "Reminder",
+      "SHORT_LICENSE_REMINDER": "<p>You may remind the person to certify different certification parameters:</p><p>- Each member can certify 100 other identities at most.</p><p>- The certifications are saved with a 5 days interval.</p><p>- A new identity must gather at least 5 certifications in less than 2 months.</p><p>- A member must renew its membership at least once a year.</p><p>- Certifications have a lifespan of two years.</p>"
+    },
     "WALLET_LIST": {
       "TITLE": "My wallets",
       "BTN_NEW": "Add a wallet",
diff --git a/www/i18n/locale-en.json b/www/i18n/locale-en.json
index 8e328acf2bd937d49e138a4bf18e1a28ac240c4e..e927c4d38e107f37c0862a0caec56c80b6560efe 100644
--- a/www/i18n/locale-en.json
+++ b/www/i18n/locale-en.json
@@ -565,6 +565,24 @@
     "SELECT_WALLET_MODAL": {
       "TITLE": "Wallet selection"
     },
+    "CERTIFICATION_MODAL": {
+      "CHECKLIST_TITLE": "Certification check list",
+      "INFOS": "Each member is responsible for the security of Ğ1 currency. Before certifying this person's identity, you should have performed few checks. Please answer following questions:",
+      "BTN_ALL_CHECK": "Certify",
+      "CHECKLIST_CONDITIONS_NOT_MET": "Certification has not been sent. All answers are not right. Please double-check each point with the person you want to certify.",
+      "QUESTIONS": {
+        "WELL_KNOWN": "Do you know <b>well</b> the person you are about to certify? Do you know other people who also know thes person well?",
+        "REVOCATION": "Has this person downloaded their <b>revocation document</b> and do they know where to find it?",
+        "CONTACT": "Have you <b>had contact</b> with this person by many means, and did they answer?",
+        "DOUBLE_IDENTITY": "The person should own <b>only one active member identity</b>. Do you think they own another one?",
+        "MASTER_ACCOUNT": "Does this person own their accounts secrets? Have they already <b>sent money from their account</b> at least once?",
+        "LICENSE": "Has this person <b>understood the Duniter license</b>? Do they agree to comply with it for future certifications?",
+        "CREDENTIALS": "Was the account created with <b>long and complex ID/Password</b> (ex. passphrases) ? Did the person understand that both ID and password must remain secret ? Are they <b>sure to remember them</b> or to be able to find them?",
+        "PUBLIC_KEY_DIFFERENT": "The <b>public key</b> that is shown must be <b>identical</b> to the one the person gave you. The public keys are they <b>different</b> ?"
+      },
+      "REMINDER_TITLE": "Reminder",
+      "SHORT_LICENSE_REMINDER": "<p>You may remind the person to certify different certification parameters:</p><p>- Each member can certify 100 other identities at most.</p><p>- The certifications are saved with a 5 days interval.</p><p>- A new identity must gather at least 5 certifications in less than 2 months.</p><p>- A member must renew its membership at least once a year.</p><p>- Certifications have a lifespan of two years.</p>"
+    },
     "WALLET_LIST": {
       "TITLE": "My wallets",
       "BTN_NEW": "Add a wallet",
diff --git a/www/i18n/locale-fr-FR.json b/www/i18n/locale-fr-FR.json
index 8622064c4589fffe14d56ca9d8c5243757c5bc7f..b0a88d90324ea77bcd70f6b0a89decc357f5f107 100644
--- a/www/i18n/locale-fr-FR.json
+++ b/www/i18n/locale-fr-FR.json
@@ -565,6 +565,24 @@
     "SELECT_WALLET_MODAL": {
       "TITLE": "Sélection du portefeuille"
     },
+    "CERTIFICATION_MODAL": {
+      "CHECKLIST_TITLE": "Vérifications avant certification",
+      "INFOS": "La sécurité de la monnaie Ğ1 repose sur chaque membre. Avant de certifier l'identité de cette personne, vous devez avoir fait quelques vérifications à son propos. Veuillez répondre aux questions suivantes :",
+      "BTN_ALL_CHECK": "Certifier",
+      "CHECKLIST_CONDITIONS_NOT_MET": "La certification n'a pas été envoyée. Les vérifications semblent insuffisantes. Veuillez vérifier de nouveau chaque point auprès de la personne à certifier.",
+      "QUESTIONS": {
+        "WELL_KNOWN": "<b>Connaissez-vous bien</b> la personne que vous certifiez, et connaissez-vous des gens qui la connaissent bien également ?",
+        "REVOCATION": "A-t-elle téléchargé son <b>document de révocation</b> et sait-elle où le retrouver ?",
+        "CONTACT": "Avez-vous <b>contacté</b> cette personne par plusieurs moyens et vous a-t-elle répondu ?",
+        "DOUBLE_IDENTITY": "La personne doit posséder <b>une seule identité membre active</b>. En possède-t-elle une <b>autre</b> ?",
+        "MASTER_ACCOUNT": "Maîtrise-t-elle son compte, et a-t-elle déjà <b>effectué au moins un virement</b> depuis son compte ?",
+        "LICENSE": "A-t-elle <b>compris la licence</b>, et accepte-t-elle de s'y conformer pour la certification d'autres membres ?",
+        "CREDENTIALS": "L’identifiant et le mot de passe de son compte sont-ils <b>longs et complexes</b> (phrases de passe) ? A-t-elle compris que l’identifiant doit également rester secret ? Est-elle <b>certaine de s’en souvenir</b> ou de pouvoir les retrouver ?",
+        "PUBLIC_KEY_DIFFERENT": "La <b>clef publique</b> indiquée doit être <b>identique</b> à celle que vous a communiqué cette personne. Les clefs sont-elles <b>différentes</b> ?"
+      },
+      "REMINDER_TITLE": "Rappel",
+      "SHORT_LICENSE_REMINDER": "<p>Vous pouvez rappeler à la personne certifiée les paramètres des certifications :</p><p>- Chaque membre peut avoir émis 100 certifications valides au maximum.</p><p>- Les certifications sont enregistrées à un intervalle de 5 jours.</p><p>- Une nouvelle identité membre doit réunir au minimum 5 certifications en moins de deux mois.</p><p>- Un membre doit renouveler son adhésion chaque année.</p><p>- Les certifications sont valides durant deux ans.</p>"
+    },
     "WALLET_LIST": {
       "TITLE": "Mes portefeuilles",
       "BTN_NEW": "Ajouter un portefeuille",
@@ -787,7 +805,8 @@
     "UNKNOWN_WALLET_ID": "Portefeuille secondaire inconnu.",
     "RESTORE_WALLET_LIST_FAILED": "Échec de la restauration des portefeuilles secondaires.",
     "INVALID_FILE_FORMAT": "Format de fichier invalide.",
-    "SAME_TX_RECIPIENT": "Le destinataire doit être différent de l'émetteur."
+    "SAME_TX_RECIPIENT": "Le destinataire doit être différent de l'émetteur.",
+    "SELF_CERTIFICATION": "Vous ne pouvez pas certifier votre propre identité."
   },
   "INFO": {
     "POPUP_TITLE": "Information",
diff --git a/www/js/controllers/wot-controllers.js b/www/js/controllers/wot-controllers.js
index b7d9cd2c2b31cfbaa38f359d0c9eae164a11a8f6..1a3c597e00d2669410de8fc4a31e94202fb5bcd0 100644
--- a/www/js/controllers/wot-controllers.js
+++ b/www/js/controllers/wot-controllers.js
@@ -157,6 +157,8 @@ angular.module('cesium.wot.controllers', ['cesium.services'])
 
   .controller('WotCertificationsViewCtrl', WotCertificationsViewController)
 
+  .controller('WotCertificationChecklistCtrl', WotCertificationChecklistController)
+
   .controller('WotSelectPubkeyIdentityModalCtrl', WotSelectPubkeyIdentityModalController)
 
 ;
@@ -773,63 +775,43 @@ function WotIdentityAbstractController($scope, $rootScope, $state, $translate, $
               return;
             }
 
-            // Check identity not expired
-            if ($scope.formData.requirements.expired) {
-              UIUtils.alert.error('ERROR.IDENTITY_EXPIRED');
+            if ( ! $scope.commonCertificationVerifications($scope.formData, wallet) ) {
               return;
             }
 
-            // Check not already certified
-            var previousCert = _.find($scope.formData.received_cert, function(cert) {
-              return cert.pubkey === wallet.data.pubkey && cert.valid && cert.expiresIn > csSettings.data.timeWarningExpire;
-            });
-            if (previousCert) {
-              $translate('ERROR.IDENTITY_ALREADY_CERTIFY', previousCert)
-                .then(function(message) {
-                  UIUtils.alert.error(message, 'ERROR.UNABLE_TO_CERTIFY_TITLE');
-                });
-              return;
-            }
+            // Prepare actions after user confirmation
+            let answers_are_right = $q.defer();
+            answers_are_right.promise.then( function (cert_status) {
+              return $scope.showLicenseReminderIfNewCert(cert_status)
+            })
+            .then(function(confirm){
+              if (! confirm) {return}
+              UIUtils.loading.show();
+              wallet.certify($scope.formData.uid,
+                $scope.formData.pubkey,
+                $scope.formData.blockUid || ($scope.formData.requirements && $scope.formData.requirements.meta && $scope.formData.requirements.meta.timestamp),
+                $scope.formData.requirements && $scope.formData.requirements.meta && $scope.formData.requirements.meta.sig,
+                $scope.formData.isMember,
+                $scope.formData.wasMember)
+                .then(function(cert) {
+                  UIUtils.loading.hide();
+                  if (cert) {
+                    $scope.prepareNewCert(wallet, cert);
+                    $scope.alreadyCertified = true;
+                    UIUtils.toast.show('INFO.CERTIFICATION_DONE');
+                    $scope.formData.received_cert_pending.unshift(cert);
+                    $scope.formData.requirements.pendingCertificationCount++;
+                    $scope.doMotion();
+                  }
+                })
+                .catch(UIUtils.onError('ERROR.SEND_CERTIFICATION_FAILED'));
+            })
+            .catch(
+              UIUtils.onError('ACCOUNT.CERTIFICATION_MODAL.CHECKLIST_CONDITIONS_NOT_MET')
+            );
 
-            // Check no pending certification
-            previousCert = _.findWhere($scope.formData.received_cert_pending, { pubkey: wallet.data.pubkey, valid: true});
-            if (previousCert) {
-              $translate('ERROR.IDENTITY_ALREADY_CERTIFY_PENDING', previousCert)
-                .then(function(message) {
-                  UIUtils.alert.error(message, 'ERROR.UNABLE_TO_CERTIFY_TITLE');
-                });
-              return;
-            }
+            return $scope.displayConfirmationModalOrLicenseQuestions($scope.formData, wallet, answers_are_right )
 
-            UIUtils.alert.confirm('CONFIRM.CERTIFY_RULES', 'CONFIRM.POPUP_SECURITY_WARNING_TITLE', {
-              cssClass: 'warning',
-              okText: 'WOT.BTN_YES_CERTIFY',
-              okType: 'button-assertive'
-            })
-              .then(function(confirm){
-                if (!confirm) {
-                  return;
-                }
-                UIUtils.loading.show();
-                wallet.certify($scope.formData.uid,
-                  $scope.formData.pubkey,
-                  $scope.formData.blockUid || ($scope.formData.requirements && $scope.formData.requirements.meta && $scope.formData.requirements.meta.timestamp),
-                  $scope.formData.requirements && $scope.formData.requirements.meta && $scope.formData.requirements.meta.sig,
-                  $scope.formData.isMember,
-                  $scope.formData.wasMember)
-                  .then(function(cert) {
-                    UIUtils.loading.hide();
-                    if (cert) {
-                      $scope.prepareNewCert(wallet, cert);
-                      $scope.alreadyCertified = true;
-                      UIUtils.toast.show('INFO.CERTIFICATION_DONE');
-                      $scope.formData.received_cert_pending.unshift(cert);
-                      $scope.formData.requirements.pendingCertificationCount++;
-                      $scope.doMotion();
-                    }
-                  })
-                  .catch(UIUtils.onError('ERROR.SEND_CERTIFICATION_FAILED'));
-              });
           })
           .catch(function(err) {
             if (err === 'CANCELLED') return;
@@ -838,6 +820,85 @@ function WotIdentityAbstractController($scope, $rootScope, $state, $translate, $
       });
   };
 
+  $scope.commonCertificationVerifications = function (receiver_idty, sender_wallet) {
+
+    // Check it is no self-certification
+    if (receiver_idty.pubkey === sender_wallet.data.pubkey) {
+      UIUtils.alert.error('ERROR.SELF_CERTIFICATION');
+      return false;
+    }
+
+    // Check identity not expired
+    if (receiver_idty.requirements.expired) {
+      UIUtils.alert.error('ERROR.IDENTITY_EXPIRED');
+      return false;
+    }
+
+    // Check not already certified
+    var previousCert = _.find(receiver_idty.received_cert, function (cert) {
+      return cert.pubkey === sender_wallet.data.pubkey && cert.valid && cert.expiresIn > csSettings.data.timeWarningExpire;
+    });
+    if (previousCert) {
+      $translate('ERROR.IDENTITY_ALREADY_CERTIFY', previousCert)
+        .then(function (message) {
+          UIUtils.alert.error(message, 'ERROR.UNABLE_TO_CERTIFY_TITLE');
+        });
+      return false;
+    }
+
+    // Check no pending certification
+    previousCert = _.findWhere(receiver_idty.received_cert_pending, { pubkey: sender_wallet.data.pubkey, valid: true });
+    if (previousCert) {
+      $translate('ERROR.IDENTITY_ALREADY_CERTIFY_PENDING', previousCert)
+        .then(function (message) {
+          UIUtils.alert.error(message, 'ERROR.UNABLE_TO_CERTIFY_TITLE');
+        });
+      return false;
+    }
+
+    return true;
+  }
+
+  $scope.showLicenseReminderIfNewCert = function (cert_status) {
+    if (cert_status == "new_cert") {
+      return UIUtils.alert.confirm(
+        'ACCOUNT.CERTIFICATION_MODAL.SHORT_LICENSE_REMINDER',
+        'ACCOUNT.CERTIFICATION_MODAL.REMINDER_TITLE',
+        {
+          cssClass: 'positive',
+          okText: 'COMMON.BTN_OK',
+          okType: 'button-positive'
+        }
+      )
+    }
+    return true;
+  }
+
+  $scope.displayConfirmationModalOrLicenseQuestions = function (certified_idty, sender_wallet, answers_are_right) {
+
+    if (isCertificationRenewal(certified_idty.received_cert, sender_wallet.data.pubkey)) {
+      return $scope.certRenewalConfirmationModal(answers_are_right)
+    }
+
+    return Modals.showCertificationCheckList({
+      answers_are_right: answers_are_right,
+      identity: certified_idty,
+    });
+  }
+
+  $scope.certRenewalConfirmationModal = function (answers_are_right) {
+    return UIUtils.alert.confirm('CONFIRM.CERTIFY_RULES', 'CONFIRM.CERTIFY_RULES_TITLE_UID', {
+      cssClass: 'warning',
+      okText: 'WOT.BTN_YES_CERTIFY',
+      okType: 'button-assertive'
+    })
+      .then(function (confirm) {
+        if (confirm) {
+          answers_are_right.resolve("renewal");
+        }
+      })
+  }
+
   // Select an identity and certify
   $scope.selectAndCertify = function() {
 
@@ -881,62 +942,43 @@ function WotIdentityAbstractController($scope, $rootScope, $state, $translate, $
               return;
             }
 
-            // Check identity not expired
-            if (identity.requirements.expired) {
-              UIUtils.alert.error('ERROR.IDENTITY_EXPIRED');
+            if ( ! $scope.commonCertificationVerifications(identity, wallet) ) {
               return;
             }
 
-            // Check not already certified
-            var previousCert = _.findWhere(identity.received_cert, {pubkey: wallet.data.pubkey, valid: true});
-            if (previousCert) {
-              $translate('ERROR.IDENTITY_ALREADY_CERTIFY', previousCert)
-                .then(function (message) {
-                  UIUtils.alert.error(message, 'ERROR.UNABLE_TO_CERTIFY_TITLE');
-                });
-              return;
-            }
+            // Prepare actions after user confirmation
+            let answers_are_right = $q.defer();
+            answers_are_right.promise.then( function (cert_status) {
+              return $scope.showLicenseReminderIfNewCert(cert_status)
+            })
+            .then(function(confirm){
+              if (! confirm) {return}
+              UIUtils.loading.show();
+              // Send certification
+              wallet.certify(identity.uid,
+                identity.pubkey,
+                identity.blockUid || (identity.requirements && identity.requirements.meta && identity.requirements.meta.timestamp),
+                identity.requirements && identity.requirements.meta && identity.requirements.meta.sig,
+                identity.isMember,
+                identity.wasMember)
+                .then(function (cert) {
+                  UIUtils.loading.hide();
+                  if (!cert) return;
+                  return csWot.extendAll([cert], 'pubkey')
+                    .then(function () {
+                      UIUtils.toast.show('INFO.CERTIFICATION_DONE');
+                      $scope.formData.given_cert_pending.unshift(cert);
+                      $scope.doMotion();
+                    });
+                })
+                .catch(UIUtils.onError('ERROR.SEND_CERTIFICATION_FAILED'));
+            })
+            .catch(
+              UIUtils.onError('ACCOUNT.CERTIFICATION_MODAL.CHECKLIST_CONDITIONS_NOT_MET')
+            );
 
-            // Check not pending certification
-            previousCert = _.findWhere(identity.received_cert_pending, {pubkey: wallet.data.pubkey, valid: true});
-            if (previousCert) {
-              $translate('ERROR.IDENTITY_ALREADY_CERTIFY_PENDING', previousCert)
-                .then(function (message) {
-                  UIUtils.alert.error(message, 'ERROR.UNABLE_TO_CERTIFY_TITLE');
-                });
-              return;
-            }
+            return $scope.displayConfirmationModalOrLicenseQuestions(identity, wallet, answers_are_right )
 
-            // Ask confirmation
-            $translate('CONFIRM.CERTIFY_RULES_TITLE_UID', {uid: identity.uid})
-              .then(function (confirmTitle) {
-                return UIUtils.alert.confirm('CONFIRM.CERTIFY_RULES', confirmTitle);
-              })
-              .then(function (confirm) {
-                if (!confirm) {
-                  return;
-                }
-                UIUtils.loading.show();
-
-                // Send certification
-                wallet.certify(identity.uid,
-                  identity.pubkey,
-                  identity.blockUid || (identity.requirements && identity.requirements.meta && identity.requirements.meta.timestamp),
-                  identity.requirements && identity.requirements.meta && identity.requirements.meta.sig,
-                  identity.isMember,
-                  identity.wasMember)
-                  .then(function (cert) {
-                    UIUtils.loading.hide();
-                    if (!cert) return;
-                    return csWot.extendAll([cert], 'pubkey')
-                      .then(function () {
-                        UIUtils.toast.show('INFO.CERTIFICATION_DONE');
-                        $scope.formData.given_cert_pending.unshift(cert);
-                        $scope.doMotion();
-                      });
-                  })
-                  .catch(UIUtils.onError('ERROR.SEND_CERTIFICATION_FAILED'));
-              });
           })
           .catch(function (err) {
             if (err === 'CANCELLED') return;
@@ -1447,6 +1489,88 @@ function WotCertificationsViewController($scope, $rootScope, $controller, csSett
   };
 }
 
+/**
+ * Certification checklist controller
+ * @param $controller
+ */
+ function WotCertificationChecklistController($scope, $controller, parameters){
+
+  // allow to display license
+  $controller('CurrencyViewCtrl', {$scope: $scope});
+
+  let answers_are_right = parameters.answers_are_right;
+  $scope.identity = parameters.identity;
+
+  $scope.prepare_cert_checklist = function() {
+    const original_cert_checklist = [
+      {
+        question: 'ACCOUNT.CERTIFICATION_MODAL.QUESTIONS.WELL_KNOWN',
+        expected_answer: true,
+        answer: false
+      },
+      {
+        question: 'ACCOUNT.CERTIFICATION_MODAL.QUESTIONS.REVOCATION',
+        expected_answer: true,
+        answer: false
+      },
+      {
+        question: 'ACCOUNT.CERTIFICATION_MODAL.QUESTIONS.CONTACT',
+        expected_answer: true,
+        answer: false
+      },
+      {
+        question: 'ACCOUNT.CERTIFICATION_MODAL.QUESTIONS.MASTER_ACCOUNT',
+        expected_answer: true,
+        answer: false
+      },
+      {
+        question: 'ACCOUNT.CERTIFICATION_MODAL.QUESTIONS.LICENSE',
+        expected_answer: true,
+        answer: false
+      },
+      {
+        question: 'ACCOUNT.CERTIFICATION_MODAL.QUESTIONS.CREDENTIALS',
+        expected_answer: true,
+        answer: false
+      },
+      // questions with negative answers
+      {
+        question: 'ACCOUNT.CERTIFICATION_MODAL.QUESTIONS.DOUBLE_IDENTITY',
+        expected_answer: false,
+        answer: false
+      },
+      {
+        question: 'ACCOUNT.CERTIFICATION_MODAL.QUESTIONS.PUBLIC_KEY_DIFFERENT',
+        expected_answer: false,
+        answer: false
+      },
+    ];
+
+    // Fisher-Yates shuffle
+    function shuffle(array) {
+      for (let i = array.length - 1; i > 0; i--) {
+        let j = Math.floor(Math.random() * (i + 1)); // random index from 0 to i
+        let t = array[i]; array[i] = array[j]; array[j] = t
+      }
+      return array;
+    }
+
+    return shuffle(original_cert_checklist).slice(0, 5);
+  }
+  $scope.cert_checklist = $scope.prepare_cert_checklist();
+
+  $scope.verifyAnswers = function() {
+    $scope.cert_checklist.map( question => {
+      if (question.answer !== question.expected_answer) {
+        // TODO message should be changed.
+        answers_are_right.reject();
+      }
+    });
+    answers_are_right.resolve("new_cert");
+
+    $scope.closeModal();
+  }
+}
 
 /**
  * Select identities from a pubkey (useful when many self on the same pubkey)
@@ -1491,3 +1615,9 @@ function WotSelectPubkeyIdentityModalController($scope, $q, csWot, parameters) {
   };
   $scope.$on('modal.shown', $scope.load);
 }
+
+function isCertificationRenewal(identity_current_certs, certifier_pubkey) {
+  return _.find(identity_current_certs, function(certification) {
+    return certification.pubkey == certifier_pubkey;
+  })
+}
diff --git a/www/js/services/modal-services.js b/www/js/services/modal-services.js
index 3ff97d62e0d469c9653ee2644194a38a42a6bdf6..4cd65471a2a62aa944379cf7c0a9927ef24a1cdd 100644
--- a/www/js/services/modal-services.js
+++ b/www/js/services/modal-services.js
@@ -232,6 +232,10 @@ angular.module('cesium.modal.services', ['cesium.utils.services'])
       parameters);
   }
 
+  function showCertificationCheckList(parameters) {
+    return ModalUtils.show('templates/wot/modal_certification_checklist.html','WotCertificationChecklistCtrl', parameters);
+  }
+
   function showSelectPubkeyIdentity(parameters) {
     return ModalUtils.show('templates/wot/modal_select_pubkey_identity.html', 'WotSelectPubkeyIdentityModalCtrl',
       parameters);
@@ -294,6 +298,7 @@ angular.module('cesium.modal.services', ['cesium.utils.services'])
     showHelp: showHelp,
     showAccountSecurity: showAccountSecurity,
     showLicense: showLicense,
+    showCertificationCheckList: showCertificationCheckList,
     showSelectPubkeyIdentity: showSelectPubkeyIdentity,
     showSelectWallet: showSelectWallet,
     showPassword: showPassword
diff --git a/www/templates/wot/item_checklist_certification.html b/www/templates/wot/item_checklist_certification.html
new file mode 100644
index 0000000000000000000000000000000000000000..a4e5b9834b3c1b066d3d2882ef18b86dcd17a11e
--- /dev/null
+++ b/www/templates/wot/item_checklist_certification.html
@@ -0,0 +1,17 @@
+<div class="col col-80">
+    <div class="ion-text text-wrap" ng-bind-html="check.question | translate"></div>
+  </div>
+  <div class="col text-right">
+    <div class="ion-text" style="text-transform: uppercase;">
+      <b ng-if="check.answer" translate>COMMON.BTN_YES</b>
+      <b ng-if="!check.answer" translate>COMMON.BTN_NO</b>
+    </div>
+  </div>
+  <div class="col float-left">
+    <label class="toggle toggle-royal">
+      <input type="checkbox" ng-model="check.answer">
+      <div class="track">
+        <div class="handle"></div>
+      </div>
+    </label>
+  </div>
\ No newline at end of file
diff --git a/www/templates/wot/modal_certification_checklist.html b/www/templates/wot/modal_certification_checklist.html
new file mode 100644
index 0000000000000000000000000000000000000000..6fdfd8af4fad51664f97da1aaabb60d1d052d5ec
--- /dev/null
+++ b/www/templates/wot/modal_certification_checklist.html
@@ -0,0 +1,82 @@
+<ion-modal-view class="modal-full-height">
+
+    <!-- TOP BAR -->
+    <ion-header-bar class="bar-positive">
+
+        <button class="button button-clear visible-xs"
+                ng-if="!slides.slider.activeIndex"
+                ng-click="closeModal()" translate>COMMON.BTN_CANCEL
+        </button>
+        <button class="button button-icon button-clear icon ion-ios-arrow-back buttons header-item"
+                ng-click="doPrev()"
+                ng-if="slides.slider.activeIndex && slideBehavior.hasPreviousButton">
+        </button>
+        <button class="button button-icon button-clear icon ion-ios-help-outline visible-xs"
+                ng-if="slideBehavior.helpAnchor"
+                ng-click="showHelpModal(slideBehavior.helpAnchor)">
+        </button>
+    
+        <h1 class="title" translate>ACCOUNT.CERTIFICATION_MODAL.CHECKLIST_TITLE</h1>
+    
+        <!-- next -->
+        <button class="button button-clear icon-right visible-xs"
+                ng-if="slideBehavior.hasNextButton"
+                ng-click="doNext()">
+          <span translate>COMMON.BTN_NEXT</span>
+          <i class="icon ion-ios-arrow-right"></i>
+        </button>
+        <!-- accept -->
+        <button class="button button-clear icon-right visible-xs"
+                ng-class="{'button-text-stable': !isLicenseRead}"
+                ng-if="slideBehavior.hasAcceptButton"
+                ng-click="isLicenseRead ? doNext() : undefined">
+          <span translate>ACCOUNT.NEW.BTN_ACCEPT</span>
+          <i class="icon ion-ios-arrow-right"></i>
+        </button>
+        <!-- send -->
+        <button class="button button-clear icon-right visible-xs"
+                ng-if="slideBehavior.hasSendButton"
+                ng-click="doNewAccount()">
+          <i class="icon ion-android-send"></i>
+        </button>
+      </ion-header-bar>
+
+
+    <!-- CONTENT -->
+    <ion-content class="has-header" scroll="true">
+
+      <div class="padding text-center" ><b>
+        {{ identity.uid }} - {{:rebind:identity.pubkey|formatPubkey: {full: true, checksum: formData.checksum} }}
+      </b></div>
+
+      <div class="padding" translate>ACCOUNT.CERTIFICATION_MODAL.INFOS</div>
+
+      <div class="card padding">
+        <div class="row nowrap row-center"
+                  ng-repeat="check in cert_checklist"
+                  ng-include="::'templates/wot/item_checklist_certification.html'">
+        </div>
+      </div>
+
+
+      <div class="padding text-right">
+
+        <button class="button button-clear button-dark ink hidden-xs" ng-click="closeModal()" type="button"   translate>
+          COMMON.BTN_CANCEL
+        </button>
+
+        <button class="button button-stable icon-right ink"
+                ng-if="formData.licenseUrl"
+                ng-click="showLicenseModal()">
+          <i class="icon ion-document-text"></i>&nbsp;
+          {{'CURRENCY.VIEW.BTN_SHOW_LICENSE' | translate}}
+        </button>
+
+        <button class="button button-positive icon-right ion-chevron-right ink" ng-click="verifyAnswers()"
+          type="button" translate>
+          ACCOUNT.CERTIFICATION_MODAL.BTN_ALL_CHECK
+        </button>
+
+      </div>
+    </ion-content>
+</ion-modal-view>
\ No newline at end of file