---
title: "Important: FlexForm paths change for the plugin structures"
manual: "Academic Profiles"
version: "main"
source: "Changelog/3.0/Important-PluginFlexFormsAreSplitPerCoreVersion.rst"
rendered: "2026-09-22T18:32:44+00:00"
---

# Important: FlexForm paths change for the plugin structures {#important-plugin-flexforms-are-split-per-core-version}

## Description {#description}

The FlexForm data structures of the plugins have moved. Compared with the last
2.x release, the folder layout of
`EXT:academic_persons/Configuration/FlexForms/` is now:

| Structure | In 2.3.4 | In 3.0.0 |
| --- | --- | --- |
| `List.xml`, `Detail.xml` | `Core12/`, `Core13/` | `Core13/`, `Core14/` |
| `SelectedProfiles.xml`, `SelectedContracts.xml` | `Core12/`, `Core13/` | directly in `FlexForms/` |

The `Core12/` variants are gone with TYPO3 v12 support.
`SelectedProfiles.xml` and `SelectedContracts.xml` are identical on
every supported version and are no longer duplicated. `List.xml` and
`Detail.xml` keep their `Core13/` path and gain a `Core14/`
sibling.

Those two still need a variant per version because of
`settings.pageTitleFormat`, the only field in this extension configured
with a `valuePicker`. TYPO3 changed how it reads the items of that picker,
and it is the one item list core never made readable in both directions:

| TYPO3 | Reads | Given the other form |
| --- | --- | --- |
| v13 | the positional pair `$item[0]` / `$item[1]` | `Undefined array key 1`, then a `TypeError` \- the element renders nothing and the plugin cannot be opened |
| v14 | `$item['label']` / `$item['value']` | migrated on the fly, at the price of an `E_USER_DEPRECATED` |

FlexForm XML cannot carry a runtime switch, so the two forms need two files.
`Configuration/TCA/Overrides/tt_content.php` selects the folder from the
running major version.

## Impact {#impact}

Nothing changes for a site that installs the extension and configures its
plugins in the backend. The plugin options are the same on both TYPO3 versions.

## Affected Installations {#affected-installations}

Installations that reference one of the four data structures by path - for
example an extension or site package that registers the same structure for a
content element of its own, or overrides it through
`$GLOBALS['TCA']['tt_content']['columns']['pi_flexform']['config']['ds']`.

References to `Core12/…` and to `Core13/SelectedProfiles.xml` or
`Core13/SelectedContracts.xml` no longer resolve. References to
`Core13/List.xml` and `Core13/Detail.xml` keep working, but only
deliver the TYPO3 v13 variant.

## Solution {#solution}

Reference the two shared structures directly:

```text
FILE:EXT:academic_persons/Configuration/FlexForms/SelectedProfiles.xml
FILE:EXT:academic_persons/Configuration/FlexForms/SelectedContracts.xml
```

For the two split ones, select the variant that matches the running TYPO3
version, the way this extension does:

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

```php
use TYPO3\CMS\Core\Information\Typo3Version;

$flexFormPath = 'FILE:EXT:academic_persons/Configuration/FlexForms/'
    . ((new Typo3Version())->getMajorVersion() < 14 ? 'Core13' : 'Core14')
    . '/';

// $flexFormPath . 'List.xml'
// $flexFormPath . 'Detail.xml'
```

Once support for TYPO3 v13 is dropped, the `Core13` variants go away and
the `Core14` ones move back up one level.
