Skip to content

Commit 31e7482

Browse files
Merge pull request #40 from ministryofjustice/feature/update-readme
2 parents e95dee2 + ff16029 commit 31e7482

2 files changed

Lines changed: 37 additions & 4 deletions

File tree

README.md

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,40 @@
22

33
HMPPS 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
611
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.
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
1029
Any 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
2447
The 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` |

src/Aspire/Aspire.AppHost/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
var rabbit = builder
2828
.AddRabbitMQ("RabbitMQ", password: rabbitPassword)
29-
.WithManagementPlugin();
29+
.WithManagementPlugin(port: 15672);
3030

3131
// MinIO (s3 emulation)
3232
var minio = builder.AddMinioContainer("minio", rootPassword: minioPassword)

0 commit comments

Comments
 (0)