---
title: "Deprecation: #84321 - Protected methods and properties in AddController"
manual: "TYPO3 Core Changelog"
version: "main"
permalink: "https://docs.typo3.org/permalink/changelog:deprecation-84321"
source: "Changelog/9.2/Deprecation-84321-ProtectedMethodsAndPropertiesInAddController.rst"
typo3-version: "9.2"
typo3-major: 9
type: "deprecation"
issue: 84321
forge: "https://forge.typo3.org/issues/84321"
tags: ["Backend", "PHP-API", "PartiallyScanned"]
rendered: "2026-09-20T18:31:11+00:00"
---

# Deprecation: #84321 - Protected methods and properties in AddController {#deprecation-84321}

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

## Description {#description}

This file is about third party usage (consumer that call the class as well as
signals or hooks depending on it) of `\TYPO3\CMS\Backend\Controller\Wizard\AddController`.

A series of class properties has been set to protected.
They will throw deprecation warnings if called public from outside:

-   \[not scanned\] `$content`
-   `$processDataFlag`
-   \[not scanned\] `$pid`
-   \[not scanned\] `$table`
-   \[not scanned\] `$id`
-   `$P`
-   `$returnEditConf`

All methods not used as entry points by `\TYPO3\CMS\Backend\Http\RouteDispatcher` will be
removed or set to protected in v10 and throw deprecation warnings if used from a third party:

-   \[not scanned\] `init()`
-   \[not scanned\] `main()`

Due to refactoring the `init()` method does not perform a redirect anymore in case no `pid`
was set by GET params. This redirect has been moved and will be performed for legacy code by the
deprecated `main()` method now.

Additionally `$GLOBALS['SOBE']` is not set by the `AddController` constructor anymore.

## Impact {#impact}

Calling one of the above methods or accessing one of the above properties on an instance of
`AddController` will throw a deprecation warning in v9 and a PHP fatal in v10.

## Affected Installations {#affected-installations}

The extension scanner will find most usages, but may also find some false positives. The most
common property and method names like `$content` are not registered and will not be found
if an extension uses that on an instance of `AddController`. In general all extensions
that set properties or call methods except `mainAction()` are affected.

## Migration {#migration}

In general, extensions should not instantiate and re-use controllers of the core. Existing
usages should be rewritten to be free of calls like these.
