---
title: "Deprecation: #107047 - ExtensionManagementUtility::addPiFlexFormValue()"
manual: "TYPO3 Core Changelog"
version: "main"
permalink: "https://docs.typo3.org/permalink/changelog:deprecation-107047-1751984220"
source: "Changelog/14.0/Deprecation-107047-ExtensionManagementUtilityAddPiFlexFormValue.rst"
typo3-version: "14.0"
typo3-major: 14
type: "deprecation"
issue: 107047
forge: "https://forge.typo3.org/issues/107047"
tags: ["Backend", "FlexForm", "TCA", "FullyScanned", "ext:core"]
rendered: "2026-10-01T19:27:47+00:00"
---

# Deprecation: #107047 - ExtensionManagementUtility::addPiFlexFormValue() {#deprecation-107047-1751984220}

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

## Description {#description}

The method
`\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue()`
has been deprecated.

This method was historically used to assign FlexForm definitions to plugins
registered as subtypes in the `list_type` field of `tt_content`. With
the removal of subtypes (see [Breaking: #105377 - Deprecated functionality removed](https://docs.typo3.org/permalink/changelog:breaking-105377-1729513863)) and the shift
toward registering plugins as dedicated record types via `CType`, as well
as the removal of the `ds_pointerField` and multi-entry `ds` array
format (see [Breaking: #107047 - Remove pointer field functionality of TCA flex](https://docs.typo3.org/permalink/changelog:breaking-107047-1751982363)), this separate method call is no
longer necessary.

## Impact {#impact}

Calling this method will trigger a deprecation warning. The extension scanner
will also report any usages. The method will be removed in TYPO3 v15.0.

## Affected installations {#affected-installations}

Extensions that call
`\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue()`
to assign FlexForm definitions to plugins or content elements are affected.

## Migration {#migration}

Instead of using this method, define the FlexForm configuration using one of
the following approaches:

### Option 1: Register via `registerPlugin()` {#option-1-register-via-php-registerplugin}

Provide the FlexForm definition directly when registering the plugin.
This has been possible since [Feature: #107047 - FlexForm enhancements: Direct plugin registration and raw TCA support](https://docs.typo3.org/permalink/changelog:feature-107047-1751984817).

**EXT:my_extension/ext_localconf.php**

```php
use TYPO3\CMS\Extbase\Utility\ExtensionUtility;

ExtensionUtility::registerPlugin(
    'MyExtension',
    'MyPlugin',
    'My Plugin Title',
    'my-extension-icon',
    'plugins',
    'Plugin description',
    'FILE:EXT:my_extension/Configuration/FlexForm.xml'
);
```

### Option 2: Register via `addPlugin()` for non-Extbase plugins {#option-2-register-via-php-addplugin-for-non-extbase-plugins}

This is also supported since [Feature: #107047 - FlexForm enhancements: Direct plugin registration and raw TCA support](https://docs.typo3.org/permalink/changelog:feature-107047-1751984817).

**EXT:my_extension/ext_localconf.php**

```php
use TYPO3\CMS\Core\Imaging\Icon;
use TYPO3\CMS\Core\Imaging\IconRegistry;
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Schema\Struct\SelectItem;

ExtensionManagementUtility::addPlugin(
    new SelectItem(
        'select',
        'My Plugin Title',
        'myextension_myplugin',
        'my-extension-icon',
        'plugins',
        'Plugin description'
    ),
    'FILE:EXT:my_extension/Configuration/FlexForm.xml'
);
```

### Option 3: Define FlexForm via TCA `columnsOverrides` {#option-3-define-flexform-via-tca-php-columnsoverrides}

You can also directly define the FlexForm in TCA:

**EXT:my_extension/Configuration/TCA/Overrides/tt_content.php**

```php
$GLOBALS['TCA']['tt_content']['types']['my_plugin']['columnsOverrides']
    ['pi_flexform']['config']['ds'] =
    'FILE:EXT:my_extension/Configuration/FlexForm.xml';
```
