---
title: "record-transformation data processor"
manual: "TypoScript Explained"
version: "main"
permalink: "https://docs.typo3.org/permalink/t3tsref:recordtransformationprocessor@main"
source: "DataProcessing/RecordTransformationProcessor.rst"
rendered: "2026-09-19T06:55:14+00:00"
---

# `record-transformation` data processor {#recordtransformationprocessor}

The `\TYPO3\CMS\Frontend\DataProcessing\RecordTransformationProcessor`,
alias `record-transformation`, can typically be used in conjunction with the
DatabaseQuery Data Processor. The DatabaseQuery Data Processor typically fetches
records from the database, and the `record-transformation` will take
the result, and transforms the objects into
`Record` objects, which contain only relevant
data from the TCA table, which has been configured in the TCA `columns` fields
for this record.

This is especially useful for TCA tables, which contain "types" (such as `pages`
or `tt_content` database tables), where only relevant fields are added to the
record object. In addition, special fields from "enableColumns" or deleted
fields, next to language and version information are extracted so they can be
addressed in a unified way.

The `type` property contains the database table name and the actual type based
on the record, such `tt_content.textmedia` for Content Elements.

**Table of contents**

-   [Example: Usage with the DatabaseQueryProcessor](https://docs.typo3.org/permalink/t3tsref:example-usage-with-the-databasequeryprocessor@main)
-   [Example: Usage with FLUIDTEMPLATE](https://docs.typo3.org/permalink/t3tsref:example-usage-with-fluidtemplate@main)
-   [Usage in Fluid](https://docs.typo3.org/permalink/t3tsref:usage-in-fluid@main)
-   [Options of the record-transformation data processor](https://docs.typo3.org/permalink/t3tsref:options-of-the-record-transformation-data-processor@main)

## Example: Usage with the DatabaseQueryProcessor {#recordtransformationprocessor-databasequeryprocessor-example}

Example usage for the Data Processor in conjunction with the
[database-query data processor](https://docs.typo3.org/permalink/t3tsref:databasequeryprocessor@main).

**EXT:my_extension/Configuration/Sets/Main/setup.typoscript**

```typoscript
page = PAGE
page {
  10 = PAGEVIEW
  10 {
    paths.10 = EXT:my_extension/Resources/Private/Templates/
    dataProcessing {
      10 = database-query
      10 {
        as = categories
        table = sys_category
        where = parent=0
        dataProcessing.10 = record-transformation
      }
    }
  }
}

```

## Example: Usage with FLUIDTEMPLATE {#recordtransformationprocessor-fluidtemplate-example}

Transform the current data array of [FLUIDTEMPLATE](https://docs.typo3.org/permalink/t3tsref:cobj-fluidtemplate@main) to a record
object. This can be used for Content Elements of [Fluid Styled Content](https://docs.typo3.org/c/typo3/cms-fluid-styled-content/main/en-us/Index.html#start) or
custom ones. In this example the Fluid Styled Content
element "Text" has its data transformed for easier and enhanced usage.

**EXT:my_extension/Configuration/Sets/Main/setup.typoscript**

```typoscript
# tt_content.text = FLUIDTEMPLATE
tt_content.text {
  templateName = Text
  dataProcessing {
    10 = record-transformation
  }
}

```

## Usage in Fluid {#recordtransformationprocessor-fluid}

The `f:debug` output of the Record object is misleading for integrators,
as most properties are accessed differently as one would assume. The debug view
is most of all a better organized overview of all available information. E.g.
the property `properties` lists all relevant fields for the current Content
Type.

We are dealing with an object here. You however can access your record
properties as you are used to with `{record.title}` or
`{record.uid}`. In addition, you gain special, context-aware properties
like the language `{record.languageId}` or workspace
`{record.versionInfo.workspaceId}`.

Overview of all possibilities:

**Demonstration of available variables in Fluid**

```html
<!-- Any property, which is available in the Record (like normal) -->
{record.title}
{record.uid}
{record.pid}

<!-- Language related properties -->
{record.languageId}
{record.languageInfo.translationParent}
{record.languageInfo.translationSource}

<!-- The overlaid uid -->
{record.overlaidUid}

<!-- Types are a combination of the table name and the Content Type name. -->
<!-- Example for table "tt_content" and CType "textpic": -->

<!-- "tt_content" (this is basically the table name) -->
{record.mainType}

<!-- "textpic" (this is the CType) -->
{record.recordType}

<!-- "tt_content.textpic" (Combination of mainType and record type, separated by a dot) -->
{record.fullType}

<!-- System related properties -->
{record.systemProperties.deleted}
{record.systemProperties.disabled}
{record.systemProperties.lockedForEditing}
{record.systemProperties.createdAt}
{record.systemProperties.lastUpdatedAt}
{record.systemProperties.publishAt}
{record.systemProperties.publishUntil}
{record.systemProperties.userGroupRestriction}
{record.systemProperties.sorting}
{record.systemProperties.description}

<!-- Computed properties depending on the request context -->
{record.computedProperties.versionedUid}
{record.computedProperties.localizedUid}
{record.computedProperties.requestedOverlayLanguageId}
{record.computedProperties.translationSource} <!-- Only for pages, contains the Page model -->

<!-- Workspace related properties -->
{record.versionInfo.workspaceId}
{record.versionInfo.liveId}
{record.versionInfo.state.name}
{record.versionInfo.state.value}
{record.versionInfo.stageId}

```

**Table of contents**

-   [Example: Usage with the DatabaseQueryProcessor](https://docs.typo3.org/permalink/t3tsref:example-usage-with-the-databasequeryprocessor@main)
-   [Example: Usage with FLUIDTEMPLATE](https://docs.typo3.org/permalink/t3tsref:example-usage-with-fluidtemplate@main)
-   [Usage in Fluid](https://docs.typo3.org/permalink/t3tsref:usage-in-fluid@main)
-   [Options of the record-transformation data processor](https://docs.typo3.org/permalink/t3tsref:options-of-the-record-transformation-data-processor@main)

## Options of the `record-transformation` data processor {#recordtransformationprocessor-options}

**as**

-   **as**

    -   *Type:* [string](https://docs.typo3.org/permalink/t3tsref:data-type-string@main) / [stdWrap](https://docs.typo3.org/permalink/t3tsref:stdwrap@main)
    -   *Default:* 'record' or 'records'

    The target variable containing the resolved record objects.
    If empty, 'record' or 'records' (if multiple records are given) is used.

**if**

-   **if**

    -   *Type:* [if](https://docs.typo3.org/permalink/t3tsref:if@main) condition
    -   *Default:* ''

    Only if the condition is met the Data Processor is executed.

**table**

-   **table**

    -   *Type:* [string](https://docs.typo3.org/permalink/t3tsref:data-type-string@main)
    -   *Default:* auto-resolved

    The name of the database table of the records. Leave empty to auto-resolve
    the table from context.

    If you are dealing with a custom data source you can adjust it here.

**variableName**

-   **variableName**

    -   *Type:* [string](https://docs.typo3.org/permalink/t3tsref:data-type-string@main)
    -   *Default:* 'data'

    The variable that contains the record(s) from a previous Data Processor,
    or from a [FLUIDTEMPLATE](https://docs.typo3.org/permalink/t3tsref:cobj-fluidtemplate@main) view.

    If you are dealing with a custom data source you can adjust it here.
