Add a transforms entry to the connector config: transforms=promoteHeaders
Set transforms.promoteHeaders.type=org.apache.kafka.connect.transforms.HeaderFrom$Value to operate on the record value
Specify which fields to promote: transforms.promoteHeaders.fields=region,tenant_id and the corresponding header names: transforms.promoteHeaders.headers=x-region,x-tenant
Choose operation mode: transforms.promoteHeaders.operation=copy to leave fields in the value, or move to remove them from the value after promotion
Chain with a downstream SMT if needed: e.g. add a ReplaceField transform after HeaderFrom to drop any fields that should not appear in the sink payload
Validate by consuming a transformed message with kafka-console-consumer.sh --print-headers and confirming x-region and x-tenant headers are present
Known gotchas
HeaderFrom field names are case-sensitive and must exactly match the field names in the record schema; a mismatch causes a DataException at runtime
When operation=move is used and the downstream sink does not support headers, the field data is permanently lost — use copy during initial rollout and switch to move only after verifying header visibility at the sink
HeaderFrom does not support nested field paths; to promote a nested field first use ExtractField to flatten it, then apply HeaderFrom
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp