[[ToHeader-ToHeader]]
= FieldsToHeaders
The following provides usage information for the SMT `org.apache.camel.kafkaconnector.transforms.FieldsToHeadersTransform`

== Description

FieldsToHeaders pull field(s) out of a complex (non-primitive, Map or Struct) key or value
and puts the extracted field(s) in headers. Fields and headers are matched by index,
for example:

[source,java-properties]
----
transforms.fieldsToHeadersTransform.fields=a,b,c,d
transforms.fieldsToHeadersTransform.headers=X,Y,Z,P
----
field 'a' goes to header 'X', field 'b' goes to header 'Y' etc...

Any null values are passed through unmodified.

If `transforms.fieldsToHeadersTransform.fields` is empty or omitted the whole value will be copied in the first `transforms.fieldsToHeadersTransform.headers`.

Use the concrete transformation type designed for the record key
(`org.apache.camel.kafkaconnector.transforms.FieldsToHeadersTransform$Key`) or value
(`org.apache.camel.kafkaconnector.transforms.FieldsToHeadersTransform$Value`).

== Examples

The following examples show how to use FieldsToHeaders.

=== Given the following configuration:

[source,java-properties]
----
transforms=FieldsToHeadersTransform
transforms.fieldsToHeadersTransform.type=org.apache.camel.kafkaconnector.transforms.FieldsToHeadersTransform$Value
transforms.fieldsToHeadersTransform.fields=FROM,TO,CC,SUBJECT
transforms.fieldsToHeadersTransform.headers=from,to,cc,subject
----
and the following message:

[source,json]
----
{
            "FROM": "bob@example.com",
              "TO": "alice@mail.com",
              "CC": "managers@enterprise.com",
         "SUBJECT": "Needs Attention!",
            "BODY": "Tere is an issue that needs your attention!",
  "APP_SETTING_ID": 9,
"APP_SETTING_NAME": "my_name",
     "SETTING_KEY":"my_setting_key"
}
----
the following headers will be added to the Kafka ConnectRecord object:

[source]
----
   from: "bob@example.com"
     to: "alice@mail.com"
     cc: "managers@enterprise.com"
subject: "Needs Attention!"
   body: "Tere is an issue that needs your attention!"
----

=== Given the following configuration:

[source,java-properties]
----
transforms=FieldsToHeadersTransform
transforms.fieldsToHeadersTransform.type=org.apache.camel.kafkaconnector.transforms.FieldsToHeadersTransform$Key
transforms.fieldsToHeadersTransform.headers=camel.kafka.KEY
----
and the following message:

[source]
----
kafka record with:
    value: "my message"
    key: 100
----
the following headers will be added to the Kafka ConnectRecord object:

[source]
----
   camel.kafka.KEY: 100
----

== Properties

[cols="^,^ ", options="header"]
|===
|Transform | Description

|fields
|Field names to extract.

|headers
|The target header names
|===

