Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
e5b23c3
MOSIP-36413 Removed childauth filter
kameshsr Oct 9, 2024
da386d7
MOSIP-36413 Removed childauth filter
kameshsr Oct 9, 2024
6359c1c
MOSIP-36413 Updated readme
kameshsr Oct 9, 2024
de69516
MOSIP-36413 Updated readme
kameshsr Oct 9, 2024
76e772a
Merge pull request #1020 from kameshsr/MOSIP-36413-1
ckm007 Oct 9, 2024
1b45e6f
[DSD-6404] updated pom version to 1.3.0-SNAPSHOT (#1021)
ckm007 Oct 9, 2024
abb4d37
MOSIP-37357 Corrected readme (#1025) (#1028)
kameshsr Nov 13, 2024
1d94bde
Changing regex change soppout all the version (#1032)
Khuddusshariff0022 Dec 13, 2024
5daea56
[DSD-6825] platform 1.2.1.0-beta-1 release (#1030)
ckm007 Dec 13, 2024
105bab7
[DSD-6825] platform 1.2.1.0-beta-1 release (#1035)
ckm007 Dec 13, 2024
75aaece
[DSD-6825] platform 1.2.1.0-beta-1 release (#1036)
VSIVAKALYAN Dec 13, 2024
2e5922e
Updated Pom version and Chart version for post-release changes (#1037)
ckm007 Dec 16, 2024
71adc8c
MOSIP-38954 Changed beta version to SNAPSHOT
kameshsr Jan 13, 2025
a1ee1d9
MOSIP-38954 Used beta version for released dependencies
kameshsr Jan 13, 2025
e9f430d
MOSIP-38954 Used beta version for pre-processor dependency
kameshsr Jan 13, 2025
2501d66
Merge pull request #1038 from kameshsr/MOSIP-38954
ckm007 Jan 16, 2025
5e967ad
MOSIP-37024 Fixed notification issue (#1027)
kameshsr Jan 21, 2025
397c128
MOSIP-38954 corrected pom (#1040)
kameshsr Feb 4, 2025
5b8406f
DSD-7605 Added url and description in pom (#1046)
kameshsr Mar 12, 2025
01b6c6f
[DSD-7605] Release v1.3.0-beta.1 for Platform (#1045)
ckm007 Mar 12, 2025
2a35fa7
DSD-7605 Release v1.3.0-beta.1 for Platform (#1049)
kameshsr Mar 12, 2025
e62fa44
Updated Pom version and Chart version for post-release changes (#1048)
Prafulrakhade Mar 13, 2025
39d5f80
[MOSIP-40012] Corrected ZGC (#1044)
GOKULRAJ136 Mar 13, 2025
627b496
MOSIP-40715 change version to snaphsot (#1050)
kameshsr Mar 17, 2025
c226436
[MOSIP-41879] Adding password and version update
Khuddusshariff0022 Jun 18, 2025
d8c7833
Merge pull request #1052 from Khuddusshariff0022/release-1.3.x-MOSIP-…
ckm007 Jul 3, 2025
580b33b
[MOSIP-42464] [MOSIP-41674] central sonatype migration changes
Prafulrakhade Aug 5, 2025
0feaa99
Merge pull request #1060 from Prafulrakhade/release-1.3.x-MOSIP-42464
ckm007 Aug 7, 2025
15be2f7
[MOSIP-43017] Added prereg-booking helm chart
Prafulrakhade Sep 30, 2025
24054dd
Merge pull request #1066 from Prafulrakhade/release-1.3.x-MOSIP-43017
ckm007 Sep 30, 2025
07f92ba
[MOSIP-43017] Added chart-lint-publish.yml file
Prafulrakhade Sep 30, 2025
a74837d
Merge pull request #1070 from Prafulrakhade/release-1.3.x-push
ckm007 Oct 6, 2025
cfd4de3
MOSIP-42419 (#1055)
dhanendra06 Nov 13, 2025
6cc340d
[MOSIP-43613] DateUtils Changes (#1073)
GOKULRAJ136 Nov 13, 2025
00cc6f1
cherry-pick the helm changes to release-1.3.x
ckm007 Nov 16, 2025
0c76e49
updated helm chart version
dhanendra06 Nov 16, 2025
3f3346b
update tag version
dhanendra06 Nov 16, 2025
310bf1e
Merge pull request #1075 from dhanendra06/mosip08
ckm007 Nov 16, 2025
d521866
fix cpu & memory
kaledOu Nov 28, 2025
89f3785
Merge pull request #1081 from kaledOu/release-1.3.x-helm
ckm007 Nov 29, 2025
efdd346
[DSD-9363] deleted unused folders. (#1080)
mahammedtaheer Dec 1, 2025
094cd54
[MOSIP-44006] : Sonar coverage (#1085) (#1087)
chetankh239 Dec 12, 2025
fecd694
MOSIP-37256 corrected readme
kameshsr Dec 12, 2025
27e509d
MOSIP-37256 corrected readme
kameshsr Dec 16, 2025
021d5f5
MOSIP-37256 corrected readme
kameshsr Dec 16, 2025
9a64b6d
MOSIP-37256 Corrected link
kameshsr Dec 17, 2025
24b481c
MOSIP-37256 Corrected link
kameshsr Dec 17, 2025
b287324
MOSIP-37256 Corrected link
kameshsr Dec 17, 2025
3b64d96
MOSIP-37256 Corrected link
kameshsr Dec 17, 2025
60aa8f9
MOSIP-37256 corrected readme
kameshsr Dec 17, 2025
d7c53e9
MOSIP-37256 corrected readme
kameshsr Dec 17, 2025
552dd1e
MOSIP-37256 Corrected readme
kameshsr Dec 17, 2025
2f10e93
MOSIP-37256 Corrected readme
kameshsr Dec 17, 2025
e0a6eaf
MOSIP-37256 corrected readme
kameshsr Dec 18, 2025
2d1443c
Merge pull request #1088 from kameshsr/MOSIP-37256
ckm007 Dec 18, 2025
078e9bb
Updated chart versions, image and tag for release changes (#1089)
ckm007 Dec 22, 2025
dfa6472
Updated Pom versions for release changes (#1090)
ckm007 Dec 22, 2025
ae2aaa0
MOSIP-44198: Fixed Redistemplate issue under the high load pool is ex…
dhanendra06 Apr 2, 2026
418e7db
[MOSIP-44198] Changed the pom version to 1.3.1-SNAPSHOT (#1093)
ashok-ksharma Apr 16, 2026
e9bd75a
Github issue-1095 corrected helm version
kameshsr May 12, 2026
34b4d82
Merge pull request #1096 from kameshsr/release-1.3.x-GithubIssue-1095
ckm007 May 13, 2026
6b83c7c
Github issue-1095 Update memory request for prereg-booking
kameshsr May 13, 2026
6851e0f
Merge pull request #1097 from kameshsr/patch-3
ckm007 May 13, 2026
0a6ca1c
[DSD-10347] 1.3.1 Packet Processing Performance Tuning release (#1104)
ckm007 May 31, 2026
0889881
Merge branch 'branch-1.3.1-tag' into develop
ashok-ksharma Jun 3, 2026
1a61eb7
Resolves #1830 Merged the 1.3.1-rc.1 release in develop branch.
ashok-ksharma Jun 3, 2026
a332b68
Resolves #1830 Merged the 1.3.1-rc.1 release in develop branch.
ashok-ksharma Jun 3, 2026
9056d87
Resolves #1830 Merged the 1.3.1-rc.1 release in develop branch.
ashok-ksharma Jun 3, 2026
aa87344
Resolves #1830 Merged the 1.3.1-rc.1 release in develop branch.
ashok-ksharma Jun 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions .github/workflows/push-trigger.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,15 +80,13 @@ jobs:
- SERVICE_LOCATION: 'pre-registration-booking-service'
SERVICE_NAME: 'pre-registration-booking-service'
BUILD_ARTIFACT: 'pre-registration-booking-service'
SQUASH_LAYERS: '10'
fail-fast: false
name: ${{ matrix.SERVICE_NAME }}
uses: mosip/kattu/.github/workflows/docker-build.yml@master-java21
with:
SERVICE_LOCATION: ${{ matrix.SERVICE_LOCATION }}
SERVICE_NAME: ${{ matrix.SERVICE_NAME }}
BUILD_ARTIFACT: ${{ matrix.BUILD_ARTIFACT }}
SQUASH_LAYERS: ${{ matrix.SQUASH_LAYERS }}
secrets:
DEV_NAMESPACE_DOCKER_HUB: ${{ secrets.DEV_NAMESPACE_DOCKER_HUB }}
ACTOR_DOCKER_HUB: ${{ secrets.ACTOR_DOCKER_HUB }}
Expand Down Expand Up @@ -144,15 +142,13 @@ jobs:
- SERVICE_LOCATION: 'registration-processor/registration-processor-external-stage'
SERVICE_NAME: 'registration-processor-external-stage'
BUILD_ARTIFACT: 'registration-processor-external-stage'
SQUASH_LAYERS: '11'
fail-fast: false
name: ${{ matrix.SERVICE_NAME }}
uses: mosip/kattu/.github/workflows/docker-build.yml@master-java21
with:
SERVICE_LOCATION: ${{ matrix.SERVICE_LOCATION }}
SERVICE_NAME: ${{ matrix.SERVICE_NAME }}
BUILD_ARTIFACT: ${{ matrix.BUILD_ARTIFACT }}
SQUASH_LAYERS: ${{ matrix.SQUASH_LAYERS }}
secrets:
DEV_NAMESPACE_DOCKER_HUB: ${{ secrets.DEV_NAMESPACE_DOCKER_HUB }}
ACTOR_DOCKER_HUB: ${{ secrets.ACTOR_DOCKER_HUB }}
Expand All @@ -178,15 +174,13 @@ jobs:
- SERVICE_LOCATION: 'registration-processor/registration-processor-external-integration-service'
SERVICE_NAME: 'registration-processor-external-integration-service'
BUILD_ARTIFACT: 'registration-processor-external-integration-service'
SQUASH_LAYERS: '12'
fail-fast: false
name: ${{ matrix.SERVICE_NAME }}
uses: mosip/kattu/.github/workflows/docker-build.yml@master-java21
with:
SERVICE_LOCATION: ${{ matrix.SERVICE_LOCATION }}
SERVICE_NAME: ${{ matrix.SERVICE_NAME }}
BUILD_ARTIFACT: ${{ matrix.BUILD_ARTIFACT }}
SQUASH_LAYERS: ${{ matrix.SQUASH_LAYERS }}
secrets:
DEV_NAMESPACE_DOCKER_HUB: ${{ secrets.DEV_NAMESPACE_DOCKER_HUB }}
ACTOR_DOCKER_HUB: ${{ secrets.ACTOR_DOCKER_HUB }}
Expand Down
141 changes: 141 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
# AGENTS.md

This file provides guidance to AI agents when working with code in this repository.

## Project Overview

This is the **MOSIP Reference Implementation** (`mosip-ref-impl`) — a collection of country-deployable, pluggable implementations that extend the core MOSIP (Modular Open Source Identity Platform). It does **not** contain core platform logic; instead it provides concrete, replaceable implementations of interfaces defined upstream (in `mosip/mosip-platform`, `mosip/kernel`, etc.).

Each module in this repo is an independently buildable Maven project published to Maven Central (OSSRH). Downstream deployments wire these JARs in via Spring `spring.factories` auto-configuration or explicit `pom.xml` dependencies.

## Build Commands

Each module has its own `pom.xml`. There is **no root parent pom** — build each top-level directory independently:

```bash
# Build a top-level module (skip GPG and Javadoc for local dev)
mvn clean install -Dmaven.javadoc.skip=true -Dgpg.skip=true

# Run tests for a specific module
mvn test -pl <module-path>

# Run a single test class
mvn test -Dtest=ClassName

# Run a single test method
mvn test -Dtest=ClassName#methodName

# Generate coverage report (output: target/site/jacoco/index.html)
mvn clean verify

# SonarCloud analysis
mvn clean verify -Psonar
```

**Prerequisites:** JDK 21.0.3, Maven 3.9.6. Tests use `--add-opens` JVM args (configured in each `pom.xml`) for Java 21 module compatibility.

## Module Map

```
mosip-ref-impl/
├── kernel/
│ ├── kernel-ref-idobjectvalidator/ # Reference ID Object Validator (JSON schema + masterdata validation)
│ ├── kernel-smsserviceprovider-msg91/ # SMS via MSG91 API
│ └── kernel-virusscanner-clamav/ # ClamAV virus scanner integration
├── cache-provider-hazelcast/ # Hazelcast cache provider (with health indicator)
├── cache-provider-redis/ # Redis cache provider
├── pre-registration-booking-service/ # Appointment booking service for pre-registration portal
├── registration-processor/
│ ├── registration-processor-external-stage/ # Custom Vert.x stage: delegates to EIS
│ └── registration-processor-external-integration-service/ # REST stub for the external stage to call
├── keycloak/ # Keycloak theme + SPI customizations
└── helm/prereg-booking/ # Helm chart for pre-registration booking service
```

## Architecture

### Design Pattern

Every module implements a **SPI interface** defined in `mosip/kernel` or `mosip/registration-processor-core`. The interface is resolved at runtime via Spring `spring.factories` (for kernel SPIs) or `@Autowired` injection (for Spring Boot services). To replace an implementation, swap the JAR — no core platform changes required.

### Pre-Registration Booking Service

A standalone **Spring Boot 3.x** REST service (`BookingApplication`). Key characteristics:

- Entry point: `io.mosip.preregistration.booking.BookingApplication`
- All REST endpoints are in `BookingController` under `/appointment/**`
- Role-based access uses `@PreAuthorize("hasAnyRole(@authorizedRoles.get...())")` — roles are resolved from a Spring bean, not hardcoded strings
- Depends on upstream pre-registration core library (`io.mosip.preregistration:preregistration-core`) for DTOs and utilities
- Requires `kernel-auth-adapter.jar` on the classpath at runtime to inject MOSIP auth tokens on outbound REST calls
- Requires `kernel-ref-idobjectvalidator.jar` for ID schema validation
- Config files: `application-default.properties` and `pre-registration-default.properties` from `mosip/mosip-config`, served by a running Spring Cloud Config Server

### Registration Processor External Stage + Integration Service

These two modules work as a pair to enable **custom business logic hooks** inside the registration packet processing pipeline:

1. **`registration-processor-external-stage`** — a Vert.x verticle (`ExternalStage extends MosipVerticleAPIManager`) that sits in the packet pipeline. It:
- Consumes from `EXTERNAL_STAGE_BUS_IN` Kafka topic
- Makes a synchronous POST to the `EISERVICE` API endpoint (the External Integration Service below)
- Forwards `true` (success) or `false` (failure) to update registration status
- Produces to `EXTERNAL_STAGE_BUS_OUT`
- Property prefix: `mosip.regproc.external.`

2. **`registration-processor-external-integration-service`** — a Spring Boot REST service that receives the POST from the external stage at `/registration-processor/external-integration-service/v1.0`. The bundled implementation is a **stub** that always returns `true` if the request body is non-null. Implementers replace this service with real country-specific business logic.

The stage follows the standard MOSIP stage pattern: extend `MosipVerticleAPIManager`, implement `process(MessageDTO)`, override `getPropertyPrefix()`.

### Kernel Reference Implementations

| Module | SPI Implemented | Key Config |
|--------|----------------|------------|
| `kernel-ref-idobjectvalidator` | `IdObjectValidator` | Validates identity JSON against a JSON Schema; fetches masterdata values (document types, locations, languages) from the Masterdata Service; configurable cron-based cache refresh via `mosip.idobjectvalidator.scheduler.reset-cache.cron-job-pattern` |
| `kernel-smsserviceprovider-msg91` | SMS SPI | Calls MSG91 REST API; loaded via `spring.factories` |
| `kernel-virusscanner-clamav` | `VirusScanner<Boolean, InputStream>` | Connects to a running ClamAV daemon; configured via `mosip.kernel.virus-scanner.host` and `mosip.kernel.virus-scanner.port`; loaded via `spring.factories` |

### Cache Providers

Both `cache-provider-hazelcast` and `cache-provider-redis` implement MOSIP's `PacketCacheProvider` SPI. The Hazelcast provider includes a custom Spring Boot Actuator health indicator (`HazelcastHealthIndicator`), disabled via `packetmanager.hazelcast.disable.health.check=false`.

## Runtime Configuration

All runtime properties are externalized to a **Spring Cloud Config Server** (from `mosip/mosip-config`). Each service bootstraps with `spring.cloud.config.uri` pointing to that server. Key property files:

- `application-default.properties` — platform-wide settings (DB, IAM/Keycloak URLs, service URLs)
- `pre-registration-default.properties` — pre-registration specific overrides
- `registration-processor-default.properties` — registration processor overrides

The External Stage needs `mosip.regproc.external.message.expiry-time-limit` (seconds) and Vert.x cluster config (`vertx.cluster.configuration`).

## ID Lifecycle Context

This repository implements pluggable components for MOSIP's **ID Lifecycle Management** — the full pipeline from identity enrollment to UIN issuance:

1. **Pre-Registration** — residents book appointments at registration centers; `pre-registration-booking-service` manages slot availability, booking, cancellation, and batch operations
2. **Registration Processor** — packets from Registration Client travel through a SEDA pipeline (Kafka-connected Vert.x stages) for validation, deduplication (ABIS), authentication, and UIN generation; the external stage and EIS allow country-specific hooks between standard stages
3. **ID Repository** — stores finalized identity records (not in this repo — upstream dependency)

External systems integrated by these modules: ClamAV (virus scanning), MSG91 (SMS notifications), Hazelcast/Redis (packet caching), Keycloak (IAM), ABIS (biometric deduplication via queues).

## CI/CD

GitHub Actions (`.github/workflows/push-trigger.yml`) triggers on push to `develop`, `master`, `release*`, and `MOSIP*` branches via the reusable `mosip/kattu@master-java21` workflow:

1. Maven build (Java 21)
2. Docker image build and push to Docker Hub (for `pre-registration-booking-service`, `registration-processor-external-stage`, `registration-processor-external-integration-service`)
3. Publish to Maven Central (OSSRH) — skipped on `master` and PRs
4. SonarCloud analysis (skipped on PRs) — project key per module (e.g., `mosip_kernel-ref-idobjectvalidator`, `mosip_pre-registration-booking-service`)

Kubernetes deployment uses Helm chart in `helm/prereg-booking/`.

## Testing

- Tests use JUnit 4 (vintage engine), Mockito, and Vert.x unit test utilities
- `--add-opens` JVM flags are required and are already configured in each module's `pom.xml` Surefire configuration
- The `kernel-ref-idobjectvalidator` tests use `--enable-preview`; the property name for the JaCoCo arg line is `jacocoArgLine` (not `argLine`) in that module

## API Documentation

- Pre-Registration Booking Service: https://mosip.github.io/documentation/1.2.0/pre-registration-booking-service.html
- Registration Processor External Integration Service: https://mosip.github.io/documentation/1.2.0/registration-processor-external-integration-service.html
- Product docs: https://docs.mosip.io/1.2.0/id-lifecycle-management
Loading
Loading