Skip to content

Commit 9bd9528

Browse files
authored
Update readme (#68)
* Updates README to more accurately reflect architecture * Updates Entra app registration instructions Clarifies that Implicit grant and hybrid flows do not need to be configured during Entra app registration.
1 parent b98aa28 commit 9bd9528

2 files changed

Lines changed: 16 additions & 10 deletions

File tree

README.md

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,24 @@ HMPPS CFO DMS
1111
HMPPS Creating Future Opportunities (CFO) - Data Management System (DMS). It is intended for internal use only and is used to process PNOMIS and NDelius offender data to supply CATS (Case Assessment and Tracking System - also used by HMPPS CFO) with accurate offender movements and updates.
1212

1313
## Architecture
14-
CFO DMS is built as a microservices architecture using .NET Aspire for orchestration. Data flows through the following pipeline:
14+
CFO DMS is built as a distributed microservices architecture. Data flows through the following pipeline:
1515

16-
**File Ingestion → Parsing/Cleaning → Staging → Import → Running Picture → Blocking/Matching → Clustering**
16+
**File Ingestion → Parsing/Cleaning → Staging → Import → Running Picture → Blocking/Matching → Clustering → Data Consumption**
1717

18-
1. **FileSync** monitors MinIO/S3/FileSystem storage and syncs incoming files
19-
2. **Parsers/Cleaners** (Offloc, Delius) transform raw PNOMIS and NDelius files into structured records in staging databases
20-
3. **Import** validates and migrates data from staging to running picture databases
21-
4. **Matching Engine** identifies and links related offender records across systems
22-
5. **Cluster database** maintains grouped offender data
23-
6. **API** exposes the processed data via REST endpoints for downstream consumers (e.g., CATS)
24-
7. **Visualiser** provides a web UI for exploring and visualising relationships between offender data
18+
### Pipeline Applications
19+
1. **File Ingestion** - [**FileSync**](src/FileSync) monitors MinIO/S3/FileSystem storage and syncs incoming files
20+
2. **Parsing/Cleaning** - [**Offloc.Parser**](src/Offloc.Parser), [**Offloc.Cleaner**](src/Offloc.Cleaner), [**Delius.Parser**](src/Delius.Parser) transform raw p-NOMIS and nDelius files into structured records
21+
3. **Staging/Import/Running Picture** - [**Import**](src/Import) validates and migrates data from staging to running picture databases
22+
4. **Blocking/Matching** - [**Blocking**](src/Blocking) generates candidate record pairs, [**Matching.Engine**](src/Matching.Engine) identifies and links related offender records across systems
23+
5. **Clustering** - [**Matching.Engine**](src/Matching.Engine) groups related records into clusters representing unique individuals
24+
6. **Data Consumption** - [**API**](src/API) exposes the processed data via REST endpoints for downstream consumers (e.g., CATS), [**Visualiser**](src/Visualiser) provides a web UI for exploring and visualising relationships between offender data
2525

26-
Supporting services include **DbInteractions** (complex database operations), **Blocking** (matching rules), **Cleanup** (data maintenance), and **Logging**. Services communicate asynchronously via RabbitMQ message queues.
26+
### Supporting Applications
27+
- [**Cleanup**](src/Cleanup) - Performs data maintenance tasks
28+
- [**DbInteractions**](src/DbInteractions) handles complex database operations
29+
- [**Logging**](src/Logging) - Centralised logging service
30+
31+
Services communicate asynchronously via RabbitMQ message queues. See the Message Flow Diagram below for detailed service interactions.
2732

2833
# Development Setup and Execution Guide
2934

src/Visualiser/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
1. New app registration in Entra
44
- Supported account types: Single tenant
55
- Redirect URI: Platform = web, URI = https://localhost:7123/signin-oidc
6+
- NOTE: You do not need to configure Implicit grant and hybrid flows
67
2. Register permissions under "API Permissions" section. Configure scopes:
78
- `email`
89
- `openid`

0 commit comments

Comments
 (0)