How navikt/veilarbdialog works
Veilarbdialog is a backend for employment-related conversations, exposing REST services to retrieve, create, and change dialogs. The central workflow handles a message by finding or creating its dialog thread, persisting the message, updating read/waiting status, and publishing status to Kafka. Separate capabilities cover internal dialog access, escalation notices, user notifications, follow-up periods, and integrations. Connections reflect the README or shown source/index references; several endpoints and event consumers are represented from the tree, so their unverified wiring is omitted or dashed.
Main entry points: DialogDataService.java Dialog service · EskaleringsvarselService.kt Escalation service · MinsideVarselService.kt User notifications · DialogStatusService.java Status updates
Components 23
Application APIs
- Dialog REST
src/main/java/no/nav/fo/veilarbdialog/rest/DialogRessurs.java - Dialog GraphQL
src/main/java/no/nav/fo/veilarbdialog/graphql/DialogGraphqlController.java - Internal API
src/main/java/no/nav/fo/veilarbdialog/internapi/InternApiService.java
Dialog lifecycle
- Dialog service
src/main/java/no/nav/fo/veilarbdialog/service/DialogDataService.java - Dialog state
src/main/java/no/nav/fo/veilarbdialog/domain/DialogData.java - Dialog storage
src/main/java/no/nav/fo/veilarbdialog/db/dao/DialogDAO.java - Status updates
src/main/java/no/nav/fo/veilarbdialog/service/DialogStatusService.java
Alerts and escalation
- Escalation service
src/main/kotlin/no/nav/fo/veilarbdialog/eskaleringsvarsel/EskaleringsvarselService.kt - Escalation API
src/main/java/no/nav/fo/veilarbdialog/eskaleringsvarsel/EskaleringsvarselController.java - Escalation records
src/main/java/no/nav/fo/veilarbdialog/eskaleringsvarsel/EskaleringsvarselRepository.java - User notifications
src/main/kotlin/no/nav/fo/veilarbdialog/minsidevarsler/MinsideVarselService.kt - Notification store
src/main/kotlin/no/nav/fo/veilarbdialog/minsidevarsler/dto/MinsideVarselDao.kt
Events and integrations
- Follow-up periods
src/main/java/no/nav/fo/veilarbdialog/oppfolging/siste_periode/SistePeriodeService.java - Follow-up client
src/main/java/no/nav/fo/veilarbdialog/oppfolging/v2/OppfolgingV2Client.java - KVP events
- Period events
src/main/java/no/nav/fo/veilarbdialog/oppfolging/siste_periode/OppfolgingsperiodeConsumer.java - Oversikten outbox
src/main/kotlin/no/nav/fo/veilarbdialog/oversiktenVaas/OversiktenService.kt - Metrics export
src/main/kotlin/no/nav/fo/veilarbdialog/eventsLogger/BigQueryClient.kt - Data warehouse events
src/main/java/no/nav/fo/veilarbdialog/db/dao/DataVarehusDAO.java
Other components
- User or adviser
- Kafka
- Relational database
- Google BigQuery
Connections 29
- User or adviser → Dialog REST: uses
- User or adviser → Dialog GraphQL: uses
- Dialog REST → Dialog service: delegates to
- Dialog GraphQL → Dialog service: delegates to
src/main/java/no/nav/fo/veilarbdialog/graphql/DialogGraphqlController.java - Internal API → Dialog storage: queries
src/main/java/no/nav/fo/veilarbdialog/internapi/InternApiService.java - Dialog service → Dialog storage: reads and writes
src/main/java/no/nav/fo/veilarbdialog/service/DialogDataService.java - Dialog service → Status updates: updates status
src/main/java/no/nav/fo/veilarbdialog/service/DialogDataService.java - Dialog service → User notifications: requests notifications
src/main/java/no/nav/fo/veilarbdialog/service/DialogDataService.java - Dialog service → Dialog state: uses state
src/main/java/no/nav/fo/veilarbdialog/service/DialogDataService.java - Status updates → Dialog storage: reloads dialog
src/main/java/no/nav/fo/veilarbdialog/service/DialogStatusService.java - Status updates → Data warehouse events: records events
src/main/java/no/nav/fo/veilarbdialog/service/DialogStatusService.java - Status updates → Relational database: updates status
- Escalation API → Escalation service: delegates to
src/main/java/no/nav/fo/veilarbdialog/eskaleringsvarsel/EskaleringsvarselController.java - Escalation service → Dialog service: creates dialog
src/main/kotlin/no/nav/fo/veilarbdialog/eskaleringsvarsel/EskaleringsvarselService.kt - Escalation service → User notifications: queues notice
src/main/kotlin/no/nav/fo/veilarbdialog/eskaleringsvarsel/EskaleringsvarselService.kt - Escalation service → Escalation records: stores escalation
src/main/kotlin/no/nav/fo/veilarbdialog/eskaleringsvarsel/EskaleringsvarselService.kt - Escalation service → Oversikten outbox: queues updates
src/main/kotlin/no/nav/fo/veilarbdialog/eskaleringsvarsel/EskaleringsvarselService.kt - Escalation service → Metrics export: logs events
src/main/kotlin/no/nav/fo/veilarbdialog/eskaleringsvarsel/EskaleringsvarselService.kt - User notifications → Notification store: stores notices
src/main/kotlin/no/nav/fo/veilarbdialog/minsidevarsler/MinsideVarselService.kt - User notifications → Follow-up client: checks eligibility
src/main/kotlin/no/nav/fo/veilarbdialog/minsidevarsler/MinsideVarselService.kt - User notifications → Kafka: publishes notice events
src/main/kotlin/no/nav/fo/veilarbdialog/minsidevarsler/MinsideVarselService.kt - Follow-up periods → Follow-up client: fetches fallback
src/main/java/no/nav/fo/veilarbdialog/oppfolging/siste_periode/SistePeriodeService.java - Follow-up periods → Relational database: reads periods
- KVP events → Kafka: consumes events
- Period events → Kafka: consumes events
- Oversikten outbox → Kafka: publishes messages
src/main/kotlin/no/nav/fo/veilarbdialog/oversiktenVaas/OversiktenService.kt - Oversikten outbox → Relational database: stores outbox
- Metrics export → Google BigQuery: inserts metrics
src/main/kotlin/no/nav/fo/veilarbdialog/eventsLogger/BigQueryClient.kt - Data warehouse events → Relational database: writes events