---
title: "Upgrading from 2.3 to 3.0"
manual: "Academic StudyPlan"
version: "main"
permalink: "https://docs.typo3.org/permalink/fgtclb/academic-study-plan:upgrade-from-2-3-to-3-0@main"
source: "Upgrade/From23To30.rst"
rendered: "2026-10-17T08:48:10+00:00"
---

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

This page takes an installation of **academic_study_plan** 2.3 straight
to 3.0, without the step to 2.4. Version 2.4 delivers the page TSconfig per
component, moves the configuration files, stores decimal credit points and
reads the label overrides from the documented path. Version 3.0 drops TYPO3 12,
makes the record tables of the study plan workspace aware, ships no stylesheet,
loads the script from the template as an ES module, renders speaking classes
and the shared icons of **academic_base**, and splits the template into
partials with a markup contract of data attributes. The page leaves out two
states of 2.4 that 3.0 replaces: the asset paths below `frontend/`, see
[Breaking: The frontend assets are built and moved](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:breaking-frontend-assets-are-built@main), and the control icon identifiers of
2.4, see [Important: The study plan controls are visible](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:important-study-plan-controls-are-visible@main). Work through the
sections in order. Skip a step that does not apply to the installation.

## Before you start {#upgrade-from-2-3-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_study_plan** 3.0 declares no new dependency of its own. It
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, new since 2.4, which
    **academic_base** 3.0 requires. Composer installs it on its own. A
    classic installation installs **environment_state_manager** 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:

-   The database update, without which the backend list of the study plan
    categories and every study plan fail, see
    [Update the database](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:upgrade-from-2-3-to-3-0-database@main).
-   The page TSconfig of the content element, on every site that selects the
    page TSconfig of version 2.3. The content element is not offered to
    editors until it is done, see [Page TSconfig of the content element](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:upgrade-from-2-3-to-3-0-page-tsconfig@main).
-   The rules of the site stylesheet for the study plan. Without them a
    semester header shows both of its glyphs and the filter does not
    collapse, see [Site stylesheet](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:upgrade-from-2-3-to-3-0-stylesheet@main).

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

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

Update TYPO3 to 13.4.35 or later while the site still runs 2.3, 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-study-plan: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-study-plan:important-minimum-typo3-versions@main).

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

```bash
composer require -W \
    'fgtclb/academic-base':'~3.0.0' \
    'fgtclb/academic-study-plan':'~3.0.0'
```

On a classic installation, install **environment_state_manager** 2.x
from the TER in **Admin Tools > Extensions** first, then update
**academic_base** and **academic_study_plan** 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-3-to-3-0-database}

