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

# Kafka Connect Single Message Transformation Reference for Confluent Cloud

Single Message Transformations (SMTs) are per-message transformations that
modify messages as they flow between connectors and Kafka. They:

* Transform inbound messages after a source connector produces them but before they are written to Kafka.
* Transform outbound messages before they are sent to a sink connector.

The following SMTs are available for Confluent Cloud:

| Transform                                                                    | Description                                                                                                                                                                                         |
|------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [AdjustPrecisionAndScale](adjustprecisionandscale.md#adjustprecisionscale)   | Adjust the precision and scale of decimal fields within a record’s key or value.                                                                                                                    |
| [BytesToString](bytestostring.md#bytestostring)                              | Convert binary data (bytes field) in a Kafka Connect structure into a string format.                                                                                                                |
| [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).                                                                              |
| [ChangeTopicCase](changetopiccase.md#changetopiccase)                        | Change the case of the record topic name (for example, to uppercase or lowercase).                                                                                                                  |
| [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)                                    | **Only available for Oracle XStream CDC source and managed Debezium connectors.** Route Debezium outbox events using a regex configuration option.                                                  |
| [ExtractField](extractfield.md#extractfield)                                 | Extract the specified field from a Struct when schema present, or a Map in the case of schemaless data. Any null values are passed through unmodified.                                              |
| [ExtractNestedField](extractnestedfield.md#extractnestedfield)               | Promote a nested field within the record key or value to a top-level field to simplify data access for downstream systems.                                                                          |
| [ExtractTimestamp](extracttimestamp.md#extracttimestamp)                     | Extract the timestamp from a field within the record key or value and use it to overwrite the record’s existing timestamp.                                                                          |
| [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 (Kafka)](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.                                        |
| [Flatten (Confluent)](flatten-confluent.md#flatten-confluent)                | Flatten a nested data structure including nested maps. This generates names for each field by concatenating the field names at each level with a configurable delimiter character.                  |
| [HeaderFrom](headerfrom.md#headerfrom)                                       | Moves or copies fields in a record key or value into the record’s header.                                                                                                                           |
| [HeaderToValue](headertovalue.md#headertovalue)                              | Moves or copies fields in the record header to a record key or value.                                                                                                                               |
| [HoistField](hoistfield.md#hoistfield)                                       | Wrap data using the specified field name in a Struct when schema present, or a Map in the case of 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.                                                                                                                                                          |
| [KeyToValue](keytovalue.md#keytovalue)                                       | Convert a record key into a field within the record value (by default, a string field named `_key`) to store key data directly within the value.                                                    |
| [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.                                                                                         |
| [ReplaceField (Apache Kafka)](replacefield-ak.md#replacefield)               | Filter or rename fields.                                                                                                                                                                            |
| [ReplaceField (Confluent)](replacefield-confluent.md#confluent-replacefield) | Filter or rename nested fields.                                                                                                                                                                     |
| [SetMaximumPrecision](setmaximumprecision.md#setmaximumprecision)            | **Only available for managed source connectors.** Ensure all decimal fields in a Kafka Connect structure do not exceed a specified maximum precision.                                               |
| [SetSchemaMetadata](setschemametadata.md#setschemametadata)                  | Set the schema name, version, or both on the record’s key or value schema.                                                                                                                          |
| [TimestampConverter](timestampconverter.md#timestampconverter)               | Convert timestamps between different formats such as Unix epoch, strings, and Connect Date and Timestamp types.                                                                                     |
| [TimestampNow](timestampnow.md#timestampnow)                                 | Replace the existing timestamp of an incoming record with the precise time the record is processed by the connector.                                                                                |
| [TimestampNowField](timestampnowfield.md#timestampnowfield)                  | Add a new field to the record key or value, populating it with the system timestamp at the moment of processing.                                                                                    |
| [TimestampRouter](timestamprouter.md#timestamprouter)                        | Update the record’s topic field as a function of the original topic value and the record timestamp.                                                                                                 |
| [TimescaleDB](timescaledb.md#timescaledb)                                    | **Only available for Debezium PostgreSQL CDC V2 Source connectors.** Process raw change event records captured from TimescaleDB databases, performing logical routing and adding relevant metadata. |
| [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 is defined as a record with the entire value field being null, whether or not it has ValueSchema.                                                      |
| [TopicRegexRouter](topicregexrouter.md#topicregexrouter)                     | **Only available for managed Source and JDBC Sink connectors.** Update the record topic using the configured regular expression and replacement string.                                             |
| [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 don’t meet your transformation requirements, you can
create your own SMT for Confluent Cloud. For more information, see [Configure Custom SMT for Kafka Connectors in Confluent Cloud](../configure-custom-single-message-transforms/quick-start-custom-smt.md#cc-custom-single-message-transforms).
