<a id="connect-transforms-supported"></a>

# Kafka Connect Single Message Transformations Reference for Confluent Platform

A Single Message Transformation (SMT) modifies individual records as they flow
through Connect, eliminating the need for a separate stream-processing
application. SMTs process inbound records after a source connector produces
them but before they are written to Apache Kafka®. Similarly, they process outbound
records before they are delivered to a sink connector.

The following table outlines the SMTs available for Kafka Connect and their
compatibility with specific connectors.

| Transform                                                                    | Description                                                                                                                                                                                                                |
|------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Cast](cast.md#cast)                                                         | Cast fields or the entire key or value to a specific type (for example, to force an integer field to a smaller width).                                                                                                     |
| [Drop](drop.md#drop)                                                         | Drop either a key or a value from a record and set it to null.                                                                                                                                                             |
| [DropHeaders](dropheaders.md#dropheaders)                                    | Drop one or more headers from each record.                                                                                                                                                                                 |
| [EventRouter](eventrouter.md#eventrouter)                                    | Route Debezium outbox events using a regular expression configuration option.                                                                                                                                              |
| [ExtractField](extractfield.md#extractfield)                                 | Extract the specified field from a Struct when schema present, or a Map for schemaless data. Any null values are passed through unmodified.                                                                                |
| [ExtractTopic](extracttopic.md#extracttopic)                                 | Replace the record topic with a new topic derived from its key or value.                                                                                                                                                   |
| [Filter (Apache Kafka)](filter-ak.md#ak-filter)                              | Drop all records. Designed to be used in conjunction with a [Predicate](filter-ak.md#predicates).                                                                                                                          |
| [Filter (Confluent)](filter-confluent.md#confluent-filter)                   | Include or drop records that match a configurable `filter.condition`.                                                                                                                                                      |
| [Flatten](flatten.md#flatten)                                                | Flatten a nested data structure. This generates names for each field by concatenating the field names at each level with a configurable delimiter character.                                                               |
| [GzipDecompress](gzipdecompress.md#gzipdecompress)                           | **Not currently available for managed connectors.** Gzip-decompress the entire byteArray key or value input.                                                                                                               |
| [HeaderFrom](headerfrom.md#headerfrom)                                       | Moves or copies fields in a record key or value into the record’s header.                                                                                                                                                  |
| [HoistField](hoistfield.md#hoistfield)                                       | Wrap data using the specified field name in a Struct when schema present, or a Map for schemaless data.                                                                                                                    |
| [InsertField](insertfield.md#insertfield)                                    | Insert field using attributes from the record metadata or a configured static value.                                                                                                                                       |
| [InsertHeader](insertheader.md#insertheader)                                 | Insert a literal value as a record header.                                                                                                                                                                                 |
| [MaskField](maskfield.md#maskfield)                                          | Mask specified fields with a valid null value for the field type.                                                                                                                                                          |
| [MessageTimestampRouter](messagetimestamprouter.md#messagetimestamprouter)   | Update the record’s topic field as a function of the original topic value and the record’s timestamp field.                                                                                                                |
| [RegexRouter](regexrouter.md#regexrouter)                                    | **Not currently available for managed connectors.** Update the record topic using the configured regular expression and replacement string.                                                                                |
| [ReplaceField (Apache Kafka)](replacefield-ak.md#replacefield)               | Filter or rename fields.                                                                                                                                                                                                   |
| [ReplaceField (Confluent)](replacefield-confluent.md#confluent-replacefield) | Filter or rename nested fields.                                                                                                                                                                                            |
| [SetSchemaMetadata](setschemametadata.md#setschemametadata)                  | Set the schema name, version, or both on the record’s key or value schema.                                                                                                                                                 |
| [TimescaleDB](timescaledb.md#timescaledb)                                    | **Only available for Debezium PostgreSQL CDC V2 Source connectors.** Consolidate change events from individual TimescaleDB chunk tables into logical hypertable topics and add TimescaleDB metadata to the record headers. |
| [TimestampConverter](timestampconverter.md#timestampconverter)               | Convert timestamps between different formats such as Unix epoch, strings, and Connect Date and Timestamp types.                                                                                                            |
| [TimestampRouter](timestamprouter.md#timestamprouter)                        | Update the record’s topic field as a function of the original topic value and the record timestamp.                                                                                                                        |
| [TimezoneConverter](timezoneconverter.md#timezoneconverter)                  | **Only available for Oracle XStream CDC Source and managed Debezium connectors.** Convert the timezone of timestamp fields in Debezium change event records to a specified target timezone.                                |
| [TombstoneHandler](tombstonehandler.md#tombstonehandler)                     | Manage tombstone records. A tombstone record has its entire value field set to null, regardless of whether a value schema is present.                                                                                      |
| [ValueToKey](valuetokey.md#valuetokey)                                       | Replace the record key with a new key formed from a subset of fields in the record value.                                                                                                                                  |

If the available SMTs do not provide the necessary transformation, you can
create your own SMT for Confluent Platform. For more information, see
[Create Custom Kafka Connect Single Message Transformations for Confluent Platform](/platform/current/connect/transforms/custom.html).
