# mosip/mosip-mock-services architecture

> Architecture diagram of the GitHub repository mosip/mosip-mock-services, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mosip/mosip-mock-services
- Repository: https://github.com/mosip/mosip-mock-services

## Overview

MOSIP Mock Services is a collection of non-production simulations for biometric devices, biometric processing, ABIS, and master-data verification. The main workflows begin with a platform client calling a mock service: the device service supplies simulated biometric captures; ABIS accepts insert or identify requests and returns configured or stored results; MV exposes configurable decisions and expectations. The SDK offers biometric quality, conversion, extraction, segmentation, and matching operations. The tree and sampled code support the ABIS controller-to-service flow and several module capabilities, but not all internal wiring; uncertain links are omitted. SoftHSM runtime sources are not present in the supplied tree.

Main entry points: [`mock-abis/src/main/java/io/mosip/proxy/abis/service/impl/ProxyAbisInsertServiceImpl.java`](https://github.com/mosip/mosip-mock-services/blob/master/mock-abis/src/main/java/io/mosip/proxy/abis/service/impl/ProxyAbisInsertServiceImpl.java) (Insert Identify), [`mock-abis/src/main/java/io/mosip/proxy/abis/controller/ProxyAbisController.java`](https://github.com/mosip/mosip-mock-services/blob/master/mock-abis/src/main/java/io/mosip/proxy/abis/controller/ProxyAbisController.java) (ABIS API), [`mock-mv/src/main/java/io/mosip/mock/mv/controller/MockMvConfigController.java`](https://github.com/mosip/mosip-mock-services/blob/master/mock-mv/src/main/java/io/mosip/mock/mv/controller/MockMvConfigController.java) (MV Config API), [`mock-abis/src/main/java/io/mosip/proxy/abis/listener/QueueListener.java`](https://github.com/mosip/mosip-mock-services/blob/master/mock-abis/src/main/java/io/mosip/proxy/abis/listener/QueueListener.java) (Queue Listener)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_mds["Device Service"]
  node_sbi["SBI Service"]
  node_device_helpers["Capture Helpers"]
  node_device_images["Image Utilities<br/>[ImageHelper.java]"]
end

subgraph group_abis["ABIS Simulation"]
  node_abis_api["ABIS API"]
  node_abis_insert["Insert Identify"]
  node_abis_config_api["ABIS Config API"]
  node_abis_config["ABIS Configuration"]
  node_expectations["Expectation Cache"]
  node_bio_repository[("Biometric Repository")]
  node_insert_repository[("Insert Repository")]
  node_abis_listener["Queue Listener<br/>[QueueListener.java]"]
end

subgraph group_mv["Verification Simulation"]
  node_mv_config_api["MV Config API"]
  node_mv_decisions["Decision Service"]
  node_mv_expectations["MV Expectations"]
  node_mv_listener["MV Queue Listener<br/>[QueueListener.java]"]
end

subgraph group_sdk["Biometric SDK"]
  node_sdk_entry["Sample SDK<br/>[SampleSDK.java]"]
  node_sdk_quality["Quality Checks"]
  node_sdk_convert["Format Conversion"]
  node_sdk_extract["Template Extraction"]
  node_sdk_match["Biometric Matching<br/>[MatchService.java]"]
  node_sdk_segment["Biometric Segmentation"]
end

node_client(("MOSIP Client"))
node_abis_client(("ABIS Client"))
node_abis_queue["ABIS Queue"]
node_mv_client(("MOSIP MV Client"))
node_mv_queue["MV Queue"]
node_sdk_client(("SDK Consumer"))

node_client -->|"requests capture"| node_sbi
node_sbi -->|"selects helper"| node_device_helpers
node_device_helpers -->|"uses image utilities"| node_device_images
node_abis_client -->|"submits requests"| node_abis_api
node_abis_api -->|"delegates operations"| node_abis_insert
node_abis_api -->|"sends delayed response"| node_abis_listener
node_abis_insert -->|"reads expectations"| node_expectations
node_abis_insert -->|"saves insert"| node_insert_repository
node_abis_insert -->|"reads biometrics"| node_bio_repository
node_abis_config_api -->|"manages configuration"| node_abis_config
node_abis_config -->|"manages expectations"| node_expectations
node_abis_listener -->|"sends messages"| node_abis_queue
node_abis_queue -->|"delivers messages"| node_abis_listener
node_mv_client -->|"sets expectations"| node_mv_config_api
node_mv_config_api -->|"manages decisions"| node_mv_decisions
node_mv_config_api -->|"manages expectations"| node_mv_expectations
node_mv_queue -->|"delivers messages"| node_mv_listener
node_mv_client -.->|"sends validation work"| node_mv_queue
node_sdk_client -->|"calls SDK"| node_sdk_entry

click node_sbi "https://github.com/mosip/mosip-mock-services/blob/master/MockMDS/src/main/java/io/mosip/mock/sbi/service/SBIMockService.java"
click node_device_helpers "https://github.com/mosip/mosip-mock-services/tree/master/MockMDS/src/main/java/io/mosip/mock/sbi/devicehelper"
click node_device_images "https://github.com/mosip/mosip-mock-services/blob/master/MockMDS/src/main/java/io/mosip/mock/sbi/util/ImageHelper.java"
click node_abis_api "https://github.com/mosip/mosip-mock-services/blob/master/mock-abis/src/main/java/io/mosip/proxy/abis/controller/ProxyAbisController.java"
click node_abis_insert "https://github.com/mosip/mosip-mock-services/blob/master/mock-abis/src/main/java/io/mosip/proxy/abis/service/impl/ProxyAbisInsertServiceImpl.java"
click node_abis_config_api "https://github.com/mosip/mosip-mock-services/blob/master/mock-abis/src/main/java/io/mosip/proxy/abis/controller/ProxyAbisConfigController.java"
click node_abis_config "https://github.com/mosip/mosip-mock-services/blob/master/mock-abis/src/main/java/io/mosip/proxy/abis/service/impl/ProxyAbisConfigServiceImpl.java"
click node_expectations "https://github.com/mosip/mosip-mock-services/blob/master/mock-abis/src/main/java/io/mosip/proxy/abis/service/impl/ExpectationCacheImpl.java"
click node_bio_repository "https://github.com/mosip/mosip-mock-services/blob/master/mock-abis/src/main/java/io/mosip/proxy/abis/dao/ProxyAbisBioDataRepository.java"
click node_insert_repository "https://github.com/mosip/mosip-mock-services/blob/master/mock-abis/src/main/java/io/mosip/proxy/abis/dao/ProxyAbisInsertRepository.java"
click node_abis_listener "https://github.com/mosip/mosip-mock-services/blob/master/mock-abis/src/main/java/io/mosip/proxy/abis/listener/QueueListener.java"
click node_mv_config_api "https://github.com/mosip/mosip-mock-services/blob/master/mock-mv/src/main/java/io/mosip/mock/mv/controller/MockMvConfigController.java"
click node_mv_decisions "https://github.com/mosip/mosip-mock-services/blob/master/mock-mv/src/main/java/io/mosip/mock/mv/service/impl/MockMvDecisionServiceImpl.java"
click node_mv_expectations "https://github.com/mosip/mosip-mock-services/blob/master/mock-mv/src/main/java/io/mosip/mock/mv/service/impl/ExpectationCacheImpl.java"
click node_mv_listener "https://github.com/mosip/mosip-mock-services/blob/master/mock-mv/src/main/java/io/mosip/mock/mv/queue/QueueListener.java"
click node_sdk_entry "https://github.com/mosip/mosip-mock-services/blob/master/mock-sdk/src/main/java/io/mosip/mock/sdk/impl/SampleSDK.java"
click node_sdk_quality "https://github.com/mosip/mosip-mock-services/blob/master/mock-sdk/src/main/java/io/mosip/mock/sdk/service/CheckQualityService.java"
click node_sdk_convert "https://github.com/mosip/mosip-mock-services/blob/master/mock-sdk/src/main/java/io/mosip/mock/sdk/service/ConvertFormatService.java"
click node_sdk_extract "https://github.com/mosip/mosip-mock-services/blob/master/mock-sdk/src/main/java/io/mosip/mock/sdk/service/ExtractTemplateService.java"
click node_sdk_match "https://github.com/mosip/mosip-mock-services/blob/master/mock-sdk/src/main/java/io/mosip/mock/sdk/service/MatchService.java"
click node_sdk_segment "https://github.com/mosip/mosip-mock-services/blob/master/mock-sdk/src/main/java/io/mosip/mock/sdk/service/SegmentService.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_sbi,node_device_helpers,node_device_images,node_client,node_abis_client,node_mv_client toneBlue
class node_abis_api,node_abis_insert,node_abis_config_api,node_abis_config,node_expectations,node_bio_repository,node_insert_repository,node_abis_listener toneAmber
class node_mv_config_api,node_mv_decisions,node_mv_expectations,node_mv_listener toneMint
class node_sdk_entry,node_sdk_quality,node_sdk_convert,node_sdk_extract,node_sdk_match,node_sdk_segment,node_abis_queue,node_mv_queue toneRose
class node_sdk_client toneIndigo
```

## Components

### Device Service

- [SBI Service](https://github.com/mosip/mosip-mock-services/blob/master/MockMDS/src/main/java/io/mosip/mock/sbi/service/SBIMockService.java): `MockMDS/src/main/java/io/mosip/mock/sbi/service/SBIMockService.java`
- [Capture Helpers](https://github.com/mosip/mosip-mock-services/tree/master/MockMDS/src/main/java/io/mosip/mock/sbi/devicehelper): `MockMDS/src/main/java/io/mosip/mock/sbi/devicehelper`
- [Image Utilities](https://github.com/mosip/mosip-mock-services/blob/master/MockMDS/src/main/java/io/mosip/mock/sbi/util/ImageHelper.java): `MockMDS/src/main/java/io/mosip/mock/sbi/util/ImageHelper.java`

### ABIS Simulation

- [ABIS API](https://github.com/mosip/mosip-mock-services/blob/master/mock-abis/src/main/java/io/mosip/proxy/abis/controller/ProxyAbisController.java): `mock-abis/src/main/java/io/mosip/proxy/abis/controller/ProxyAbisController.java`
- [Insert Identify](https://github.com/mosip/mosip-mock-services/blob/master/mock-abis/src/main/java/io/mosip/proxy/abis/service/impl/ProxyAbisInsertServiceImpl.java): `mock-abis/src/main/java/io/mosip/proxy/abis/service/impl/ProxyAbisInsertServiceImpl.java`
- [ABIS Config API](https://github.com/mosip/mosip-mock-services/blob/master/mock-abis/src/main/java/io/mosip/proxy/abis/controller/ProxyAbisConfigController.java): `mock-abis/src/main/java/io/mosip/proxy/abis/controller/ProxyAbisConfigController.java`
- [ABIS Configuration](https://github.com/mosip/mosip-mock-services/blob/master/mock-abis/src/main/java/io/mosip/proxy/abis/service/impl/ProxyAbisConfigServiceImpl.java): `mock-abis/src/main/java/io/mosip/proxy/abis/service/impl/ProxyAbisConfigServiceImpl.java`
- [Expectation Cache](https://github.com/mosip/mosip-mock-services/blob/master/mock-abis/src/main/java/io/mosip/proxy/abis/service/impl/ExpectationCacheImpl.java): `mock-abis/src/main/java/io/mosip/proxy/abis/service/impl/ExpectationCacheImpl.java`
- [Biometric Repository](https://github.com/mosip/mosip-mock-services/blob/master/mock-abis/src/main/java/io/mosip/proxy/abis/dao/ProxyAbisBioDataRepository.java): `mock-abis/src/main/java/io/mosip/proxy/abis/dao/ProxyAbisBioDataRepository.java`
- [Insert Repository](https://github.com/mosip/mosip-mock-services/blob/master/mock-abis/src/main/java/io/mosip/proxy/abis/dao/ProxyAbisInsertRepository.java): `mock-abis/src/main/java/io/mosip/proxy/abis/dao/ProxyAbisInsertRepository.java`
- [Queue Listener](https://github.com/mosip/mosip-mock-services/blob/master/mock-abis/src/main/java/io/mosip/proxy/abis/listener/QueueListener.java): `mock-abis/src/main/java/io/mosip/proxy/abis/listener/QueueListener.java`

### Verification Simulation

- [MV Config API](https://github.com/mosip/mosip-mock-services/blob/master/mock-mv/src/main/java/io/mosip/mock/mv/controller/MockMvConfigController.java): `mock-mv/src/main/java/io/mosip/mock/mv/controller/MockMvConfigController.java`
- [Decision Service](https://github.com/mosip/mosip-mock-services/blob/master/mock-mv/src/main/java/io/mosip/mock/mv/service/impl/MockMvDecisionServiceImpl.java): `mock-mv/src/main/java/io/mosip/mock/mv/service/impl/MockMvDecisionServiceImpl.java`
- [MV Expectations](https://github.com/mosip/mosip-mock-services/blob/master/mock-mv/src/main/java/io/mosip/mock/mv/service/impl/ExpectationCacheImpl.java): `mock-mv/src/main/java/io/mosip/mock/mv/service/impl/ExpectationCacheImpl.java`
- [MV Queue Listener](https://github.com/mosip/mosip-mock-services/blob/master/mock-mv/src/main/java/io/mosip/mock/mv/queue/QueueListener.java): `mock-mv/src/main/java/io/mosip/mock/mv/queue/QueueListener.java`

### Biometric SDK

- [Sample SDK](https://github.com/mosip/mosip-mock-services/blob/master/mock-sdk/src/main/java/io/mosip/mock/sdk/impl/SampleSDK.java): `mock-sdk/src/main/java/io/mosip/mock/sdk/impl/SampleSDK.java`
- [Quality Checks](https://github.com/mosip/mosip-mock-services/blob/master/mock-sdk/src/main/java/io/mosip/mock/sdk/service/CheckQualityService.java): `mock-sdk/src/main/java/io/mosip/mock/sdk/service/CheckQualityService.java`
- [Format Conversion](https://github.com/mosip/mosip-mock-services/blob/master/mock-sdk/src/main/java/io/mosip/mock/sdk/service/ConvertFormatService.java): `mock-sdk/src/main/java/io/mosip/mock/sdk/service/ConvertFormatService.java`
- [Template Extraction](https://github.com/mosip/mosip-mock-services/blob/master/mock-sdk/src/main/java/io/mosip/mock/sdk/service/ExtractTemplateService.java): `mock-sdk/src/main/java/io/mosip/mock/sdk/service/ExtractTemplateService.java`
- [Biometric Matching](https://github.com/mosip/mosip-mock-services/blob/master/mock-sdk/src/main/java/io/mosip/mock/sdk/service/MatchService.java): `mock-sdk/src/main/java/io/mosip/mock/sdk/service/MatchService.java`
- [Biometric Segmentation](https://github.com/mosip/mosip-mock-services/blob/master/mock-sdk/src/main/java/io/mosip/mock/sdk/service/SegmentService.java): `mock-sdk/src/main/java/io/mosip/mock/sdk/service/SegmentService.java`

### Other components

- **MOSIP Client**
- **ABIS Client**
- **ABIS Queue**
- **MOSIP MV Client**
- **MV Queue**
- **SDK Consumer**

## Connections

- MOSIP Client → SBI Service: requests capture
- SBI Service → Capture Helpers: selects helper
- Capture Helpers → Image Utilities: uses image utilities
- ABIS Client → ABIS API: submits requests
- ABIS API → Insert Identify: delegates operations
- ABIS API → Queue Listener: sends delayed response
- Insert Identify → Expectation Cache: reads expectations
- Insert Identify → Insert Repository: saves insert
- Insert Identify → Biometric Repository: reads biometrics
- ABIS Config API → ABIS Configuration: manages configuration
- ABIS Configuration → Expectation Cache: manages expectations
- Queue Listener → ABIS Queue: sends messages
- ABIS Queue → Queue Listener: delivers messages
- MOSIP MV Client → MV Config API: sets expectations
- MV Config API → Decision Service: manages decisions
- MV Config API → MV Expectations: manages expectations
- MV Queue → MV Queue Listener: delivers messages
- MOSIP MV Client → MV Queue: sends validation work
- SDK Consumer → Sample SDK: calls SDK
