TYPO3 Logo
TYPO3 Core Changelog
Options
Give feedback View source How to edit Edit on GitHub Full documentation (single file)

TYPO3 Core Changelog

  • ChangeLog v14
    • 14.1 Changes
    • 14.0 Changes
    • 14.x Changes by type
  • ChangeLog v13
    • 13.4.x Changes
    • 13.4 Changes
    • 13.3 Changes
    • 13.2 Changes
    • 13.1 Changes
    • 13.0 Changes
    • 13.x Changes by type
  • ChangeLog v12
    • 12.4.x Changes
    • 12.4 Changes
    • 12.3 Changes
    • 12.2 Changes
    • 12.1 Changes
    • 12.0 Changes
    • 12.x Changes by type
  • ChangeLog v11
    • 11.5.x Changes
    • 11.5 Changes
    • 11.4 Changes
    • 11.3 Changes
    • 11.2 Changes
    • 11.1 Changes
    • 11.0 Changes
    • 11.x Changes by type
  • ChangeLog v10
    • 10.4.x Changes
    • 10.4 Changes
    • 10.3 Changes
    • 10.2 Changes
    • 10.1 Changes
    • 10.0 Changes
    • 10.x Changes by type
  • ChangeLog v9
    • 9.5.x Changes
    • 9.5 Changes
    • 9.4 Changes
    • 9.3 Changes
    • 9.2 Changes
    • 9.1 Changes
    • 9.0 Changes
    • 9.x Changes by type
  • ChangeLog v8
    • 8.7.x Changes
    • 8.7 Changes
    • 8.6 Changes
    • 8.5 Changes
    • 8.4 Changes
    • 8.3 Changes
    • 8.2 Changes
    • 8.1 Changes
    • 8.0 Changes
    • 8.x Changes by type
  • ChangeLog v7
    • 7.6.x Changes
    • 7.6 Changes
    • 7.5 Changes
    • 7.4 Changes
    • 7.3 Changes
    • 7.2 Changes
    • 7.1 Changes
    • 7.0 Changes
    • 7.x Changes by type
  • Documenting Changes
  • Sitemap
  1. TYPO3 Core Changelog
  2. ChangeLog v14
  3. 14.0 Changes
  4. Deprecation: #106947 - Move upgrade wizard related interfaces and attribute to EXT:core
Give feedback Edit on GitHub

Deprecation: #106947 - Move upgrade wizard related interfaces and attribute to EXT:core 

See forge#106947

Description 

EXT:install provided a couple of interfaces to allow implementing upgrade wizards, along with the PHP attribute #[UpgradeWizard(...)] to register them.

Since TYPO3 v13 it is possible to run TYPO3 without EXT:install being installed. However, this advantage could often not be utilised sensibly, since extensions still needed to require EXT:install as a dependency in order to ship upgrade wizards, because the implemented interfaces needed to be available.

For this reason the following interfaces, classes and attributes are now moved into EXT:core, and their former counterparts in EXT:install now extend these Core classes:

  • Attribute \TYPO3\CMS\Install\Attribute\UpgradeWizard to \TYPO3\CMS\Core\Attribute\UpgradeWizard
  • Interface \TYPO3\CMS\Install\Updates\ChattyInterface to \TYPO3\CMS\Core\Upgrades\ChattyInterface
  • Interface \TYPO3\CMS\Install\Updates\ConfirmableInterface to \TYPO3\CMS\Core\Upgrades\ConfirmableInterface
  • Interface \TYPO3\CMS\Install\Updates\PrerequisiteInterface to \TYPO3\CMS\Core\Upgrades\PrerequisiteInterface
  • Interface \TYPO3\CMS\Install\Updates\RepeatableInterface to \TYPO3\CMS\Core\Upgrades\RepeatableInterface
  • Interface \TYPO3\CMS\Install\Updates\UpgradeWizardInterface to \TYPO3\CMS\Core\Upgrades\UpgradeWizardInterface
  • Class \TYPO3\CMS\Install\Updates\Confirmation to \TYPO3\CMS\Core\Upgrades\Confirmation
  • Class \TYPO3\CMS\Install\Updates\DatabaseUpdatedPrerequisite to \TYPO3\CMS\Core\Upgrades\DatabaseUpdatedPrerequisite
  • Class \TYPO3\CMS\Install\Updates\ReferenceIndexUpdatedPrerequisite to \TYPO3\CMS\Core\Upgrades\ReferenceIndexUpdatedPrerequisite
  • AbstractClass \TYPO3\CMS\Install\Updates\AbstractListTypeToCTypeUpdate to \TYPO3\CMS\Core\Upgrades\AbstractListTypeToCTypeUpdate

