# Registration

## Overview

The registration client is a thick Java-based client where the resident's demographic and biometric details are captured along with the supporting documents in online or offline mode. The captured information is packaged in a secure tamper-proof way and send to the server for processing.

Registration client must provide the following :

* **Secure** way of capturing an individual's demographic and biometric data. The captured data must be cryptographically secure such that the data cannot be tampered with. This is called a registration packet.
* **Interfaces to biometric devices** that comply to industry standards. This ensure that any device manufactured as per standards will work with MOSIP.
* Works in **online and offline** mode. In remote areas where internet connectivity is a challenge, the registration client must work in offline mode.
* **Remote software update** capability. There must be a way to self-update to latest patches/upgrades (bug fixes/enhancements) in a remote way. There could be hundreds of client instances running on laptops/desktops. Updates on all of them must be controlled a central server.
* **Tamper-proof client software**. The registration client must have an ability to validate the structure of the information captured so that it could detect any anomoly due to a possible manual tampering and reject the captured packet.

## Detailed functionality

[Registration Functionality](https://docs.mosip.io/1.1.5/modules/registration-client/registration-functionality)

## Process flow

### Registration officer Onboarding

![Registration Officer Onboarding](https://306789431-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M1R77ZUwR6XwtPjJIVm%2Fuploads%2Fgit-blob-8e46266864256eb9396065d98bda705dde17b7de%2Freg_client_registration_officer_onboarding.jpg?alt=media)

### Registration preparation

![Registration Preparation](https://306789431-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M1R77ZUwR6XwtPjJIVm%2Fuploads%2Fgit-blob-39987f89ffb4c309726b17406ba2b6a75536bfe6%2Freg_client_registration_prep.jpg?alt=media)

### Individual registration

![Registration](https://306789431-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M1R77ZUwR6XwtPjJIVm%2Fuploads%2Fgit-blob-7d21e0a1ca92a472fe34a13ec917304194fa7d2b%2Freg_client_registration.jpg?alt=media)

### Packet upload

![Packet Upload](https://306789431-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M1R77ZUwR6XwtPjJIVm%2Fuploads%2Fgit-blob-2faa8d9af2224dc299886fb35789434272b0ccfb%2Freg_client_registration_packet_upload.jpg?alt=media)

### End of day (EOD) process

![EOD process](https://306789431-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M1R77ZUwR6XwtPjJIVm%2Fuploads%2Fgit-blob-7066e40c0d875dd943e7ef789d20448157098adc%2Freg_client_eod_process.jpg?alt=media)

### UIN update

![UIN Update](https://306789431-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M1R77ZUwR6XwtPjJIVm%2Fuploads%2Fgit-blob-730baadc73159017ff32808079cbbd3a124eaa41%2Freg_client_uin_update.jpg?alt=media)

### Lost UIN

![Lost UIN](https://306789431-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M1R77ZUwR6XwtPjJIVm%2Fuploads%2Fgit-blob-2f36b3368102ececfafe0c320b7e6db4db95de91%2Freg_client_lost_uin.jpg?alt=media)

### Software update

![Software Update](https://306789431-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M1R77ZUwR6XwtPjJIVm%2Fuploads%2Fgit-blob-4d4d5c638aed0f3fb0dfafa7f3a3371c830eb997%2Freg_client_software_update.jpg?alt=media)

### Logical view

![Registration client logical view](https://306789431-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M1R77ZUwR6XwtPjJIVm%2Fuploads%2Fgit-blob-d7ab47d0468ca506ff4c07217fa027404790cd02%2Freg_client_logical_architecture.png?alt=media)

### Component architecture

![Registration client component architecture](https://306789431-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M1R77ZUwR6XwtPjJIVm%2Fuploads%2Fgit-blob-ef6dba33cda8fc439d4c44ea44e01400ee2f8d80%2Freg_client_component_architecture.png?alt=media)

## Registration packet structure

All the registration information is zipped and encrypted in a packet and sent to the server. The structure of the packet is given [here](https://docs.mosip.io/1.1.5/modules/registration-client/registration-packet).

## Registration client reference application

MOSIP provides an Windows-based reference implementation of the client that has a UI and the business logic to perform the above process flows. The code, design, App setup, build documentation is available in [registration client repo](https://github.com/mosip/registration/tree/master/registration). The App may be modified according to a country's need.

[Registation client setup guide](https://docs.mosip.io/1.1.5/modules/registration-client/registration-client-setup)

## First user on-boarding

TBD
