02Follow the events
Every event that exists for this payment, exported from the Kafka UI. Find the first missing link, then look hard at the last event that does exist.
What you have
An export of every message on every topic whose key is this payment id, with topic, partition, offset, timestamp, headers, and payload. It is what a Kafka UI gives you when you search by key. Note what is not in the export: the dead letter topics are keyed differently, so they are not here. You will get them in the next step.
Read for absence first
Walk your chain from step one against the export. Present, present, present, absent. The first absent link is the one to investigate, and the service that should have produced it is the service whose logs you need. Do not go further down the chain: every later absence is a consequence of the first one.
Then read the last present event for cause
The last event that exists is the input to the service that failed to produce the next one. Read it against its JSON schema in the catalogue, field by field. Types, required fields, formats. Most consumers validate before they process, and a consumer that rejects on validation does not produce anything and often does not fail loudly. A field that looks fine to a human and is invalid to a validator is the most common cause of a silent stop.
Compare it also with the earlier events of the same payment: same producer, same conventions. A field that changed shape between two events from the same service is telling you something about that service.
Write it down
Two lines: the first missing link and the consumer responsible. Then the list of anomalies in the last present event, if any, with the schema rule each one breaks.
Your task
Mark each link of your chain as present or absent. Name the first absent link and the service that should have produced it. Then compare the last present event field by field with its schema in the catalogue and write down anything that does not match.
Evidence for this step
Read it in the page or download it and open it in your own tools.
Mission artifact kafka-events.jsonl 4 lines download show
{"_export": {"tool": "kafka-ui", "search": "key = pay_5Rt8kM2xQ7wL9nB4", "topics_searched": ["payments.payment.authorized", "payments.payment.captured", "payments.payment.failed", "refunds.refund.succeeded", "ledger.entry.posted", "settlement.payment.settled"], "exported_at": "2026-09-14T08:03:22Z", "matches": 2}}
{"topic": "payments.payment.authorized", "partition": 7, "offset": 5518231, "timestamp": "2026-09-10T09:15:28.904Z", "key": "pay_5Rt8kM2xQ7wL9nB4", "headers": {"x-producer": "orchestrator", "x-producer-version": "2.14.0", "x-schema-version": "1", "content-type": "application/json"}, "value": {"event_id": "evt_Qm3xR8tK2pL9wN4s", "event_type": "payment.authorized", "occurred_at": "2026-09-10T09:15:28Z", "payment_id": "pay_5Rt8kM2xQ7wL9nB4", "merchant_id": "mer_A7K3P2Q9", "amount": 34000, "currency": "EUR"}}
{"topic": "payments.payment.captured", "partition": 7, "offset": 5518240, "timestamp": "2026-09-10T09:15:31.377Z", "key": "pay_5Rt8kM2xQ7wL9nB4", "headers": {"x-producer": "orchestrator", "x-producer-version": "2.14.0", "x-schema-version": "1", "content-type": "application/json"}, "value": {"event_id": "evt_Hs7wT2yM9kR4pQ1x", "event_type": "payment.captured", "occurred_at": "2026-09-10T09:15:31Z", "payment_id": "pay_5Rt8kM2xQ7wL9nB4", "merchant_id": "mer_A7K3P2Q9", "captured_amount": 34000, "currency": "EUR", "captured_at": "2026-09-10 09:15:31"}}