---
title: "Upgrading from 2.4 to 3.0"
manual: "Academic Bite Jobs"
version: "main"
permalink: "https://docs.typo3.org/permalink/fgtclb/academic-bite-jobs:upgrade-from-2-4-to-3-0@main"
source: "Upgrade/From24To30.rst"
rendered: "2026-10-26T19:20:41+00:00"
---

# Upgrading from 2.4 to 3.0 {#upgrade-from-2-4-to-3-0}

Version 3.0 drops TYPO3 12, makes the controller of the job list final,
renders the job list with speaking classes and gives the content element a new
icon. It changes no database table of this extension and brings no upgrade
wizard. Work through the sections in order. Skip a step that does not apply to
the installation.

## Before you start {#upgrade-from-2-4-to-3-0-before-you-start}

Version 3.0 runs on TYPO3 13.4 from 13.4.35 on and on TYPO3 14.3 from 14.3.7
on, with PHP 8.2 or later.

**academic_bite_jobs** 3.0 needs these packages. Upgrade them first or
in the same deployment, in this order:

-   [`fgtclb/environment-state-manager`](https://packagist.org/packages/fgtclb/environment-state-manager) 2.x, which
    **academic_base** 3.0 requires instead of 1.x. Composer updates it
    on its own. A classic installation replaces
    **environment_state_manager** 1.x with 2.x before it activates
    **academic_base** 3.0.
-   [`fgtclb/academic-base`](https://packagist.org/packages/fgtclb/academic-base) 3.0, the same release as this extension.

These changes have to ship in the same deployment as the update:

-   A subclass of the controller of the job list goes, or the site fails with
    a fatal error as soon as the update is deployed, see
    [Adapt your code](https://docs.typo3.org/permalink/fgtclb/academic-bite-jobs:upgrade-from-2-4-to-3-0-code@main).

The module paths on this page are those of TYPO3 13, where the upgrade runs.

## Update TYPO3 first {#upgrade-from-2-4-to-3-0-typo3}

Update TYPO3 to 13.4.35 or later while the site still runs 2.4, which supports
TYPO3 13.4. Version 3.0 no longer installs on TYPO3 12, and Composer and the
Extension Manager refuse it next to an older patch release of TYPO3 13.

Stay on TYPO3 13 until the upgrade is complete when the installation also has
**academic_jobs**, **academic_persons**,
**academic_persons_edit** or **academic_projects**. Their
content element wizards read the column `tt_content.list_type`, which
TYPO3 14 removes, so they only run on TYPO3 13. Move to TYPO3 14.3.7 or later
once they have run.

See [Breaking: Removed TYPO3 v12 support](https://docs.typo3.org/permalink/fgtclb/academic-bite-jobs:breaking-removed-typo3-v12-support@main) and
[Important: TYPO3 13.4.35 or 14.3.7 is required](https://docs.typo3.org/permalink/fgtclb/academic-bite-jobs:important-minimum-typo3-versions@main).

## Update the package {#upgrade-from-2-4-to-3-0-package}

```bash
composer require -W \
    'fgtclb/academic-base':'~3.0.0' \
    'fgtclb/academic-bite-jobs':'~3.0.0'
```

On a classic installation, update **environment_state_manager** to 2.x
from the TER in **Admin Tools > Extensions** first, then update
**academic_base** and **academic_bite_jobs** there, in this
order. Run the commands of this page with `typo3/sysext/core/bin/typo3`
instead of `vendor/bin/typo3`.

```bash
vendor/bin/typo3 cache:flush
```

## Update the database {#upgrade-from-2-4-to-3-0-database}

```bash
vendor/bin/typo3 extension:setup
```

Or apply the changes in **Admin Tools > Maintenance > Analyze
Database Structure**.

The comparison changes no table of this extension. It applies the changes of
the index definitions TYPO3 13.4.35 and 14.3.7 bring, and the columns other
academic extensions add in 3.0.

## Adapt the configuration {#upgrade-from-2-4-to-3-0-configuration}

### The upgrade check {#upgrade-from-2-4-to-3-0-upgrade-check}

The console command `academic:upgrade:check` of **academic_base**
reads the stored configuration of the installation and reports the static
templates, page TSconfig imports and site sets that no longer reach an academic
extension, and an XCLASS of the controller. Run it on the staging copy right
after the package update:

```bash
vendor/bin/typo3 academic:upgrade:check
```

With the extension key and a site it also compares the template overrides of
the site with the templates this extension ships:

```bash
vendor/bin/typo3 academic:upgrade:check academic_bite_jobs --site=<site identifier>
```

Each finding, and what to do about it, is described in the upgrade check
of **academic_base**.

### Adjust your own configuration {#upgrade-from-2-4-to-3-0-own-configuration}

The site set, the static templates and the page TSconfig of this extension keep
their names and paths from 2.4.

The page TSconfig of the content element no longer adds it to the
`show` list of the new content element wizard, which TYPO3 13 and
14 do not read. A site package that copied that line can drop it, see
[Important: The wizard entry no longer lists the element under show](https://docs.typo3.org/permalink/fgtclb/academic-bite-jobs:important-ace-458-academic-bite-jobs-wizard-show@main).

## Adapt templates and assets {#upgrade-from-2-4-to-3-0-templates}

### Classes and styles {#upgrade-from-2-4-to-3-0-classes}

The templates render speaking classes now, shared by all academic extensions,
and no classes of the theme they were developed with. The extension shipped no
stylesheet in 2.4 and ships none in 3.0, so a site that relied on the card,
list group and table classes of a Bootstrap theme styles the new classes
itself. Move the selectors of the site stylesheet to the classes in the table
of [Breaking: B-ITE job templates carry speaking classes](https://docs.typo3.org/permalink/fgtclb/academic-bite-jobs:breaking-bite-jobs-speaking-frontend-classes@main). The chapter
[Styling](https://docs.typo3.org/permalink/fgtclb/academic-bite-jobs:styling@main) describes the markup, and [An example](https://docs.typo3.org/permalink/fgtclb/academic-bite-jobs:styling-example@main) shows rules to
start from.

### Icons {#upgrade-from-2-4-to-3-0-icons}

The content element has a new icon, registered as
`tx-academicbitejobs-plugin-bite-jobs` in [`Configuration/Icons.php`](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/FileStructure/Configuration/Icons.html#file-extension-configuration-icons-php).
The identifier `bitejobs_list` and the file
`Resources/Public/Icons/jobs_bite_icon.svg` are removed. Replace the
identifier in TCA, page TSconfig and templates, and register a replacement
icon under the new identifier in the [`Configuration/Icons.php`](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/FileStructure/Configuration/Icons.html#file-extension-configuration-icons-php) of a site
package that depends on **academic_bite_jobs**. See
[Breaking: The content element icon has a new identifier](https://docs.typo3.org/permalink/fgtclb/academic-bite-jobs:breaking-bite-jobs-plugin-icon-renamed@main).

### Template overrides {#upgrade-from-2-4-to-3-0-overrides}

Version 3.0 changes these templates and partials. A copy of one of them in a
site package keeps rendering the copy, so compare each copy with the shipped
file and take over the changes. The paths below are relative to
`Resources/Private/`:

| File | What changed | Entry |
| --- | --- | --- |
| `Partials/BiteJobs/View/List.html`, `Partials/BiteJobs/View/Card.html`, `Partials/BiteJobs/View/Table.html`, `Templates/BiteJobs/List.html` | Speaking classes instead of the card, list group and table classes. | [Classes and styles](https://docs.typo3.org/permalink/fgtclb/academic-bite-jobs:upgrade-from-2-4-to-3-0-classes@main) |
| `Partials/BiteJobs/Header.html` | It takes the class of the heading as `class` instead of `positionClass`, and the heading carries `ace-title`. A copy of a view that renders it with `positionClass` renders the heading without that class. | [Classes and styles](https://docs.typo3.org/permalink/fgtclb/academic-bite-jobs:upgrade-from-2-4-to-3-0-classes@main) |

## Adapt your code {#upgrade-from-2-4-to-3-0-code}

`\FGTCLB\AcademicBiteJobs\Controller\BiteJobsController` is final. A class
that extends it stops loading with a fatal error. Remove the subclass, and the
`configurePlugin()` call or the XCLASS registration that points at it, in
the same deployment as the update, and move each override to an event:

-   The request to B-ITE: a listener of
    `\FGTCLB\AcademicBiteJobs\Event\ModifyBiteJobPostingsRequestEvent`,
    see [ModifyBiteJobPostingsRequestEvent](https://docs.typo3.org/permalink/fgtclb/academic-bite-jobs:developers-event-modify-bite-job-postings-request-event@main).
-   The postings it returns: a listener of
    `\FGTCLB\AcademicBiteJobs\Event\ModifyBiteJobPostingsEvent`, see
    [ModifyBiteJobPostingsEvent](https://docs.typo3.org/permalink/fgtclb/academic-bite-jobs:developers-event-modify-bite-job-postings-event@main).
-   Additional view variables: a listener of
    `\FGTCLB\AcademicBase\Event\ModifyPluginViewEvent`, see
    [Feature: The plugin dispatches the plugin view event](https://docs.typo3.org/permalink/fgtclb/academic-bite-jobs:feature-plugin-view-event@main) and
    [ModifyPluginViewEvent](https://docs.typo3.org/permalink/fgtclb/academic-bite-jobs:developers-event-modify-plugin-view-event@main).

See [Breaking: The B-ITE jobs controller is final](https://docs.typo3.org/permalink/fgtclb/academic-bite-jobs:breaking-1791043409@main).

The FlexForm file moved from `Configuration/FlexForms/Core12/` and
`Configuration/FlexForms/Core13/` to
`Configuration/FlexForms/AcademicBiteJobsList.xml`. Own TCA that names
the data structure of this extension by its path takes over the new one, see
[Important: The FlexForm file moved to Configuration/FlexForms/](https://docs.typo3.org/permalink/fgtclb/academic-bite-jobs:important-bite-jobs-flexform-file-moved@main).

## Check the result {#upgrade-from-2-4-to-3-0-check}

-   The upgrade check exits with `0`, without and with the extension key,
    see [The upgrade check](https://docs.typo3.org/permalink/fgtclb/academic-bite-jobs:upgrade-from-2-4-to-3-0-upgrade-check@main).
-   The content element is offered as **Job List b-ite** now, see
    [Important: Content elements have new titles and descriptions](https://docs.typo3.org/permalink/fgtclb/academic-bite-jobs:important-content-element-titles-and-descriptions@main).
-   The job list renders, in each of its three views, with the styles of the
    site.
