---
module: platform.service-ownership
title: Service Ownership & Where Data Lives
tab: Overview
order: 20
audience: dev
---

> **DRAFT · internal** (2026-07-01). Verify service/endpoint details against the code.

## One rule
**Every endpoint and table belongs to exactly ONE service.** Never add an endpoint or write to
another service's domain. If a view needs data from another domain, it consumes a **Kafka mirror**
or calls that service's API — it does not reach into the other DB.

## Domains (owner → what it owns)
- **incident** — incidents (create/resolve/auto-close), journal-events ingest path.
- **devices** — everything device-related: ATM records, properties, config changes, and the
  **device-scoped fleet-task record store** (`/api/atms/{id}/fleet-tasks`). Backend extracted from
  incident (~2026-06-18); the frontend still calls `api.bcos.*/incident/...` (legacy routing that
  nginx points at the devices backend).
- **fleet** — fleet task **execution** only (download/install/hotfix/software/capture). Publishes
  results to Kafka; keeps no long-term history (see [[platform.data-architecture]]).
- **mgmt / msp** — institutions, internal users, allocations, `app_modules`.
- **journal** — journal file storage + parsing (per-institution workers).
- **auth** — customer auth + MFA; issues the shared JWT.
- Others: **reports, analytics, recon, messaging, ai(adoons), agent-proxy, vault, claims, aria**.

## The `device_summary` mirror (why "wrong data in app X but not Y")
Device state is **mirrored into a local `device_summary` table in incident / fleet / reports /
recon** via the Kafka topic `hiveops.device.events`. Devices must **publish on every change** or
the mirrors go stale (there is no reconciler). So *"the wrong institution shows in fleet but not
devices"* = a **stale mirror**, not a bug in fleet. Fix at the source (devices publishes).

## Reflex to build
When data looks wrong or missing in one app but not another: suspect a **stale/again-missing
mirror or the wrong record store**, not the app you're looking at. Trace to the **owner**.