The following internal class has been moved without an alternative:

  • Class :php\TYPO3\CMS\Install\Updates\PrerequisiteCollection to \TYPO3\CMS\Core\Upgrades\PrerequisiteCollection

Extension authors are encouraged to migrate their upgrade wizards to the new core interface, in order to drop their dependency on EXT:install.

Note

EXT:install is still required to execute upgrade wizards either on CLI or within the TYPO3 Install Tool interface, even when switching to the new EXT:core interfaces. Moving typo3 upgrade:* commands is planned for TYPO3 v14 LTS.

Note

Note that not only "Install" is replaced with "Core", but also "Updates" renamed to "Upgrades" to keep a consistent naming scheme.

Impact 

Using the listed interfaces and the attribute in the scope of EXT:core allow extension authors to optionally provide their extension upgrade wizards. EXT:install can then be set as a "suggested" dependency, and is no longer required to be mandatory.

The usage of these old interfaces from EXT:install is now deprecated.

Affected installations 

Installations missing EXT:install or having extensions providing upgrade wizards using the old namespace.

Migration 

Upgrade custom upgrade wizards to use the new attribute, interfaces and/or classes from the EXT:core namespace, instead of EXT:install:

Upgrade Wizard 

Before 

EXT:my_extension/Classes/Upgrades/CustomUpgradeWizard.php
<?php

declare(strict_types=1);

namespace MyVendor\MyExtension\Upgrades;

use TYPO3\CMS\Install\Attribute\UpgradeWizard;
use TYPO3\CMS\Install\Updates\ChattyInterface;
use TYPO3\CMS\Install\Updates\ConfirmableInterface;
use TYPO3\CMS\Install\Updates\RepeatableInterface;
use TYPO3\CMS\Install\Updates\UpgradeWizardInterface;

#[UpgradeWizard('myExtensionCustomUpgradeWizardIdentifier')]
class CustomUpgradeWizard extends UpgradeWizardInterface, ChattyInterface, RepeatableInterface
{
  // ...
}
Copied!

After 

EXT:my_extension/Classes/Upgrades/CustomUpgradeWizard.php
<?php

declare(strict_types=1);

namespace MyVendor\MyExtension\Upgrades;

use TYPO3\CMS\Core\Attribute\UpgradeWizard;
use TYPO3\CMS\Core\Upgrades\ChattyInterface;
use TYPO3\CMS\Core\Upgrades\ConfirmableInterface;
use TYPO3\CMS\Core\Upgrades\RepeatableInterface;
use TYPO3\CMS\Core\Upgrades\UpgradeWizardInterface;

#[UpgradeWizard('myExtensionCustomUpgradeWizardIdentifier')]
class CustomUpgradeWizard extends UpgradeWizardInterface, ChattyInterface, RepeatableInterface
{
  // ...
}
Copied!

AbstractListTypeToCTypeUpdate 

The abstract upgrade wizard \TYPO3\CMS\Install\Updates\AbstractListTypeToCTypeUpdate has been introduced in 13.4 and is quite young, but needed to be moved to EXT:core to provide implementing upgrade wizards utilizing this base class.

Note

Any extension that utilizes this abstract needs to require at least TYPO3 v14.0 when using the new base class.

Before 

EXT:my_extension/Classes/Upgrades/CustomCTypeMigration.php
<?php

