---
title: "3.0 Changes"
manual: "Academic Profiles"
version: "main"
source: "Changelog/3.0/Index.rst"
rendered: "2026-10-02T20:47:49+00:00"
noindex: true
---

# 3.0 Changes {#3-0-changes}

**Table of contents**

-   [Breaking Changes](#breaking-changes)
-   [Features](#features)
-   [Deprecation](#deprecation)
-   [Important](#important)

## Breaking Changes {#breaking-changes}

-   [Breaking: The contract field "publish" has been removed](Breaking-ContractPublishFieldRemoved.html#breaking-the-contract-field-publish-has-been-removed)
-   [Breaking: Person records are workspace aware](Breaking-PersonRecordsAreWorkspaceAware.html#breaking-person-records-are-workspace-aware-1)
-   [Breaking: The persons plugin action context extends the one of academic_base](Breaking-PluginControllerActionContextInterfaceExtendsBase.html#breaking-the-persons-plugin-action-context-extends-the-one-of-academic-base)
-   [Breaking: Extbase plugins require CType on TYPO3 v14](Breaking-PluginsRequireCTypeOnTYPO3V14.html#breaking-extbase-plugins-require-ctype-on-typo3-v14)
-   [Breaking: The plugins call different repository finders](Breaking-ProfileAndContractFinderSignatures.html#breaking-the-plugins-call-different-repository-finders)
-   [Breaking: The profile image translates](Breaking-ProfileImageIsTranslatable.html#breaking-the-profile-image-translates)
-   [Breaking: Profile images render as a responsive picture](Breaking-ProfileImagesRenderAsPicture.html#breaking-profile-images-render-as-a-responsive-picture)
-   [Breaking: The partials of the detail view change](Breaking-PublicProfileDetailPartials.html#breaking-the-partials-of-the-detail-view-change)
-   [Breaking: The list, detail and selection events of the plugins are gone](Breaking-RemovedProfileViewEvents.html#breaking-the-list-detail-and-selection-events-of-the-plugins-are-gone)
-   [Breaking: Removed TYPO3 v12 support](Breaking-RemovedTYPO3V12Support.html#breaking-removed-typo3-v12-support-1)
-   [Breaking: Section-based AcademicPersons settings](Breaking-SectionBasedAcademicPersonsSettings.html#breaking-section-based-academicpersons-settings)
-   [Breaking: Settings apply after the TCA overrides](Breaking-SettingsApplyAfterTcaOverrides.html#breaking-settings-apply-after-the-tca-overrides)
-   [Breaking: Settings files merge recursively](Breaking-SettingsFilesMergeRecursively.html#breaking-settings-files-merge-recursively-1)

## Features {#features}

-   [Feature: Configurable document rows and actions](Feature-ConfigurableDocumentRowsAndActions.html#feature-configurable-document-rows-and-actions-1)
-   [Feature: Configure what frontend users synchronise](Feature-ConfigurableFrontendUserMapping.html#feature-configure-what-frontend-users-synchronise)
-   [Feature: Configurable public profile](Feature-ConfigurablePublicProfile.html#feature-configurable-public-profile-1)
-   [Feature: Choose which contracts a profile shows](Feature-ContractDisplayPolicy.html#feature-choose-which-contracts-a-profile-shows)
-   [Feature: Office hours and the function type on the profile page](Feature-DetailOfficeHoursAndFunctionType.html#feature-office-hours-and-the-function-type-on-the-profile-page)
-   [Feature: Synchronise the organisational unit and function type](Feature-FrontendUserRelationMapping.html#feature-synchronise-the-organisational-unit-and-function-type)
-   [Feature: Events to add data to the synchronisation and adjust profiles](Feature-FrontendUserSyncDataEvents.html#feature-events-to-add-data-to-the-synchronisation-and-adjust-profiles)
-   [Feature: Contracts and profile information can be hidden](Feature-HideContractsAndProfileInformation.html#feature-contracts-and-profile-information-can-be-hidden)
-   [Feature: Import identifiers are shown, searchable and can be looked up](Feature-ImportIdentifierLookup.html#feature-import-identifiers-are-shown-searchable-and-can-be-looked-up)
-   [Feature: Legacy settings overlay and migration command](Feature-LegacySettingsOverlayAndMigrationCommand.html#feature-legacy-settings-overlay-and-migration-command-1)
-   [Feature: The selected letter can link back to the whole list](Feature-LetterNavigationActiveLetterReset.html#feature-the-selected-letter-can-link-back-to-the-whole-list)
-   [Feature: The letter navigation knows which letters lead somewhere](Feature-LetterNavigationAvailability.html#feature-the-letter-navigation-knows-which-letters-lead-somewhere)
-   [Feature: Navigation links keep the visitor's list choices](Feature-ListLinksKeepState.html#feature-navigation-links-keep-the-visitor-s-list-choices)
-   [Feature: The list elements render their view modes](Feature-ListViewModes.html#feature-the-list-elements-render-their-view-modes)
-   [Feature: Lock the fields a synchronisation owns per record](Feature-ManagedFieldsReadOnlyInTheBackend.html#feature-lock-the-fields-a-synchronisation-owns-per-record)
-   [Feature: Decide what a profile image's metadata will be](Feature-ModifyProfileImageMetadataEvent.html#feature-decide-what-a-profile-image-s-metadata-will-be)
-   [Feature: Named crop variants for the profile image](Feature-NamedCropVariants.html#feature-named-crop-variants-for-the-profile-image)
-   [Feature: A prefix for phone link targets](Feature-PhoneLinkTargetPrefix.html#feature-a-prefix-for-phone-link-targets)
-   [Feature: The plugins can render the content element header](Feature-PluginsCanRenderContentElementHeader.html#feature-the-plugins-can-render-the-content-element-header)
-   [Feature: The plugins dispatch the plugin view event](Feature-PluginViewEvent.html#feature-the-plugins-dispatch-the-plugin-view-event)
-   [Feature: Narrow the profiles and contracts a plugin shows](Feature-ProfileAndContractQueryEvents.html#feature-narrow-the-profiles-and-contracts-a-plugin-shows)
-   [Feature: Command to hide or delete profiles of inactive frontend users](Feature-ProfileCleanupCommand.html#feature-command-to-hide-or-delete-profiles-of-inactive-frontend-users)
-   [Feature: Crop variant and placeholder of a profile image](Feature-ProfileImageSettings.html#feature-crop-variant-and-placeholder-of-a-profile-image)
-   [Feature: Import writer for persons of another source](Feature-ProfileImportWriter.html#feature-import-writer-for-persons-of-another-source)
-   [Feature: The profile update event carries the site and the origin](Feature-ProfileUpdateEventCarriesSiteAndOrigin.html#feature-the-profile-update-event-carries-the-site-and-the-origin)
-   [Feature: Profile updates from user data announce themselves](Feature-ProfileUpdatesFromUserDataAnnounceThemselves.html#feature-profile-updates-from-user-data-announce-themselves-1)
-   [Feature: Restrict the backend contract selects](Feature-RestrictTheBackendContractSelects.html#feature-restrict-the-backend-contract-selects-1)
-   [Feature: Settings declare project fields of the profile](Feature-SettingsDeclareProjectProfileFields.html#feature-settings-declare-project-fields-of-the-profile)
-   [Feature: Settings overrides are reported and shrunk](Feature-SettingsOverrideReportAndDelta.html#feature-settings-overrides-are-reported-and-shrunk)
-   [Feature: A filter form and speaking URLs for the visitor list](Feature-VisitorFilterFormAndRoutes.html#feature-a-filter-form-and-speaking-urls-for-the-visitor-list)
-   [Feature: Visitors filter the list by function type and by unit](Feature-VisitorListFilter.html#feature-visitors-filter-the-list-by-function-type-and-by-unit)

## Deprecation {#deprecation}

-   [Deprecation: The plugin action context of academic_persons](Deprecation-PersonsPluginControllerActionContext.html#deprecation-the-plugin-action-context-of-academic-persons)

## Important {#important}

-   [Important: Strict language fallback for selected profiles](Important-88886-StrictLanguageFallbackForSelectedProfiles.html#important-strict-language-fallback-for-selected-profiles)
-   [Important: Backend saves announce profile updates](Important-BackendSavesAnnounceProfileUpdates.html#important-backend-saves-announce-profile-updates-1)
-   [Important: findAll of contact and profile information orders by uid](Important-ContactFindAllOrdersByUid.html#important-findall-of-contact-and-profile-information-orders-by-uid)
-   [Important: List items render office hours as HTML](Important-ContractFieldOfficeHoursRenderAsHtml.html#important-list-items-render-office-hours-as-html)
-   [Important: Contract rows render the unit and dialable phones](Important-ContractFieldsRenderTheUnitAndTelTargets.html#important-contract-rows-render-the-unit-and-dialable-phones)
-   [Important: The contract publish wizard has to be registered by hand](Important-ContractPublishToHiddenWizard.html#important-the-contract-publish-wizard-has-to-be-registered-by-hand)
-   [Important: Contract relation columns are NOT NULL now](Important-ContractRelationColumnsAreNotNullable.html#important-contract-relation-columns-are-not-null-now)
-   [Important: A created profile is translated again](Important-CreatedProfilesAreSynchronizedIntoTranslations.html#important-a-created-profile-is-translated-again)
-   [Important: Letters without profiles are disabled in the letter navigation](Important-LetterNavigationMarkup.html#important-letters-without-profiles-are-disabled-in-the-letter-navigation)
-   [Important: The profile queries see a letter switching off the pagination](Important-LetterSwitchesPaginationBeforeTheQuery.html#important-the-profile-queries-see-a-letter-switching-off-the-pagination)
-   [Important: TYPO3 13.4.35 or 14.3.7 is required](Important-MinimumTYPO3Versions.html#important-typo3-13-4-35-or-14-3-7-is-required)
-   [Important: No letter navigation for a manual selection](Important-NoLetterNavigationForAManualSelection.html#important-no-letter-navigation-for-a-manual-selection-1)
-   [Important: Organisational units are searchable on TYPO3 v13](Important-OrganisationalUnitsAreSearchableOnTypo3V13.html#important-organisational-units-are-searchable-on-typo3-v13-1)
-   [Important: An organisational unit sorts its contracts on its own](Important-OrganisationalUnitSortsItsContracts.html#important-an-organisational-unit-sorts-its-contracts-on-its-own)
-   [Important: A paginated selection keeps its order](Important-PaginatedSelectionKeepsItsOrder.html#important-a-paginated-selection-keeps-its-order)
-   [Important: FlexForm paths change for the plugin structures](Important-PluginFlexFormsAreSplitPerCoreVersion.html#important-flexform-paths-change-for-the-plugin-structures)
-   [Important: The timeline year fields are constrained](Important-ProfileInformationYearRange.html#important-the-timeline-year-fields-are-constrained)
-   [Important: The profile item and list are built from partials](Important-ProfileItemAndListPartials.html#important-the-profile-item-and-list-are-built-from-partials)
-   [Important: Label changes of the public profile](Important-PublicProfileLabelChanges.html#important-label-changes-of-the-public-profile)
-   [Important: Record icons follow the backend colour scheme](Important-RecordIconsFollowTheColourScheme.html#important-record-icons-follow-the-backend-colour-scheme)
-   [Important: Remaining unordered queries now order by uid](Important-RemainingUnorderedQueriesOrderByUid.html#important-remaining-unordered-queries-now-order-by-uid)
-   [Important: Route enhancers have to be limited to their pages](Important-RouteEnhancersLimitToPages.html#important-route-enhancers-have-to-be-limited-to-their-pages)
-   [Important: The selected profiles sheet is titled again](Important-SelectedProfilesSheetTitle.html#important-the-selected-profiles-sheet-is-titled-again)
-   [Important: Profile synchronization ignores the visibility window](Important-SynchronizationIgnoresTheVisibilityWindow.html#important-profile-synchronization-ignores-the-visibility-window)
-   [Important: Translation sync covers child exclude columns](Important-TranslationSyncCoversChildExcludeColumns.html#important-translation-sync-covers-child-exclude-columns-1)
-   [Important: Translation sync is routed through the DataHandler](Important-TranslationSyncRoutedThroughDataHandler.html#important-translation-sync-is-routed-through-the-datahandler)
-   [Important: Unordered profile queries now order by uid](Important-UnorderedQueriesOrderByUid.html#important-unordered-profile-queries-now-order-by-uid)
-   [Important: Validation primitives moved to EXT:academic_base](Important-ValidationPrimitivesMovedToAcademicBase.html#important-validation-primitives-moved-to-ext-academic-base)
