---
title: "Important: What a project may build on is now named"
manual: "Academic Base"
version: "main"
permalink: "https://docs.typo3.org/permalink/fgtclb/academic-base:important-extension-point-policy@main"
source: "Changelog/3.0/Important-ExtensionPointPolicy.rst"
rendered: "2026-10-17T08:47:46+00:00"
---

# Important: What a project may build on is now named {#important-extension-point-policy}

## Description {#description}

Until now nothing said which classes of the academic extensions a project may
rely on. Projects subclassed controllers, replaced them with a copy, and
replaced repositories and services through an XCLASS - and each of those broke
on releases that did not mention the class at all.

The new chapter [Extension points](https://docs.typo3.org/permalink/fgtclb/academic-base:developers-extension-points@main) of this manual states the
public API of every academic extension and of **category_types**: the
events and the types they hand to a listener, the interfaces, the services and
classes a project names in its configuration or its code, two controller
traits, the domain models, and the templates, settings, TypoScript and
TSconfig keys, label keys and `CategoryTypes.yaml`. Everything listed
carries the `@api` tag in its docblock, and a release that breaks or
deprecates any of it says so in a **Breaking** or a
**Deprecation** changelog entry.

Everything the chapter does not list is not public API, whether it is
`final` or not, and may change in any release without a changelog entry.
That includes every repository and every plugin controller. The plugin
controllers are all `final` in 3.0.

Subclassing or XCLASSing a class is unsupported, listed or not, with one
exception: a subclass of a domain model, which is how a project adds fields to
a model. The [configuration check](https://docs.typo3.org/permalink/fgtclb/academic-base:upgrade-check-configuration@main) of `academic:upgrade:check` therefore
reports an XCLASS of a domain model as a notice instead of a warning, and no
longer fails because of it. Every other XCLASS is reported as before.

## Impact {#impact}

Nothing changes for a visitor or an editor. An installation that extends a
domain model through an XCLASS sees a notice instead of a warning from the
upgrade check, and the command exits with `0` if nothing else is found.

A project that XCLASSes a class the chapter does not list keeps working as
before, but should move that code to the events the chapter names before the
next update. A subclass or an XCLASS of a plugin controller no longer loads in
3.0, see the **Breaking** entries of **academic_bite_jobs**,
**academic_partners**, **academic_programs** and
**academic_projects**.
