5/6
SharePoint slowed by security upgrade
14,208
Across 6 Kafka topics
0
Failed extractions route to manual review
182ms
Kong gateway, all API paradigms
Integration adapter matrix
Adapter-per-source-system with backoff, circuit breaker and DLQ
| External system | Protocol | Sync pattern | Latency | State |
|---|---|---|---|---|
| Snowflake (AWS) | REST / JDBC | CDC + polling | 1.2s | Healthy |
| SharePoint | Graph API | Read-mostly polling | 4.8s | Degraded |
| Power BI | Push API | Event-driven | 0.6s | Healthy |
| Power Apps | REST | Bi-directional | 0.9s | Healthy |
| CMMS / Facilities | REST / CSV | Sync every 15 min | 2.4s | Healthy |
| NHS / ICB ticketing | Webhook | Event-driven | 1.1s | Healthy |
Event stream
Kafka topics consumed by the audit service
- obligations.status_changes08:42:41
OBL-4610 → completed by Colette Nimmo
- documents.nlp_extracted08:41:12
DOC-9101 · 34 clauses, 6 key dates
- agent.actions_proposed08:39:55
ACT-2201 escalation proposed (0.91)
- documents.ocr_completed08:37:04
DOC-9127 confidence 71.8% → review queue
- realestate.maintenance_events08:31:47
Work order WO-8812 raised · Benchill HC
- obligations.expiry_alerts08:30:02
255 obligations due within 30 days
Service topology
gRPC for synchronous calls, Kafka for state propagation
| Service | Interface | Kafka topic | Target latency |
|---|---|---|---|
| Obligation Service | gRPC + Kafka | obligations.status_changes | <100ms p99 |
| Document Service (Vault) | REST + Kafka | documents.uploaded | <200ms p99 |
| OCR Ingestion Service | REST (async) | documents.ocr_completed | seconds–minutes |
| NLP Extraction Service | gRPC + Kafka | documents.nlp_extracted | seconds |
| Agent Orchestration | REST + Kafka | agent.actions_proposed | <500ms p99 |
| Property/Facilities Service | gRPC + Kafka | realestate.maintenance_events | <200ms p99 |
| Alert/Escalation Service | Kafka consumer | — | near real-time |
| Audit Service | Kafka consumer | — | guaranteed delivery |
Interface governance
Stack-agnostic engineering conventions
Versioning
Path-based majors, 12-month sunset window
Pagination
Cursor-based, RSQL/FIQL filters, whitelisted sort keys
Idempotency
Idempotency-Key required on POST/PATCH, 24h retention
Errors
RFC 7807 problem details with correlation ID
Webhooks
HMAC-SHA256, retries 1m/5m/30m/2h/12h then DLQ
Schemas
Central registry, contract tests before merge