22
33HMPPS CFO DMS
44=============
5-
5+ [ ![ Run Tests] ( https://github.com/ministryofjustice/CFO-ExternalDataIntegrationSystem/actions/workflows/run-tests.yml/badge.svg )] ( https://github.com/ministryofjustice/CFO-ExternalDataIntegrationSystem/actions/workflows/run-tests.yml )
6+ [ ![ .NET] ( https://img.shields.io/badge/.NET-10.0-512BD4 )] ( https://dotnet.microsoft.com/ )
7+ [ ![ License] ( https://img.shields.io/badge/license-MIT-blue.svg )] ( LICENSE )
8+ [ ![ Issues] ( https://img.shields.io/github/issues/ministryofjustice/CFO-ExternalDataIntegrationSystem )] ( https://github.com/ministryofjustice/CFO-ExternalDataIntegrationSystem/issues )
9+ [ ![ Pull Requests] ( https://img.shields.io/github/issues-pr/ministryofjustice/CFO-ExternalDataIntegrationSystem )] ( https://github.com/ministryofjustice/CFO-ExternalDataIntegrationSystem/pulls )
10+ ## Overview
611HMPPS 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.
712
8- # Queries
13+ ## Architecture
14+ CFO DMS is built as a microservices architecture using .NET Aspire for orchestration. Data flows through the following pipeline:
15+
16+ ** File Ingestion → Parsing/Cleaning → Staging → Import → Running Picture → Matching → Clustering**
17+
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
25+
26+ Supporting services include ** DbInteractions** (complex database operations), ** Blocking** (matching rules), ** Cleanup** (data maintenance), and ** Logging** . Services communicate asynchronously via RabbitMQ message queues.
927
28+ ## Queries
1029Any queries, please contact andrew.grocott@justice.gov.uk or visit our slack channel. https://app.slack.com/client/T02DYEB3A/C011Z8PGWCU/details/
1130
1231# Development Setup and Execution Guide
1332
33+ ## Prerequisites
34+ - [ .NET 10 SDK] ( https://dotnet.microsoft.com/download/dotnet/10.0 )
35+ - ** Visual Studio Code users** : Install the [ C# Dev Kit extension] ( https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csdevkit )
36+
1437## Setup (development)
15- 1 . To use the Visualiser app, you must configure secret(s) for applications in the * src* directory:
38+ 1 . ** (Optional) ** To use the Visualiser app, you must configure secret(s) for applications in the * src* directory:
1639 - * Visualiser.csproj* → Manage User Secrets
1740 ``` json
1841 {
@@ -24,3 +47,13 @@ Any queries, please contact andrew.grocott@justice.gov.uk or visit our slack cha
2447The recommended way to run and debug these apps is using .NET Aspire.
2548- **Using Visual Studio Code**: open the project and press `F5`, selecting the *Default Configuration*.
2649- **Using Visual Studio or other IDEs**: From the debug configuration dropdown, select `Aspire.AppHost` and start the application.
50+
51+ ### Services and Credentials
52+ When running via Aspire, the following services are available:
53+
54+ | Service | Purpose | Access | Credentials |
55+ |---------|---------|--------|-------------|
56+ | **API** | REST endpoints for querying offender data, searches, and clustering operations | https://localhost:7013/swagger | API Key: `password` |
57+ | **MinIO** | S3-compatible file storage | *random port* (check Aspire) | Username: `minioadmin`<br>Password: `minioadmin` |
58+ | **MSSQL** | Application databases (staging, running picture, matching, cluster) | `127.0.0.1,61749` | Username: `sa`<br>Password: `P@ssword123!` |
59+ | **RabbitMQ** | Message broker for inter-service communication | http://localhost:15672 | Username: `guest`<br>Password: `guest` |
0 commit comments