declare(strict_types=1);

namespace MyVendor\MyExtension\Upgrades;

use TYPO3\CMS\Core\Attribute\UpgradeWizard;
use TYPO3\CMS\Install\Updates\AbstractListTypeToCTypeUpdate;

#[UpgradeWizard('CustomCTypeMigration')]
final class CustomCTypeMigration extends AbstractListTypeToCTypeUpdate
{
    // ...
}
Copied!

After 

EXT:my_extension/Classes/Upgrades/CustomCTypeMigration.php
<?php

declare(strict_types=1);

namespace MyVendor\MyExtension\Upgrades;

use TYPO3\CMS\Core\Attribute\UpgradeWizard;
use TYPO3\CMS\Core\Upgrades\AbstractListTypeToCTypeUpdate;

#[UpgradeWizard('CustomCTypeMigration')]
final class CustomCTypeMigration extends AbstractListTypeToCTypeUpdate
{
    // ...
}
Copied!

EXT:install prerequisite 

Using the prerequisite classes from the EXT:install namespace (using their compatibility alias) can be kept for the time being, if an extension needs to provide support for two major TYPO3 versions:

TYPO3 v13 and v14 dual version support.
<?php

declare(strict_types=1);

namespace MyVendor\MyExtension\Upgrades;

use TYPO3\CMS\Core\Attribute\UpgradeWizard;
use TYPO3\CMS\Core\Upgrades\ChattyInterface;
use TYPO3\CMS\Core\Upgrades\ConfirmableInterface;
use TYPO3\CMS\Core\Upgrades\RepeatableInterface;
use TYPO3\CMS\Core\Upgrades\UpgradeWizardInterface;
use TYPO3\CMS\Install\Updates\DatabaseUpdatedPrerequisite;
use TYPO3\CMS\Install\Updates\ReferenceIndexUpdatedPrerequisite;

#[UpgradeWizard('myExtensionCustomUpgradeWizardIdentifier')]
class CustomUpgradeWizard extends UpgradeWizardInterface, ChattyInterface, RepeatableInterface
{
    /**
     * @return string[] All new fields and tables must exist
     */
    public function getPrerequisites(): array
    {
        return [
            DatabaseUpdatedPrerequisite::class,
            ReferenceIndexUpdatedPrerequisite:class,
        ];
    }
}
Copied!
TYPO3 v14 and newer use core classes
<?php

declare(strict_types=1);

namespace MyVendor\MyExtension\Upgrades;

use TYPO3\CMS\Core\Attribute\UpgradeWizard;
use TYPO3\CMS\Core\Upgrades\ChattyInterface;
use TYPO3\CMS\Core\Upgrades\ConfirmableInterface;
use TYPO3\CMS\Core\Upgrades\RepeatableInterface;
use TYPO3\CMS\Core\Upgrades\UpgradeWizardInterface;
use TYPO3\CMS\Core\Upgrades\DatabaseUpdatedPrerequisite;
use TYPO3\CMS\Core\Upgrades\ReferenceIndexUpdatedPrerequisite;

#[UpgradeWizard('myExtensionCustomUpgradeWizardIdentifier')]
class CustomUpgradeWizard extends UpgradeWizardInterface, ChattyInterface, RepeatableInterface
{
    /**
     * @return string[] All new fields and tables must exist
     */
    public function getPrerequisites(): array
    {
        return [
            DatabaseUpdatedPrerequisite::class,
            ReferenceIndexUpdatedPrerequisite:class,
        ];
    }
}
Copied!
  • Previous
  • Next
Reference to the headline

Copy and freely share the link

This link target has no permanent anchor assigned. You can make a pull request on GitHub to suggest an anchor. The link below can be used, but is prone to change if the page gets moved.

Copy this link into your TYPO3 manual.

  • Home
  • Contact
  • Issues
  • Repository

Last rendered: Nov 25, 2025 15:23

© since 1997 by the TYPO3 contributors
  • Legal Notice
  • Privacy Policy