> ## Documentation Index
> Fetch the complete documentation index at: https://docs.streamnative.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Kafka Connect SMTs(Single Message Transformations)

## Transformations

StreamNative cloud supports Kafka Connect transformations. You can use the following transformations in your Kafka Connect configurations:

* [InsertField](https://kafka.apache.org/37/documentation.html#org.apache.kafka.connect.transforms.InsertField) - Add a field using either static data or record metadata
* [ReplaceField](https://kafka.apache.org/37/documentation.html#org.apache.kafka.connect.transforms.ReplaceField) - Filter or rename fields
* [MaskField](https://kafka.apache.org/37/documentation.html#org.apache.kafka.connect.transforms.MaskField) - Replace field with valid null value for the type (0, empty string, etc) or custom replacement (non-empty string or numeric value only)
* [ValueToKey](https://kafka.apache.org/37/documentation.html#org.apache.kafka.connect.transforms.ValueToKey) - Replace the record key with a new key formed from a subset of fields in the record value
* [HoistField](https://kafka.apache.org/37/documentation.html#org.apache.kafka.connect.transforms.HoistField) - Wrap the entire event as a single field inside a Struct or a Map
* [ExtractField](https://kafka.apache.org/37/documentation.html#org.apache.kafka.connect.transforms.ExtractField) - Extract a specific field from Struct and Map and include only this field in results
* [SetSchemaMetadata](https://kafka.apache.org/37/documentation.html#org.apache.kafka.connect.transforms.SetSchemaMetadata) - modify the schema name or version
* [TimestampRouter](https://kafka.apache.org/37/documentation.html#org.apache.kafka.connect.transforms.TimestampRouter) - Modify the topic of a record based on original topic and timestamp. Useful when using a sink that needs to write to different tables or indexes based on timestamps
* [RegexRouter](https://kafka.apache.org/37/documentation.html#org.apache.kafka.connect.transforms.RegexRouter) - modify the topic of a record based on original topic, replacement string and a regular expression
* [Flatten](https://kafka.apache.org/37/documentation.html#org.apache.kafka.connect.transforms.Flatten): Flatten a nested data structure, generating names for each field by concatenating the field names at each level with a configurable delimiter character.
* [Cast](https://kafka.apache.org/37/documentation.html#org.apache.kafka.connect.transforms.Cast): Cast fields or the entire key or value to a specific type, e.g. to force an integer field to a smaller width.
* [TimestampConverter](https://kafka.apache.org/37/documentation.html#org.apache.kafka.connect.transforms.TimestampConverter): Convert timestamps between different formats such as Unix epoch, strings, and Connect Date/Timestamp types.
* [Filter](https://kafka.apache.org/37/documentation.html#org.apache.kafka.connect.transforms.Filter) - Removes messages from all further processing. This is used with a predicate to selectively filter certain messages.
* [InsertHeader](https://kafka.apache.org/37/documentation.html#org.apache.kafka.connect.transforms.InsertHeader) - Add a header using static data
* [HeadersFrom](https://kafka.apache.org/37/documentation.html#org.apache.kafka.connect.transforms.HeaderFrom) - Copy or move fields in the key or value to the record headers
* [DropHeaders](https://kafka.apache.org/37/documentation.html#org.apache.kafka.connect.transforms.DropHeaders) - Remove headers by name

Some built-in connectors also has specified transformations:

### YugabyteDB CDC Source

* [YBExtractNewRecordState SMT](https://docs.yugabyte.com/preview/explore/change-data-capture/using-yugabytedb-grpc-replication/debezium-connector-yugabytedb/#ybextractnewrecordstate-smt)
* [ExtractTopic](https://docs.yugabyte.com/preview/explore/change-data-capture/using-yugabytedb-grpc-replication/debezium-connector-yugabytedb/#ybextractnewrecordstate-smt)
* [PGCompatible SMT](https://docs.yugabyte.com/preview/explore/change-data-capture/using-yugabytedb-grpc-replication/debezium-connector-yugabytedb/#ybextractnewrecordstate-smt)

### Iceberg Sink

* [CopyValue](https://github.com/tabular-io/iceberg-kafka-connect/blob/main/kafka-connect-transforms/README.md#copyvalue)
* [DmsTransform](https://github.com/tabular-io/iceberg-kafka-connect/blob/main/kafka-connect-transforms/README.md#dmstransform)
* [DebeziumTransform](https://github.com/tabular-io/iceberg-kafka-connect/blob/main/kafka-connect-transforms/README.md#debeziumtransform)
* [JsonToMapTransform](https://github.com/tabular-io/iceberg-kafka-connect/blob/main/kafka-connect-transforms/README.md#jsontomaptransform)
* [KafkaMetadataTransform](https://github.com/tabular-io/iceberg-kafka-connect/blob/main/kafka-connect-transforms/README.md#kafkametadatatransform)
* [MongoDebeziumTransform](https://github.com/tabular-io/iceberg-kafka-connect/blob/main/kafka-connect-transforms/README.md#mongodebeziumtransform)

## Predicates

StreamNative cloud supports Kafka Connect predicates. You can use the following predicates in your Kafka Connect configurations:

* [TopicNameMatches](https://kafka.apache.org/37/documentation.html#org.apache.kafka.connect.transforms.predicates.TopicNameMatches): matches records in a topic with a name matching a particular Java regular expression.
* [HasHeaderKey](https://kafka.apache.org/37/documentation.html#org.apache.kafka.connect.transforms.predicates.HasHeaderKey): matches records which have a header with the given key.
* [RecordIsTombstone](https://kafka.apache.org/37/documentation.html#org.apache.kafka.connect.transforms.predicates.RecordIsTombstone): matches tombstone records, that is records with a null value.

## What’s next?

* Discover kafka Connect Ecosystem on [StreamNative Hub](/connect/overview).
