VMF / MIL-STD-6017 Normalized Event Contract
This blueprint describes how a deployment can persist authorized, externally
normalized VMF / MIL-STD-6017 / K-series-derived events without making
nats-sinks a VMF parser or tactical gateway.
nats-sinks receives a normalized event from NATS JetStream, validates generic
metadata, writes to the configured sink, and acknowledges only after durable
success. VMF parsing, MIL-STD-2045 header handling, bearer protocols,
authorization, redaction, tactical validation, and K-series semantics remain
external.
Architecture
flowchart LR
Source[VMF source or gateway] --> Adapter[External VMF adapter]
Adapter --> JS[NATS JetStream]
JS --> Sink[nats-sinks]
Sink --> Store[Oracle Database / file / object sink]
Store --> Consumers[Reporting / audit / replay]
Synthetic Event Shape
{
"event_id": "synthetic-vmf-0001",
"source_gateway": "vmf-gateway-placeholder",
"source_system": "mission-adapter-placeholder",
"message_family": "VMF",
"message_standard": "MIL-STD-6017",
"message_type": "K-series",
"message_name": "Kx.x",
"event_time": "2026-05-31T10:05:00Z",
"receive_time": "2026-05-31T10:05:02Z",
"sender_reference": "sender-placeholder",
"recipient_reference": "recipient-placeholder",
"correlation_id": "correlation-placeholder-002",
"sequence": "sequence-placeholder-002",
"payload_sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"raw_payload_reference": "artifact://synthetic/vmf/0001",
"normalized_payload": {
"synthetic": true,
"message_status": "accepted",
"placeholder_fields": {
"field_a": "value-a"
}
},
"classification": "NATO UNCLASSIFIED",
"labels": ["synthetic", "vmf", "custody"],
"security_labels": {
"profile": "example-security-label-v1",
"handling": "synthetic-only"
},
"mission_metadata": {
"profile": "normalized-vmf-event",
"profile_version": 1
},
"schema_profile": "normalized-vmf-event",
"schema_version": 1
}
Persistence Guidance
Use Oracle columns for stable identifiers and timestamps when operators need searchable reporting. Keep profile-specific or changing fields in JSON. File sink output can preserve the complete event for disconnected review or replay preparation. Use DLQ handling for malformed JSON, profile validation failures, and permanent sink errors.
Idempotency Strategy
Prefer a key derived from source_gateway, source_system, event_id,
sequence, correlation_id, and payload_sha256. Redelivery must not create
duplicate operational records.
Explicit Non-Goals
This blueprint does not implement MIL-STD-6017, VMF encoding or decoding, K-series field catalogues, MIL-STD-2045 header parsing, CNR behavior, gateway behavior, cryptography, tactical command logic, or fire-support workflows.