Feature: Legacy settings overlay and migration command
Description
A site package that still ships the pre-3.0 shape of
Configuration/ - the
validations
map with one flag list per record type, and the
profile
map - is no longer ignored. Its two keys are mapped onto the four section
maps of 3.0 at runtime, before the settings graph is built, so the
installation keeps behaving as it was configured on the day of the update:
the backend record editor and the editing frontend see the flags the override
declared, not the shipped defaults.
The mapping is an overlay on the shipped maps. A legacy set decides the five
flags the old shape knew -
required
,
readonly
,
disabled
,
email
and
number
- for every field of its
target; a field the set does not list has none of them, exactly as it was
unconfigured before, and the flags the old shape could not express -
url
,
date
,
tel
,
textarea
,
html
-
stay as the section maps declare them. Two things are not mapped losslessly
and are reported:
- An eighth timeline entry type declared under
profileis not migrated. It needs a profile relation and a TCA column the settings never created; see the Breaking entry on the section based settings for how to keep one.Informations Types - The
typeandfieldof a timeline entry type are not applied. Until 2.4 the two generated the inline column of the profile table, so overriding one moved the backend relation and the frontend selection together; since 3.0 the seven relations are declared in the TCA of the profile table, and applying the override would move the frontend half alone - records created in the editing frontend would be invisible in the backend, and the other way round. The section keeps the record type and the relation field that match the TCA, and the value the override named is printed as a note. TheName labelof the type is mapped as before.
Every package that ships a legacy key is logged once per key at warning level, naming the package, the key and the command below. The mapping is transitional and is removed in academic_persons 4.0.
The console command academic:persons:settings:migrate prints, for
every active package that still ships a legacy key, the four section maps
those keys are mapped onto - the document that replaces the legacy keys in
that package's file - together with the notes about what could not be
mapped, and exits with 1 when such a package exists, so a deployment
pipeline can gate on it:
vendor/bin/typo3 academic:persons:settings:migrate > migrated.yaml
The command never writes the file. The override lives in a site package that is under version control and usually deployed read-only, so a write would be lost on the next deployment or leave a dirty working tree; the printed maps are pasted into the package after review.
The status report of EXT:reports lists, under Academic Persons, every active package that still ships a legacy key as a warning. The status provider is registered only when EXT:reports is installed; there is no dependency on it.
Impact
An installation with a pre-3.0 override runs on its own flags again after
the update, with a warning in the log and in the status report until the
override is rewritten. No cache flush is needed for the overlay to take
effect: the normalised settings graph is cached under the identifier
AcademicPersons_Settings_v3, while releases before 3.0 wrote
AcademicPersons_Settings, so the first request after the update is a
cache miss and rebuilds the graph through the overlay. A flush stays
necessary after every later edit of the file, as before. The migration itself - replacing the legacy keys with
the printed maps and flushing the caches - is described on the
Validation settings page.