---
title: "Breaking: #78581 - Hook getFlexFormDSClass no longer called"
manual: "TYPO3 Core Changelog"
version: "main"
permalink: "https://docs.typo3.org/permalink/changelog:breaking-78581-1668719172"
source: "Changelog/8.5/Breaking-78581-HookGetFlexFormDSClassNoLongerCalled.rst"
modified: "2026-09-14T09:47:36+00:00"
---

# Breaking: #78581 - Hook getFlexFormDSClass no longer called

See [forge#78581](https://forge.typo3.org/issues/78581)

## Description

With the deprecation of `BackendUtility::getFlexFormDS()` the hook `getFlexFormDSClass` is
no longer called and there is no substitution available.

## Impact

The hook is no longer called and flex form field manipulation by extensions does not happen anymore.

## Affected Installations

Extensions that extension flex form data structure definitions and use the hook `getFlexFormDSClass`
for that purpose.

## Migration

Method `BackendUtility::getFlexFormDS()` has been split into the methods
`FlexFormTools->getDataStructureIdentifier()` and `FlexFormTools->parseDataStructureByIdentifier()`.

Those two new methods now provide four hooks to allow manipulation of the flex form data structure
location and parsing. The methods and hooks are documented well, read their description for a deeper
insight on which combination is the correct one for a specific extension need.

The new hooks are very powerful and must be used with special care to be as future proof as possible.

Since the old hook is used by some widespread extensions, the core team prepared a transition for some
of them beforehand:

-   EXT:news: The extension used the old hook to only remove a couple of fields from the flex
    form definition. This has been moved over to a "FormEngine" data provider: [news](https://github.com/georgringer/news/pull/155)
-   EXT:flux: Flux implements a completely own way of locating and pointing to the flex form
    data structure that is needed in a specific context. The default core resolving does not work
    here. Flux now implements the hooks `getDataStructureIdentifierPreProcess` and
    `parseDataStructureByIdentifierPreProcess` to specify an own "identifier" syntax
    and to resolve that syntax to a data structure later: [flux](https://github.com/FluidTYPO3/flux/pull/1203)
-   EXT:gridelements: Similar to flux, gridelements has an own logic to choose which specific
    data structure should be used. However, the data structures are located in database row fields,
    so the "record" syntax of the core can be re-used to refer to those. gridelements uses the hook
    `getDataStructureIdentifierPreProcess` together with a small implementation in
    `parseDataStructureByIdentifierPreProcess` for a fallback scenario: [gridelements](https://review.typo3.org/#/c/50513/)
-   EXT:powermail: Powermail allows extending and changing existing flex form data structure
    definition depending on page TS. To do that, it now implements hook
    `getDataStructureIdentifierPostProcess` to add the needed pid to the existing identifier,
    and then implements hook `parseDataStructureByIdentifierPostProcess` to manipulate the
    resolved data structure: [powermail](https://github.com/einpraegsam/powermail/pull/6)