An installation that redefined `credit_points` in an
[`ext_tables.sql`](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/FileStructure/ExtTablesSql.html#file-extension-ext-tables-sql) of its own removes that definition first, because a
declared column wins over the derived one. A TCA override that only adds
`'format' => 'decimal'` to the field can go. Then update the database:

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

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

Two changes reach the tables of the study plan, and no stored record is
changed:

-   The column `credit_points` of the tables
    `tx_academicstudyplan_domain_model_semester` and
    `tx_academicstudyplan_domain_model_module` changes from
    `int(11)` to a decimal column with two decimals. TYPO3 derives it
    from the TCA now. The change keeps every stored value, and editors can
    enter a value such as 2.5 afterwards, which the integer column cannot hold
    on MariaDB, MySQL and PostgreSQL. See
    [Important: Study plan credit points take decimals](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:important-study-plan-credit-points-are-decimal@main) and
    [Important: The credit point columns are derived from the TCA](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:important-ace-722-academic-study-plan-derived-column@main).
-   The tables `tx_academicstudyplan_domain_model_category`,
    `tx_academicstudyplan_domain_model_semester` and
    `tx_academicstudyplan_domain_model_module` are workspace aware and get
    the columns `t3ver_oid`, `t3ver_wsid`, `t3ver_state` and
    `t3ver_stage` with an index. Until they are there, the backend list of
    the study plan categories and the frontend of every study plan fail with a
    database error. See [Important: Study plan records are now workspace aware](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:important-1787907823@main).

The comparison also applies the changes of the index definitions TYPO3
13.4.35 and 14.3.7 bring.

On SQLite two things differ:

-   `vendor/bin/typo3 extension:setup` can create the index over
    `t3ver_oid` and `t3ver_wsid` without adding the four columns,
    and reports success. Check afterwards that all three tables carry the four
    columns, and take the schema from a database built with the new state
    where they are missing.
-   The database analyzer can report "table … already exists" and "no such
    table: \_\_temp\_\_…" for the semester and module tables, because both changes
    rebuild those tables in one run. The tables end up complete with every
    value kept, and a second comparison offers nothing more.

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

The structure of the configuration is described in
[Breaking: Site sets and static templates have been restructured](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:breaking-site-sets-and-static-templates-restructured@main). The deprecated
static template path is described in
[Deprecation: The static template path of version 2.3](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:deprecation-legacy-static-template-path@main).

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

The console command `academic:upgrade:check` of **academic_base**
reads the stored configuration of the installation and reports what no longer
reaches the academic extensions. Run it on the staging copy right after the
package update. For this extension it reports, among others, a page that still
selects the page TSconfig file of 2.3, an import of a file that moved, a site
that depends on the alias set `fgtclb/academic-study-plan-default`, and
a site that delivers this extension through its site set and a static
template at once:

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

With the extension key and a site it also lists the template overrides of the
site that no longer match a file of this extension, or that are identical to
the shipped file:

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

Each finding, and what to do about it, is described in the [upgrade check](https://docs.typo3.org/p/fgtclb/academic-base/main/en-us/UpgradeCheck/Index.html#upgrade-check)
of **academic_base**.

### Page TSconfig of the content element {#upgrade-from-2-3-to-3-0-page-tsconfig}

The content element is hidden for the whole installation, as it was in 2.3,
and the page TSconfig of its component brings it back. The file version 2.3
registered for the page field **Include static Page TSconfig (from
extensions)** is gone, and the value a page record stored for it is not
rewritten. It simply stops resolving, without a message, and the content
element is no longer offered on that page tree.

For a site that does not depend on the site set of this extension, edit the
page record of every site root that selected
**Academic StudyPlan (Default) (academic_study_plan)**, tab
**Resources**, field **Include static Page TSconfig (from
extensions)**. Remove the old entry and select **Academic Study Plan:
All components (academic_study_plan)** instead. This query lists the page
records that still store the old value:

```sql
SELECT uid, pid, title FROM pages
WHERE tsconfig_includes LIKE '%academic_study_plan/Configuration/TsConfig/Default.tsconfig%';
```

See [Important: The page TSconfig directory is now spelled TSconfig](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:important-1787141400@main) as well.

Until a component is included, an existing content element of it keeps
rendering and keeps its type: **academic_base** shows the stored type
in the field **Type** followed by
**(not enabled on this page)**, and saving keeps it. The warning of the
2.4 changelog entry that saving such a record rewrites its type describes the
state before a fix that **academic_base** 2.4 carries as well, see
[its changelog entry](https://docs.typo3.org/p/fgtclb/academic-base/main/en-us/Changelog/2.4/Important-HiddenContentTypeStaysSelectable.html#important-ace-666-academic-base).
A content element that a page TSconfig of your own already turned into another
type is not repaired. Correct it by hand from its record history.

### Static template {#upgrade-from-2-3-to-3-0-static-template}

A `sys_template` record that selected **Academic StudyPlan
(Default)** in its field **Include TypoScript sets** on the tab
**Advanced Options** keeps delivering the content element. The entry
is listed as **Academic Study Plan: Path up to 2.3 (deprecated, use
All components) (academic_study_plan)** now and is removed in version 4.0.
Replace it with **Academic Study Plan: All components
(academic_study_plan)**.

### Site sets {#upgrade-from-2-3-to-3-0-site-sets}

A site that depends on `fgtclb/academic-study-plan-default` keeps
working. The set is an alias of the aggregate `fgtclb/academic-study-plan`
now, which the upgrade check reports as a notice and which goes away in version
4.0. Depend on `fgtclb/academic-study-plan` instead, see
[What the sets contain](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:configuration-components@main).

A site uses the site set or the static template, not both. With both, the
static template sets the constants of the extension back to their defaults
after the site settings, see [Do not combine both](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:one-mechanism-per-site@main).

### Imports in a site package {#upgrade-from-2-3-to-3-0-imports}

An `@import` of a file that moved loads nothing and reports no
error. Replace the old paths:

| Old path | New path |
| --- | --- |
| `EXT:academic_study_plan/Configuration/TypoScript/Includes/ContentElement.typoscript` | `EXT:academic_study_plan/Configuration/TypoScript/ContentElement/setup.typoscript` |
| `EXT:academic_study_plan/Configuration/TsConfig/Default.tsconfig` | `EXT:academic_study_plan/Configuration/TSconfig/ContentElement/page.tsconfig` |
| `EXT:academic_study_plan/Configuration/TsConfig/Includes/academic-study-plan.tsconfig` | `EXT:academic_study_plan/Configuration/TSconfig/ContentElement/page.tsconfig` |
| `EXT:academic_study_plan/Configuration/Sets/AcademicStudyPlan/setup.typoscript` | `EXT:academic_study_plan/Configuration/TypoScript/ContentElement/setup.typoscript` |
| `EXT:academic_study_plan/Configuration/Sets/AcademicStudyPlan/page.tsconfig` | `EXT:academic_study_plan/Configuration/TSconfig/ContentElement/page.tsconfig` |

Remove an import of
`EXT:academic_study_plan/Configuration/TypoScript/Includes/Page.typoscript`
without a replacement. It added the stylesheet and the script to every page.
In 3.0 there is no stylesheet, and the template loads the script itself.

The file [`Configuration/TypoScript/Default/setup.typoscript`](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/FileStructure/Configuration/TypoScript/Index.html#file-extension-configuration-typoscriptsetup-typoscript) still exists.
It is deprecated, keeps delivering the content element and is removed in
version 4.0. Replace an import of it with
`EXT:academic_study_plan/Configuration/TypoScript/ContentElement/setup.typoscript`.

The setup reads constants now. Import
`EXT:academic_study_plan/Configuration/TypoScript/ContentElement/constants.typoscript`
into the constants of the same template, or the content element cannot find its
template. That also applies to a site package that keeps importing the
deprecated [`Configuration/TypoScript/Default/setup.typoscript`](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/FileStructure/Configuration/TypoScript/Index.html#file-extension-configuration-typoscriptsetup-typoscript): it imports
the `constants.typoscript` of that folder as well.

### Template paths {#upgrade-from-2-3-to-3-0-template-paths}

The Fluid root paths of the content element are constants now:
`plugin.tx_academicstudyplan.view.templateRootPath`,
`partialRootPath` and `layoutRootPath`. An override of
`tt_content.academic_study_plan.templateRootPaths` keeps working.
Setting the constants is the shorter way.

### Label overrides {#upgrade-from-2-3-to-3-0-label-overrides}

Label overrides are read from `plugin.tx_academicstudyplan`, no
longer from `plugin.tx_academic_study_plan`. Move them:

```typoscript
# Before
plugin.tx_academic_study_plan._LOCAL_LANG.default.credits = ECTS

# After
plugin.tx_academicstudyplan._LOCAL_LANG.default.credits = ECTS
```

See [Important: Label overrides are read from the documented path](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:important-label-overrides-use-the-documented-path@main) and the list of
labels in [Labels](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:configuration-labels@main).

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

### Site stylesheet {#upgrade-from-2-3-to-3-0-stylesheet}

The study plan ships no stylesheet any more. The file
`EXT:academic_study_plan/Resources/Public/Css/academic-study-plan.css`
of 2.3 is removed, and the page loads no stylesheet for the element. Style it
in the site package. Three parts of the element do not work without rules of
the site:

-   A semester header shows the expand and the collapse glyph at the same
    time. The stylesheet shows one of them.
-   The collapsible filter stays on screen while it is collapsed whenever a
    rule of the site gives the filter list a `display`. The stylesheet
    needs `.ace-filter .ace-list[hidden] { display: none }`.
-   The accordion of a narrow viewport and the highlighting of a category have
    no visible effect. The script only writes the classes `open` and
    `highlighted`.

The stylesheet of the development instances of the academic extensions carries
the rules the extension shipped, adapted to the 3.0 markup. Copy what the site
needs and adapt it to the theme. See
[Breaking: The study plan ships no stylesheet](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:breaking-study-plan-ships-no-stylesheet@main), [Style the element](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:styling@main) and the example
in [An example](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:styling-example@main).

### Speaking classes and the layout {#upgrade-from-2-3-to-3-0-classes}

-   The templates carry speaking classes with the prefix `ace-` now, instead
    of the classes of the theme they were developed with. The content element
    keeps `academic-study-plan`, but loses `container`. The filter, the
    semesters, the modules and the dialog carry the classes the table of
    [Breaking: Study plan templates carry speaking classes](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:breaking-study-plan-speaking-frontend-classes@main) lists, the grid
    classes `row` and `col` stay. Move the selectors of the site stylesheet to
    the new classes. How the markup of the study plan is built up is described
    in [Styling](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:styling-markup@main), the class system of all academic extensions in
    the [Styling chapter of academic_base](https://docs.typo3.org/p/fgtclb/academic-base/main/en-us/Styling/Index.html#styling).
-   The content element renders through the `Default` layout of
    **fluid_styled_content**. Its header sits above the
    `.academic-study-plan` wrapper, inside the frame of the layout. A
    selector such as `.academic-study-plan header` becomes
    `.frame-type-academic_study_plan header`, see
    [Important: The study plan renders through the Default layout](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:important-study-plan-renders-through-the-default-layout@main).
-   A category title is rendered as text. A site that put markup into a
    category title to style its filter button styles the button of the filter
    instead, see [Important: A study plan category title is text, not markup](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:important-study-plan-category-title-is-text@main).

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

The record icons of the study plan are renamed, and the three controls of the
frontend are the shared action icons of **academic_base**:

| 2.3 identifier | 3.0 identifier |
| --- | --- |
| `academic-study-plan` | `tx-academicstudyplan-plugin-study-plan` |
| `academic-study-plan-category` | `tx-academicstudyplan-record-category` |
| `academic-study-plan-semester` | `tx-academicstudyplan-record-semester` |
| `academic-study-plan-module` | `tx-academicstudyplan-record-module` |
| `plus` | `tx-academicbase-action-expand` |
| `minus` | `tx-academicbase-action-collapse` |
| `close-button` | `tx-academicbase-action-close` |

The identifiers `plus`, `minus` and `close-button` of 2.3 were registered by
neither TYPO3 nor this extension, so 2.3 rendered the placeholder of a missing
icon in their place. A site package that registered icons under these names for
this element can drop them. Replace the other previous identifiers in TCA
overrides, page TSconfig, templates and selectors such as `.icon-plus`. A
site package that wants another drawing for a control registers it under the 3.0
identifier in its `Configuration/FrontendIcons.php`, not 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), and depends on **academic_base**. The
replacement then shows in every academic extension that renders the icon. See
[Breaking: The study plan icons are renamed and the controls are frontend icons](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:breaking-study-plan-control-icons-moved-to-the-frontend-icon-registry@main) and
[The glyphs of a semester header](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:templates-glyphs@main).

### The script {#upgrade-from-2-3-to-3-0-assets}

The script of the study plan is an ES module now, which the template of the
content element loads with `<f:asset.module>`, and only on a page that
renders a study plan. Remove own `includeCSS` or
`includeJSFooter` entries for
`EXT:academic_study_plan/Resources/Public/Css/academic-study-plan.css`
and `EXT:academic_study_plan/Resources/Public/JavaScript/academic-study-plan.js`.
The `frontend/` paths 2.4 used in between are gone as well, so there is
nothing to move them to. A classic script tag does not run the module. See
[Breaking: The study plan assets are loaded by the template, as module](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:breaking-frontend-assets-are-es-modules@main).

An installation that overrode the template only to leave out the script, or to
bring its own, sets `plugin.tx_academicstudyplan.assets.js` to off
instead and drops the copy, see [Skip the script](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:asset-switches@main).

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

The template
`Resources/Private/Frontend/Default/Templates/AcademicStudyPlan.html`
changed in 2.4 and in 3.0, and four partials are new in 3.0. A copy of the 2.3
template in a site package keeps rendering, but misses all of these changes.
Replace it with an override of the one partial it is really about, or start the
copy again from the 3.0 files. The paths below are relative to
`Resources/Private/`:

| File | What changed | Entry |
| --- | --- | --- |
| `Frontend/Default/Templates/AcademicStudyPlan.html` | Renders through `<f:layout name="Default" />` and wraps its markup in `<f:section name="Main">`. It no longer renders the partial `Header/All`, because the layout renders the header. | [Important: The study plan renders through the Default layout](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:important-study-plan-renders-through-the-default-layout@main) |
| `Frontend/Default/Templates/AcademicStudyPlan.html` and its partials | Translate the labels with `extensionName: 'AcademicStudyPlan'`, which is what makes the label overrides of the previous step apply. | [Important: Label overrides are read from the documented path](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:important-label-overrides-use-the-documented-path@main) |
| `Frontend/Default/Templates/AcademicStudyPlan.html` | Renders the filter, the semesters, the modules and the dialogs through the partials `StudyPlan/Filter`, `StudyPlan/Semester`, `StudyPlan/Module` and `StudyPlan/ModuleDialog`, and marks every part the script drives with a `data-study-plan-*` attribute. | [Feature: Study plan partials and a markup contract](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:feature-study-plan-partials-and-data-attributes@main) |
| `Frontend/Default/Templates/AcademicStudyPlan.html` | Loads the script with `<f:asset.module>` inside an `<f:if>` on `settings.assets.js`, and registers no stylesheet. | [Skip the script](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:asset-switches@main) |
| `Frontend/Default/Partials/StudyPlan/Filter.html` | Renders the item the script clones with the attribute `hidden`, so its placeholder text never shows. | [Important: The study plan filter template item is hidden](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:important-study-plan-filter-template-item-is-hidden@main) |
| `Frontend/Default/Partials/StudyPlan/Semester.html`, `Frontend/Default/Partials/StudyPlan/ModuleDialog.html` | Render the controls with `<ab:icon>` of **academic_base** and the 3.0 identifiers, no longer with `<core:icon>`. | [The glyphs of a semester header](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:templates-glyphs@main) |
| `Frontend/Default/Partials/StudyPlan/Semester.html`, `Frontend/Default/Partials/StudyPlan/Module.html`, `Frontend/Default/Partials/StudyPlan/ModuleDialog.html` | Receive `idPrefix` and start the dialog id with it, so a plan shown again through an "Insert records" element opens its own dialogs. | [Important: A study plan shown again gets dialog ids of its own](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:important-study-plan-dialog-ids-in-inserted-records@main) |
| `Frontend/Default/Partials/StudyPlan/Module.html` | The hidden text of the module button names the note and the credit points of a semester only when the semester has them. | [Important: Module buttons announce only what a semester has](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:important-ace-836-academic-study-plan@main) |

The script still finds the parts of an override by the class names of 2.3 when
it carries none of the data attributes, but that fallback is deprecated and is
removed in version 4.0. Add the attributes on the elements
[The data attributes](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:templates-attributes@main) names. See
[Deprecation: The study plan class selectors](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:deprecation-study-plan-class-selectors@main).

The upgrade check with the extension key and the site lists the overrides of a
site that no longer match a file of the extension, see
[The upgrade check](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:upgrade-from-2-3-to-3-0-upgrade-check@main).

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

### A script of your own {#upgrade-from-2-3-to-3-0-own-script}

An installation that drives the study plan with a script of its own, with
`plugin.tx_academicstudyplan.assets.js` switched off or from a copy of
the template, takes the attribute `hidden` off every filter item it
builds from the template item, as the shipped script does:

```javascript
item.removeAttribute('hidden');
```

Without it, the filter shows no button at all. See
[Important: The study plan filter template item is hidden](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:important-study-plan-filter-template-item-is-hidden@main) and
[Feature: The study plan script can be switched off](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:feature-study-plan-assets-can-be-switched-off@main).

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

-   The new content element wizard offers the element as
    **Study Plan** on every site that should offer it, with a new
    description, see [Important: Content elements have new titles and descriptions](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:important-content-element-titles-and-descriptions@main).
-   The backend list of the study plan categories opens, and a translated
    study plan renders. Both fail while the workspace columns are missing.
-   Existing study plans render, with their credit points unchanged. A
    semester or module accepts a credit point value such as 2.5 in the
    backend.
-   The study plan renders inside the frame of the `Default` layout. The
    settings of the tab **Appearance** take effect now, and on an
    installation whose editors used that tab long ago, spacing, frames and the
    **Link to top** link may appear where they were chosen.
-   The category, semester and module records show icons in the text colour of
    the backend, also in a dark colour scheme, see
    [Important: Record icons follow the backend colour scheme](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:important-study-plan-record-icons-follow-the-colour-scheme@main).
-   A semester header shows one glyph, the filter highlights the modules of a
    category, and a module opens its dialog. The browser loads the module
    `@fgtclb/academic-study-plan/frontend/academic-study-plan.js` only on
    pages with a study plan, and no stylesheet of the extension.
-   On an installation that uses workspaces, the live site no longer shows
    semesters, modules or categories that only exist as a draft in a
    workspace, and a workspace preview shows the workspace state, see
    [Important: The study plan frontend is now workspace aware](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:important-1787924557@main).
-   The upgrade check exits with `0`, without the extension key and with
    it for every site that renders a study plan, see
    [The upgrade check](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:upgrade-from-2-3-to-3-0-upgrade-check@main).
