Liferay DXP 2026.Q2 Breaking Changes
Breaking changes break or significantly alter existing functionality or code structure. Here are all of the breaking changes for Liferay DXP 2026.Q2. As the product changes and improves, we try our best to minimize these disruptions, but sometimes they are unavoidable.
Changes in Liferay DXP
Here is a list of changes that break or significantly alter existing functionality within Liferay.
| Breaking Changes | Description | References |
|---|---|---|
| Indexer Implementation Changes | Many APIs related to indexing and search are optimized and refactored, including removed methods and interfaces. See the Indexer and BaseIndexer entries under LPD-83771 below for the source-level details. | LPD-75117, LPD-83771 |
| Liferay Developer Studio: Liferay IDE AlloyUI | Development tooling for the AlloyUI framework is removed. You can use the Web Tools Platform to provide similar functionality, though you must configure it to enable auto-complete and syntax highlighting for AlloyUI. You can also use third-party plugins on the Eclipse Marketplace with robust JavaScript support, using the tag metadata here. | LPD-74745 |
| Liferay Developer Studio: Liferay Upgrade Planner | The Liferay Upgrade Planner (for migrating code from older versions of Liferay) is removed. Instead, see the reference documentation for breaking changes and deprecations, and use the upgradeSourceCode Blade command to help automate code migrations. | LPD-74745 |
| Liferay Developer Studio: XML Search | The XPath-based search tab in the Search menu is removed. If you need XPath-based search functionality for XML files, you can find third-party plugins on the Eclipse Marketplace. | LPD-74745 |
| Page Management Rules | The option to add page management rules was erroneously exposed in the UI without the correct feature flag, and some settings were not yet fully functional. This behavior shipped in the 2026.Q1.4 patch and continues in 2026.Q2: the option is hidden behind a release feature flag. Previous configurations made before this change are no longer accessible or supported. | LPD-85335 |
| Partitioned Virtual Instances | File system artifacts are now deleted when a virtual instance is removed with database partitioning enabled, including document library files, search indexes, and configuration files. If you have database partitioning enabled, ensure any required data is backed up before deleting a partition. | LPD-50166 |
| Petra Utility Classes | Utility classes that were previously duplicated between portal-kernel and Petra libraries (petra-io, petra-string, etc.) are removed from portal-kernel to simplify the code. If you used these utilities, adapt your usages to the equivalent Petra classes to keep the same behavior. | LPD-82072 |
Service Builder: PrevAndNext | All findBy*_PrevAndNext and filterFindBy*_PrevAndNext methods are removed from generated persistence classes (*Persistence, *PersistenceImpl, and *Util) for entities using Service Builder 7.4+. If you used these finder methods in your logic, either fetch the current entity using findByPrimaryKey and retrieve the full matching list with findBy* methods (recommended), or use dslQuery with a limit of 1 to execute one query fetching the previous entry and another fetching the next entry. | LPD-83108 |
| Site Pages Matching Layout IDs | Site page exports no longer include a page’s friendly URL when the URL is a numeric value equal to that page’s layout ID. Previously, re-importing such pages into a target site whose layouts happened to use the same numeric IDs could fail with LayoutFriendlyURLException. If you depend on numeric friendly URLs surviving an export, set a non-numeric friendly URL before exporting. | LPD-74331 |
Changes in Module Source
CommerceShippingFixedOptionRelLocalServiceImpl.java
modules/apps/commerce/commerce-shipping-engine-fixed-service/src/main/java/com/liferay/commerce/shipping/engine/fixed/service/impl/CommerceShippingFixedOptionRelLocalServiceImpl.java
- Date: Feb. 6, 2026
- Ticket: LPD-71919
- What changed: The
addCommerceShippingFixedOptionRelandupdateCommerceShippingFixedOptionRelmethods have their parameters sorted. Additionally, the deprecatedaddCommerceShippingFixedOptionRelis removed. - Reason: This change is required to reflect the service API changes for
CommerceShippingFixedOptionRel. The deprecated method is no longer used.
CommerceShippingFixedOptionRelServiceImpl.java
modules/apps/commerce/commerce-shipping-engine-fixed-service/src/main/java/com/liferay/commerce/shipping/engine/fixed/service/impl/CommerceShippingFixedOptionRelServiceImpl.java
- Date: Feb. 6, 2026
- Ticket: LPD-71919
- What changed: The
addCommerceShippingFixedOptionRelandupdateCommerceShippingFixedOptionRelmethods have their parameters sorted. Additionally, the deprecatedaddCommerceShippingFixedOptionRelis removed. - Reason: This change is required to reflect the service API changes for
CommerceShippingFixedOptionRel. The deprecated method is no longer used.
service.xml
modules/apps/marketplace/marketplace-service/service.xml
- Date: Feb. 7, 2026
- Ticket: LPD-25552
- What changed: The app and module finders now have unique or collection return types.
- Reason: This change is required because non-unique, single finders can cause inconsistent persistence and duplicate entries.
SegmentsExperienceModel.java
modules/apps/segments/segments-api/src/main/java/com/liferay/segments/model/SegmentsExperienceModel.java
- Date: Feb. 7, 2026
- Ticket: LPD-73850
- What changed: The
segmentsEntryIdcolumn is removed, and replaced withsegmentsEntryERCandsegmentsEntryScopeERC. - Reason: This change supports better portability for staging and LAR exports/imports, by allowing lazy referencing of
SegmentsEntryvia External Reference Code (ERC) instead of a hard primary key database reference.
PipelineAggregationTranslator.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/pipeline/PipelineAggregationTranslator.java
- Date: Feb. 10, 2026
- Ticket: LPD-78663
- What changed: The
PipelineAggregationTranslatorinterface is removed. - Reason: The interface was not used. Only the implementation classes are directly used within their own internal module classes.
StatsResponse.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/stats/StatsResponse.java
- Date: Feb. 10, 2026
- Ticket: LPD-78663
- What changed:
StatsResponseis now an implementation class instead of an interface, andStatsResponseImplis merged into it. - Reason:
StatsResponseis a data object class, so there is no reason to separate the implementation.
StatsResponseBuilder.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/stats/StatsResponseBuilder.java
- Date: Feb. 10, 2026
- Ticket: LPD-78663
- What changed:
StatsResponseBuilderis now an implementation class instead of an interface, andStatsResponseBuilderImplis merged into it. - Reason:
StatsResponseBuilderis a data object class, so there is no reason to separate the implementation.
ObjectDefinitionLocalServiceImpl.java
modules/apps/object/object-service/src/main/java/com/liferay/object/service/impl/ObjectDefinitionLocalServiceImpl.java
- Date: Feb. 10, 2026
- Ticket: LPD-77985
- What changed: The
addSystemObjectDefinitionmethod has a newbooleanparameter,enableObjectEntryHistory. - Reason: This change enables tracking for modifiable system objects in CMP, by setting
enableObjectEntryHistorytotrue.
ProgressBarTag.java
modules/apps/frontend-taglib/frontend-taglib-clay/src/main/java/com/liferay/frontend/taglib/clay/servlet/taglib/ProgressBarTag.java
- Date: Feb. 10, 2026
- Ticket: LPD-71688
- What changed:
ProgressBarTaguses a new major version to reflect breaking changes in Clay CSS. - Reason: This change ensures proper accessibility and alignment of the progress bar component.
HeaderTag.java
modules/apps/commerce/commerce-frontend-taglib/src/main/java/com/liferay/commerce/frontend/taglib/servlet/taglib/HeaderTag.java
- Date: Feb. 11, 2026
- Ticket: LPD-78104
- What changed: All names with
*Urlare renamed to*URL. - Reason: This change enforces consistent naming standards.
InfoBoxTag.java
modules/apps/commerce/commerce-frontend-taglib/src/main/java/com/liferay/commerce/frontend/taglib/servlet/taglib/InfoBoxTag.java
- Date: Feb. 11, 2026
- Ticket: LPD-78104
- What changed: All names with
*Urlare renamed to*URL. - Reason: This change enforces consistent naming standards.
PanelTag.java
modules/apps/commerce/commerce-frontend-taglib/src/main/java/com/liferay/commerce/frontend/taglib/servlet/taglib/PanelTag.java
- Date: Feb. 11, 2026
- Ticket: LPD-78104
- What changed: All names with
*Urlare renamed to*URL. - Reason: This change enforces consistent naming standards.
LayoutStructureRendererConstants.java
modules/apps/layout/layout-taglib/src/main/java/com/liferay/layout/taglib/constants/LayoutStructureRendererConstants.java
- Date: Feb. 11, 2026
- Ticket: LPD-78234
- What changed: The
LAYOUT_DEFAULT_EXTERNAL_REFERENCE_CODEconstant value is removed. - Reason: This constant is no longer used.
AggregationTranslator.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/AggregationTranslator.java
- Date: Feb. 11, 2026
- Ticket: LPD-78941
- What changed: The
AggregationTranslatorinterface is removed. - Reason: The interface was not used. Only the implementation classes are directly used within their own internal module classes.
Script.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/script/Script.java
- Date: Feb. 11, 2026
- Ticket: LPD-78941
- What changed:
Scriptis now an implementation class instead of an interface, andScriptImplis merged into it. - Reason:
Scriptis a POJO, so there is no reason to separate the implementation.
ScriptBuilder.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/script/ScriptBuilder.java
- Date: Feb. 11, 2026
- Ticket: LPD-78941
- What changed:
ScriptBuilderis now an implementation class instead of an interface, andScriptBuilderImplis merged into it. - Reason:
ScriptBuilderis a POJO, so there is no reason to separate the implementation.
ScriptField.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/script/ScriptField.java
- Date: Feb. 11, 2026
- Ticket: LPD-78941
- What changed:
ScriptFieldis now an implementation class instead of an interface, andScriptFieldImplis merged into it. - Reason:
ScriptFieldis a POJO, so there is no reason to separate the implementation.
ScriptFieldBuilder.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/script/ScriptFieldBuilder.java
- Date: Feb. 11, 2026
- Ticket: LPD-78941
- What changed:
ScriptFieldBuilderis now an implementation class instead of an interface, andScriptFieldBuilderImplis merged into it. - Reason:
ScriptFieldBuilderis a POJO, so there is no reason to separate the implementation.
Scripts.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/script/Scripts.java
- Date: Feb. 11, 2026
- Ticket: LPD-78941
- What changed:
Scriptsis now an implementation class instead of an interface, andScriptsImplis merged into it. - Reason:
Scriptsis a POJO, so there is no reason to separate the implementation.
CircleShape.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/geolocation/CircleShape.java
- Date: Feb. 11, 2026
- Ticket: LPD-79074
- What changed:
CircleShapeis now an implementation class instead of an interface, andCircleShapeImplis merged into it. - Reason:
CircleShapeis a POJO, so there is no reason to separate the implementation.
CircleShapeBuilder.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/geolocation/CircleShapeBuilder.java
- Date: Feb. 11, 2026
- Ticket: LPD-79074
- What changed:
CircleShapeBuilderis now an implementation class instead of an interface, andCircleShapeBuilderImplis merged into it. - Reason:
CircleShapeBuilderis a POJO, so there is no reason to separate the implementation.
Coordinate.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/geolocation/Coordinate.java
- Date: Feb. 11, 2026
- Ticket: LPD-79074
- What changed:
Coordinateis now an implementation class instead of an interface, andCoordinateImplis merged into it. - Reason:
Coordinateis a POJO, so there is no reason to separate the implementation.
EnvelopeShape.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/geolocation/EnvelopeShape.java
- Date: Feb. 11, 2026
- Ticket: LPD-79074
- What changed:
EnvelopeShapeis now an implementation class instead of an interface, andEnvelopeShapeImplis merged into it. - Reason:
EnvelopeShapeis a POJO, so there is no reason to separate the implementation.
EnvelopeShapeBuilder.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/geolocation/EnvelopeShapeBuilder.java
- Date: Feb. 11, 2026
- Ticket: LPD-79074
- What changed:
EnvelopeShapeBuilderis now an implementation class instead of an interface, andEnvelopeShapeBuilderImplis merged into it. - Reason:
EnvelopeShapeBuilderis a POJO, so there is no reason to separate the implementation.
GeoBuilders.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/geolocation/GeoBuilders.java
- Date: Feb. 11, 2026
- Ticket: LPD-79074
- What changed:
GeoBuildersis now an implementation class instead of an interface, andGeoBuildersImplis merged into it. - Reason:
GeoBuildersis a POJO, so there is no reason to separate the implementation.
GeoDistance.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/geolocation/GeoDistance.java
- Date: Feb. 11, 2026
- Ticket: LPD-79074
- What changed:
GeoDistanceis now an implementation class instead of an interface, andGeoDistanceImplis merged into it. - Reason:
GeoDistanceis a POJO, so there is no reason to separate the implementation.
GeoLocationPoint.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/geolocation/GeoLocationPoint.java
- Date: Feb. 11, 2026
- Ticket: LPD-79074
- What changed:
GeoLocationPointis now an implementation class instead of an interface, andGeoLocationPointImplis merged into it. - Reason:
GeoLocationPointis a POJO, so there is no reason to separate the implementation.
GeometryCollectionShape.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/geolocation/GeometryCollectionShape.java
- Date: Feb. 11, 2026
- Ticket: LPD-79074
- What changed:
GeometryCollectionShapeis now an implementation class instead of an interface, andGeometryCollectionShapeImplis merged into it. - Reason:
GeometryCollectionShapeis a POJO, so there is no reason to separate the implementation.
GeometryCollectionShapeBuilder.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/geolocation/GeometryCollectionShapeBuilder.java
- Date: Feb. 11, 2026
- Ticket: LPD-79074
- What changed:
GeometryCollectionShapeBuilderis now an implementation class instead of an interface, andGeometryCollectionShapeBuilderImplis merged into it. - Reason:
GeometryCollectionShapeBuilderis a POJO, so there is no reason to separate the implementation.
LineStringShape.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/geolocation/LineStringShape.java
- Date: Feb. 11, 2026
- Ticket: LPD-79074
- What changed:
LineStringShapeis now an implementation class instead of an interface, andLineStringShapeImplis merged into it. - Reason:
LineStringShapeis a POJO, so there is no reason to separate the implementation.
LineStringShapeBuilder.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/geolocation/LineStringShapeBuilder.java
- Date: Feb. 11, 2026
- Ticket: LPD-79074
- What changed:
LineStringShapeBuilderis now an implementation class instead of an interface, andLineStringShapeBuilderImplis merged into it. - Reason:
LineStringShapeBuilderis a POJO, so there is no reason to separate the implementation.
MultiLineStringShape.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/geolocation/MultiLineStringShape.java
- Date: Feb. 11, 2026
- Ticket: LPD-79074
- What changed:
MultiLineStringShapeis now an implementation class instead of an interface, andMultiLineStringShapeImplis merged into it. - Reason:
MultiLineStringShapeis a POJO, so there is no reason to separate the implementation.
MultiLineStringShapeBuilder.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/geolocation/MultiLineStringShapeBuilder.java
- Date: Feb. 11, 2026
- Ticket: LPD-79074
- What changed:
MultiLineStringShapeBuilderis now an implementation class instead of an interface, andMultiLineStringShapeBuilderImplis merged into it. - Reason:
MultiLineStringShapeBuilderis a POJO, so there is no reason to separate the implementation.
MultiPointShape.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/geolocation/MultiPointShape.java
- Date: Feb. 11, 2026
- Ticket: LPD-79074
- What changed:
MultiPointShapeis now an implementation class instead of an interface, andMultiPointShapeImplis merged into it. - Reason:
MultiPointShapeis a POJO, so there is no reason to separate the implementation.
MultiPointShapeBuilder.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/geolocation/MultiPointShapeBuilder.java
- Date: Feb. 11, 2026
- Ticket: LPD-79074
- What changed:
MultiPointShapeBuilderis now an implementation class instead of an interface, andMultiPointShapeBuilderImplis merged into it. - Reason:
MultiPointShapeBuilderis a POJO, so there is no reason to separate the implementation.
MultiPolygonShape.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/geolocation/MultiPolygonShape.java
- Date: Feb. 11, 2026
- Ticket: LPD-79074
- What changed:
MultiPolygonShapeis now an implementation class instead of an interface, andMultiPolygonShapeImplis merged into it. - Reason:
MultiPolygonShapeis a POJO, so there is no reason to separate the implementation.
PointShape.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/geolocation/PointShape.java
- Date: Feb. 11, 2026
- Ticket: LPD-79074
- What changed:
PointShapeis now an implementation class instead of an interface, andPointShapeImplis merged into it. - Reason:
PointShapeis a POJO, so there is no reason to separate the implementation.
PointShapeBuilder.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/geolocation/PointShapeBuilder.java
- Date: Feb. 11, 2026
- Ticket: LPD-79074
- What changed:
PointShapeBuilderis now an implementation class instead of an interface, andPointShapeBuilderImplis merged into it. - Reason:
PointShapeBuilderis a POJO, so there is no reason to separate the implementation.
PolygonShape.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/geolocation/PolygonShape.java
- Date: Feb. 11, 2026
- Ticket: LPD-79074
- What changed:
PolygonShapeis now an implementation class instead of an interface, andPolygonShapeImplis merged into it. - Reason:
PolygonShapeis a POJO, so there is no reason to separate the implementation.
PolygonShapeBuilder.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/geolocation/PolygonShapeBuilder.java
- Date: Feb. 11, 2026
- Ticket: LPD-79074
- What changed:
PolygonShapeBuilderis now an implementation class instead of an interface, andPolygonShapeBuilderImplis merged into it. - Reason:
PolygonShapeBuilderis a POJO, so there is no reason to separate the implementation.
CookiesPreferenceHandlingConfiguration.java
modules/apps/cookies/cookies-api/src/main/java/com/liferay/cookies/configuration/CookiesPreferenceHandlingConfiguration.java
- Date: Feb. 11, 2026
- Ticket: LPD-78076
- What changed: The new
cookie-store-consentconfiguration is added. - Reason: This change enables persisting users’ consent to save cookies.
CookiesConfigurationProvider.java
modules/apps/cookies/cookies-api/src/main/java/com/liferay/cookies/configuration/CookiesConfigurationProvider.java
- Date: Feb. 11, 2026
- Ticket: LPD-78076
- What changed: The
updateCookiesPreferenceHandlingConfigurationmethod has a newbooleanparameter,storeConsent. Additionally, the newisCookiesPreferenceHandlingStoreConsentmethod is added. - Reason: This change supports the new configuration option to store users’ consent to save cookies.
rest-openapi.yaml
modules/apps/headless/headless-admin-site/headless-admin-site-impl/rest-openapi.yaml
- Date: Feb. 11, 2026
- Ticket: LPD-69121
- What changed: The schema used to model the page element background image is now the new
BackgroundImageValueschema, instead ofFragmentImage. - Reason: This change enforces schema reuse and improved model structure.
rest-openapi.yaml
modules/apps/bulk/bulk-rest-impl/rest-openapi.yaml
- Date: Feb. 12, 2026
- Ticket: LPD-75297
- What changed: The
StatusBulkActionschema now treats statuses asStringvalues instead of integers. - Reason: This change accounts for statuses that are not numbers.
AgentsFactory.java
modules/dxp/apps/ai-hub/ai-hub-impl/src/main/java/com/liferay/ai/hub/internal/agent/AgentsFactory.java
- Date: Feb. 12, 2026
- Ticket: LPD-78066
- What changed: The
AgentsFactoryclass is removed. Instead, use the_createInternalAgentsmethod inSupervisorAgentImpl. - Reason: Agent definitions now come from simplified object classes, so a factory to create sub-agent lists is no longer needed.
SupervisorAgent.java
modules/dxp/apps/ai-hub/ai-hub-api/src/main/java/com/liferay/ai/hub/agent/SupervisorAgent.java
- Date: Feb. 12, 2026
- Ticket: LPD-78066
- What changed: The
_createInternalAgentsmethod is now used to create lists of sub-agents instead ofAgentsFactory. - Reason: Agent definitions now come from simplified object classes, so a factory to create subagent lists is no longer needed.
IndexedFieldsFixture.java
modules/apps/portal-search/portal-search-test-util/src/main/java/com/liferay/portal/search/test/util/IndexedFieldsFixture.java
- Date: Feb. 13, 2026
- Ticket: LPD-79227
- What changed: The
IndexedFieldsFixtureconstructor no longer has aDocumentBuilderFactoryparameter. - Reason: The constructor now uses a static utility class instead.
Document.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/document/Document.java
- Date: Feb. 13, 2026
- Ticket: LPD-79227
- What changed:
Documentis now an implementation class instead of an interface, andDocumentImplis merged into it. - Reason:
Documentis a POJO, so there is no reason to separate the implementation.
DocumentBuilder.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/document/DocumentBuilder.java
- Date: Feb. 13, 2026
- Ticket: LPD-79227
- What changed:
DocumentBuilderis now an implementation class instead of an interface, andDocumentBuilderImplis merged into it. - Reason:
DocumentBuilderis a POJO, so there is no reason to separate the implementation.
DocumentBuilderFactory.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/document/DocumentBuilderFactory.java
- Date: Feb. 13, 2026
- Ticket: LPD-79227
- What changed:
DocumentBuilderFactoryis now an implementation class instead of an interface, andDocumentBuilderFactoryImplis merged into it. - Reason:
DocumentBuilderFactoryis a POJO, so there is no reason to separate the implementation.
Field.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/document/Field.java
- Date: Feb. 13, 2026
- Ticket: LPD-79227
- What changed:
Fieldis now an implementation class instead of an interface, andFieldImplis merged into it. - Reason:
Fieldis a POJO, so there is no reason to separate the implementation.
GroupByRequest.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/groupby/GroupByRequest.java
- Date: Feb. 13, 2026
- Ticket: LPD-79227
- What changed:
GroupByRequestis now an implementation class instead of an interface, andGroupByRequestImplis merged into it. - Reason:
GroupByRequestis a POJO, so there is no reason to separate the implementation.
GroupByResponse.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/groupby/GroupByResponse.java
- Date: Feb. 13, 2026
- Ticket: LPD-79227
- What changed:
GroupByResponseis now an implementation class instead of an interface, andGroupByResponseImplis merged into it. - Reason:
GroupByResponseis a POJO, so there is no reason to separate the implementation.
GroupByRequestFactory.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/groupby/GroupByRequestFactory.java
- Date: Feb. 13, 2026
- Ticket: LPD-79227
- What changed: The
GroupByRequestFactoryclass is removed. - Reason:
GroupByRequestcan now be directly created, so a factory class is no longer needed.
GroupByResponseFactory.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/groupby/GroupByResponseFactory.java
- Date: Feb. 13, 2026
- Ticket: LPD-79227
- What changed: The
GroupByResponseFactoryclass is removed. - Reason:
GroupByResponsecan now be directly created, so a factory class is no longer needed.
GroupByRequestFactory.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/legacy/groupby/GroupByRequestFactory.java
- Date: Feb. 13, 2026
- Ticket: LPD-79227
- What changed:
GroupByRequestFactoryis now a static utility class, andGroupByRequestFactoryImplis merged into it. - Reason: This change consolidates the implementation to make
GroupByRequestFactorya static utility.
ComplexQueryBuilder.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/filter/ComplexQueryBuilder.java
- Date: Feb. 13, 2026
- Ticket: LPD-79227
- What changed:
ComplexQueryBuilderis now an implementation class instead of an interface, andComplexQueryBuilderImplis merged into it. - Reason:
ComplexQueryBuilderis a POJO, so there is no reason to separate the implementation.
StatsRequestBuilderFactory.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/legacy/stats/StatsRequestBuilderFactory.java
- Date: Feb. 13, 2026
- Ticket: LPD-79227
- What changed:
StatsRequestBuilderFactoryis now a static utility class, andStatsRequestBuilderFactoryImplis merged into it. - Reason: This change consolidates the implementation to make
StatsRequestBuilderFactorya static utility.
CommerceOrderConfiguration.java
modules/apps/commerce/commerce-api/src/main/java/com/liferay/commerce/configuration/CommerceOrderConfiguration.java
- Date: Feb. 13, 2026
- Ticket: LPD-77315
- What changed: The new
userNotificationScopeEnabledconfiguration field is added. - Reason: This change is needed to configure the user notifications scope in a channel.
TaskDefinitionManager.java
modules/dxp/apps/ai-hub/ai-hub-rest-api/src/main/java/com/liferay/ai/hub/rest/manager/v1_0/TaskDefinitionManager.java
- Date: Feb. 13, 2026
- Ticket: LPD-78068
- What changed: The
TaskDefinitionManagerinterface is renamed toAgentDefinitionManager. Additionally, all methods are renamed (replacingtaskwithagent). - Reason: This change enforces correct naming.
Bucket.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/bucket/Bucket.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
Bucketis now an implementation class instead of an interface, andBucketImplis merged into it. - Reason:
Bucketis a POJO, so there is no reason to separate the implementation.
BucketAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/bucket/BucketAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
BucketAggregationResultis now an implementation class instead of an interface, andBaseBucketAggregationResultis merged into it. - Reason:
BucketAggregationResultis a POJO, so there is no reason to separate the implementation.
ChildrenAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/bucket/ChildrenAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
ChildrenAggregationResultis now an implementation class instead of an interface, andChildrenAggregationResultImplis merged into it. - Reason:
ChildrenAggregationResultis a POJO, so there is no reason to separate the implementation.
DateHistogramAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/bucket/DateHistogramAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
DateHistogramAggregationResultis now an implementation class instead of an interface, andDateHistogramAggregationResultImplis merged into it. - Reason:
DateHistogramAggregationResultis a POJO, so there is no reason to separate the implementation.
DiversifiedSamplerAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/bucket/DiversifiedSamplerAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
DiversifiedSamplerAggregationResultis now an implementation class instead of an interface, andDiversifiedSamplerAggregationResultImplis merged into it. - Reason:
DiversifiedSamplerAggregationResultis a POJO, so there is no reason to separate the implementation.
FilterAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/bucket/FilterAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
FilterAggregationResultis now an implementation class instead of an interface, andFilterAggregationResultImplis merged into it. - Reason:
FilterAggregationResultis a POJO, so there is no reason to separate the implementation.
FiltersAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/bucket/FiltersAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
FiltersAggregationResultis now an implementation class instead of an interface, andFiltersAggregationResultImplis merged into it. - Reason:
FiltersAggregationResultis a POJO, so there is no reason to separate the implementation.
GeoDistanceAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/bucket/GeoDistanceAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
GeoDistanceAggregationResultis now an implementation class instead of an interface, andGeoDistanceAggregationResultImplis merged into it. - Reason:
GeoDistanceAggregationResultis a POJO, so there is no reason to separate the implementation.
GeoHashGridAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/bucket/GeoHashGridAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
GeoHashGridAggregationResultis now an implementation class instead of an interface, andGeoHashGridAggregationResultImplis merged into it. - Reason:
GeoHashGridAggregationResultis a POJO, so there is no reason to separate the implementation.
GlobalAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/bucket/GlobalAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
GlobalAggregationResultis now an implementation class instead of an interface, andGlobalAggregationResultImplis merged into it. - Reason:
GlobalAggregationResultis a POJO, so there is no reason to separate the implementation.
HistogramAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/bucket/HistogramAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
HistogramAggregationResultis now an implementation class instead of an interface, andHistogramAggregationResultImplis merged into it. - Reason:
HistogramAggregationResultis a POJO, so there is no reason to separate the implementation.
MissingAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/bucket/MissingAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
MissingAggregationResultis now an implementation class instead of an interface, andMissingAggregationResultImplis merged into it. - Reason:
MissingAggregationResultis a POJO, so there is no reason to separate the implementation.
NestedAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/bucket/NestedAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
NestedAggregationResultis now an implementation class instead of an interface, andNestedAggregationResultImplis merged into it. - Reason:
NestedAggregationResultis a POJO, so there is no reason to separate the implementation.
RangeAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/bucket/RangeAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
RangeAggregationResultis now an implementation class instead of an interface, andRangeAggregationResultImplis merged into it. - Reason:
RangeAggregationResultis a POJO, so there is no reason to separate the implementation.
ReverseNestedAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/bucket/ReverseNestedAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
ReverseNestedAggregationResultis now an implementation class instead of an interface, andReverseNestedAggregationResultImplis merged into it. - Reason:
ReverseNestedAggregationResultis a POJO, so there is no reason to separate the implementation.
SamplerAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/bucket/SamplerAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
SamplerAggregationResultis now an implementation class instead of an interface, andSamplerAggregationResultImplis merged into it. - Reason:
SamplerAggregationResultis a POJO, so there is no reason to separate the implementation.
SignificantTermsAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/bucket/SignificantTermsAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
SignificantTermsAggregationResultis now an implementation class instead of an interface, andSignificantTermsAggregationResultImplis merged into it. - Reason:
SignificantTermsAggregationResultis a POJO, so there is no reason to separate the implementation.
SignificantTextAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/bucket/SignificantTextAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
SignificantTextAggregationResultis now an implementation class instead of an interface, andSignificantTextAggregationResultImplis merged into it. - Reason:
SignificantTextAggregationResultis a POJO, so there is no reason to separate the implementation.
TermsAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/bucket/TermsAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
TermsAggregationResultis now an implementation class instead of an interface, andTermsAggregationResultImplis merged into it. - Reason:
TermsAggregationResultis a POJO, so there is no reason to separate the implementation.
AvgAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/metrics/AvgAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
AvgAggregationResultis now an implementation class instead of an interface, andAvgAggregationResultImplis merged into it. - Reason:
AvgAggregationResultis a POJO, so there is no reason to separate the implementation.
CardinalityAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/metrics/CardinalityAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
CardinalityAggregationResultis now an implementation class instead of an interface, andCardinalityAggregationResultImplis merged into it. - Reason:
CardinalityAggregationResultis a POJO, so there is no reason to separate the implementation.
GeoBoundsAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/metrics/GeoBoundsAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
GeoBoundsAggregationResultis now an implementation class instead of an interface, andGeoBoundsAggregationResultImplis merged into it. - Reason:
GeoBoundsAggregationResultis a POJO, so there is no reason to separate the implementation.
GeoCentroidAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/metrics/GeoCentroidAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
GeoCentroidAggregationResultis now an implementation class instead of an interface, andGeoCentroidAggregationResultImplis merged into it. - Reason:
GeoCentroidAggregationResultis a POJO, so there is no reason to separate the implementation.
MaxAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/metrics/MaxAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
MaxAggregationResultis now an implementation class instead of an interface, andMaxAggregationResultImplis merged into it. - Reason:
MaxAggregationResultis a POJO, so there is no reason to separate the implementation.
MinAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/metrics/MinAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
MinAggregationResultis now an implementation class instead of an interface, andMinAggregationResultImplis merged into it. - Reason:
MinAggregationResultis a POJO, so there is no reason to separate the implementation.
PercentileRanksAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/metrics/PercentileRanksAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
PercentileRanksAggregationResultis now an implementation class instead of an interface, andPercentileRanksAggregationResultImplis merged into it. - Reason:
PercentileRanksAggregationResultis a POJO, so there is no reason to separate the implementation.
ScriptedMetricAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/metrics/ScriptedMetricAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
ScriptedMetricAggregationResultis now an implementation class instead of an interface, andScriptedMetricAggregationResultImplis merged into it. - Reason:
ScriptedMetricAggregationResultis a POJO, so there is no reason to separate the implementation.
SumAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/metrics/SumAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
SumAggregationResultis now an implementation class instead of an interface, andSumAggregationResultImplis merged into it. - Reason:
SumAggregationResultis a POJO, so there is no reason to separate the implementation.
TopHitsAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/metrics/TopHitsAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
TopHitsAggregationResultis now an implementation class instead of an interface, andTopHitsAggregationResultImplis merged into it. - Reason:
TopHitsAggregationResultis a POJO, so there is no reason to separate the implementation.
ValueCountAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/metrics/ValueCountAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
ValueCountAggregationResultis now an implementation class instead of an interface, andValueCountAggregationResultImplis merged into it. - Reason:
ValueCountAggregationResultis a POJO, so there is no reason to separate the implementation.
WeightedAvgAggregationResult.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/aggregation/metrics/WeightedAvgAggregationResult.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
WeightedAvgAggregationResultis now an implementation class instead of an interface, andWeightedAvgAggregationResultImplis merged into it. - Reason:
WeightedAvgAggregationResultis a POJO, so there is no reason to separate the implementation.
HighlightField.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/highlight/HighlightField.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
HighlightFieldis now an implementation class instead of an interface, andHighlightFieldImplis merged into it. - Reason:
HighlightFieldis a POJO, so there is no reason to separate the implementation.
HighlightFieldBuilder.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/highlight/HighlightFieldBuilder.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
HighlightFieldBuilderis now an implementation class instead of an interface, andHighlightFieldBuilderImplis merged into it. - Reason:
HighlightFieldBuilderis a POJO, so there is no reason to separate the implementation.
HighlightFieldBuilderFactory.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/highlight/HighlightFieldBuilderFactory.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed: The
HighlightFieldBuilderFactoryclass is removed. - Reason:
HighlightFieldBuildercan now be directly created, so a factory class is no longer needed.
SearchHit.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/hits/SearchHit.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
SearchHitis now an implementation class instead of an interface, andSearchHitImplis merged into it. - Reason:
SearchHitis a POJO, so there is no reason to separate the implementation.
SearchHitBuilder.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/hits/SearchHitBuilder.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
SearchHitBuilderis now an implementation class instead of an interface, andSearchHitBuilderImplis merged into it. - Reason:
SearchHitBuilderis a POJO, so there is no reason to separate the implementation.
SearchHitBuilderFactory.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/hits/SearchHitBuilderFactory.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed: The
SearchHitBuilderFactoryclass is removed. - Reason:
SearchHitBuildercan now be directly created, so a factory class is no longer needed.
DocumentBuilderFactory.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/legacy/document/DocumentBuilderFactory.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed:
DocumentBuilderFactoryis now an implementation class instead of an interface, andDocumentBuilderFactoryImplis merged into it. - Reason:
DocumentBuilderFactoryis a POJO, so there is no reason to separate the implementation.
SPINodeResource.java
modules/dxp/apps/portal-workflow/portal-workflow-metrics-rest-spi/src/main/java/com/liferay/portal/workflow/metrics/rest/spi/resource/SPINodeResource.java
- Date: Feb. 14, 2026
- Ticket: LPD-79324
- What changed: The
SPINodeResourceconstructor now has aSearchEngineAdapterparameter, instead ofSearchRequestExecutor. - Reason:
SearchRequestExecutoris no longer exposed as an external API.
CPDefinitionLocalServiceImpl.java
modules/apps/commerce/commerce-product-service/src/main/java/com/liferay/commerce/product/service/impl/CPDefinitionLocalServiceImpl.java
- Date: Feb. 16, 2026
- Ticket: LPD-64459
- What changed: All variants of the
addCPDefinition,addOrUpdateCPDefinition, andupdateCPDefinitionmethods are removed. TheaddCPDefinition,addOrUpdateCPDefinition, andupdateCPDefinitionmethods now includebooleanparameters foraccountGroupFilterEnabledandchannelFilterEnabled, and the parameters are sorted based onservice.xml. Additionally, theupdateCPDefinitionmethod has new parameters forshippable,freeShipping,shipSeparately,shippingExtraPrice,width,height,depth,weight,cpTaxCategoryId,taxExempt, andtelcoOrElectronics, and the parameters are sorted based onservice.xml. - Reason: This change is required to use the existing values to determine if account group filters and channel filters are enabled. The refactoring also simplifies method usage.
CPDefinitionServiceImpl.java
modules/apps/commerce/commerce-product-service/src/main/java/com/liferay/commerce/product/service/impl/CPDefinitionServiceImpl.java
- Date: Feb. 16, 2026
- Ticket: LPD-64459
- What changed: All variants of the
addCPDefinition,addOrUpdateCPDefinition, andupdateCPDefinitionmethods are removed. TheaddCPDefinition,addOrUpdateCPDefinition, andupdateCPDefinitionmethods now includebooleanparameters foraccountGroupFilterEnabledandchannelFilterEnabled, and the parameters are sorted based onservice.xml. - Reason: This change is required to use the existing values to determine if account group filters and channel filters are enabled. The refactoring also simplifies method usage.
BatchEngineImportTaskExceptionHandler.java
modules/apps/batch-engine/batch-engine-api/src/main/java/com/liferay/batch/engine/exception/handler/BatchEngineImportTaskExceptionHandler.java
- Date: Feb. 16, 2026
- Ticket: LPD-79175
- What changed: The
handlemethod has a newStringparameter formessage. - Reason: This change is required to use the problem provider’s message.
BulkableDocumentRequest.java
modules/apps/portal-search/portal-search-engine-adapter-api/src/main/java/com/liferay/portal/search/engine/adapter/document/BulkableDocumentRequest.java
- Date: Feb. 17, 2026
- Ticket: LPD-79486
- What changed:
BulkableDocumentRequestis now a marker interface. - Reason: This change avoids creating unnecessary lambdas.
UIDFactory.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/model/uid/UIDFactory.java
- Date: Feb. 18, 2026
- Ticket: LPD-79552
- What changed: The
getUID(com.liferay.portal.kernel.search.Document),getUID(Document),setUID(ClassedModel, com.liferay.portal.kernel.search.Document)andsetUID(ClassedModel, DocumentBuilder)methods are removed. - Reason:
UIDFactoryshould only create UIDs, not get or set them.
CTClosureFactory.java
modules/apps/change-tracking/change-tracking-api/src/main/java/com/liferay/change/tracking/closure/CTClosureFactory.java
- Date: Feb. 20, 2026
- Ticket: LPD-79328
- What changed: The
create(long ctCollectionId, Set<Long>)method is removed. Instead, usecreate(long ctCollectionId)to get (at least) the same information. - Reason: The original feature that required this new method was removed. It was removed to simplify the logic and caching.
LayoutPageTemplateEntryLocalService.java
modules/apps/layout/layout-page-template-api/src/main/java/com/liferay/layout/page/template/service/LayoutPageTemplateEntryLocalService.java
- Date: Feb. 21, 2026
- Ticket: LPD-77604
- What changed: Several methods have a new
Stringparameter added for a class type key. - Reason: The class type key enables pages to use the lazy reference strategy.
CPActionKeys.java
modules/apps/commerce/commerce-product-api/src/main/java/com/liferay/commerce/product/constants/CPActionKeys.java
- Date: Feb. 24, 2026
- Ticket: LPD-78231
- What changed: The
MANAGE_COMMERCE_PRODUCT_MEASUREMENT_UNITSconstant value is removed. Additionally, the newADD_COMMERCE_PRODUCT_MEASUREMENT_UNITandVIEW_COMMERCE_PRODUCT_MEASUREMENT_UNITSconstant values are added. - Reason: This change is necessary to correctly manage permissions.
CPMeasurementUnitLocalService.java
modules/apps/commerce/commerce-product-api/src/main/java/com/liferay/commerce/product/service/CPMeasurementUnitLocalService.java
- Date: Feb. 24, 2026
- Ticket: LPD-78231
- What changed: The
fetchCPMeasurementUnitByKey(String)andgetCPMeasurementUnitByKey(String)methods are renamed tofetchCPMeasurementUnit(String)andgetCPMeasurementUnit(String), respectively. Additionally, thegetCPMeasurementUnits(long),getCPMeasurementUnitsByType(OrderByComparator),fetchCPMeasurementUnitByExternalReferenceCode(String),fetchPrimaryCPMeasurementUnitByType(long, int), andgetCPMeasurementUnitsByType(long, int)methods are removed. UsegetCPMeasurementUnits(OrderByComparator)instead ofgetCPMeasurementUnits(long)andgetCPMeasurementUnitsByType(OrderByComparator). UsefetchCPMeasurementUnit(long)instead offetchCPMeasurementUnitByExternalReferenceCode(String). - Reason: This change enforces consistent naming standards and code reuse.
DigitalSalesRoomTicketConstants.java
modules/dxp/apps/digital-sales-room/digital-sales-room-api/src/main/java/com/liferay/digital/sales/room/constants/DigitalSalesRoomTicketConstants.java
- Date: Feb. 25, 2026
- Ticket: LPD-69509
- What changed: The
DigitalSalesRoomTicketConstantsconstants are moved to thesite-dsr-site-initializer-apimodule. - Reason: This class is migrated to another module to improve the code structure.
ModelIndexerWriterContributor.java
modules/apps/portal-search/portal-search-spi/src/main/java/com/liferay/portal/search/spi/model/index/contributor/ModelIndexerWriterContributor.java
- Date: Feb. 25, 2026
- Ticket: LPD-80542
- What changed: The
getCompanyIdmethod is removed. - Reason: The logic is handled within
ModelIndexerWriterContributor, so it is not needed in a subclass.
BatchIndexingActionable.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/batch/BatchIndexingActionable.java
- Date: Feb. 26, 2026
- Ticket: LPD-80551
- What changed: The
BatchIndexingActionableclass is removed. Instead, useIndexableActionableDynamicQuerydirectly. - Reason: This change improves the code structure.
DynamicQueryBatchIndexingActionableFactory.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/batch/DynamicQueryBatchIndexingActionableFactory.java
- Date: Feb. 26, 2026
- Ticket: LPD-80551
- What changed: The
DynamicQueryBatchIndexingActionableFactoryclass is removed. Instead, useIndexableActionableDynamicQuerydirectly. - Reason: This change improves the code structure.
ModelIndexerWriterDocumentHelper.java
modules/apps/portal-search/portal-search-spi/src/main/java/com/liferay/portal/search/spi/model/index/contributor/helper/ModelIndexerWriterDocumentHelper.java
- Date: Feb. 26, 2026
- Ticket: LPD-80661
- What changed: The
ModelIndexerWriterDocumentHelperclass is removed. Instead, useIndexerDocumentBuilderdirectly. - Reason: This change improves the code structure.
CPDefinitionLocalServiceImpl.java
modules/apps/commerce/commerce-product-service/src/main/java/com/liferay/commerce/product/service/impl/CPDefinitionLocalServiceImpl.java
- Date: Feb. 26, 2026
- Ticket: LPD-79253
- What changed: The
copyCPDefinition(long, long, int)method now only performs a copy operation if product versioning is active. - Reason: A unique index has been added for the
CProductIdandversionfields.
OAuthClientASLocalMetadataLocalServiceImpl.java
modules/apps/oauth-client/oauth-client-persistence-service/src/main/java/com/liferay/oauth/client/persistence/service/impl/OAuthClientASLocalMetadataLocalServiceImpl.java
- Date: Feb. 26, 2026
- Ticket: LPD-67473
- What changed: Various add and update methods have a new
Stringparameter for a registration endpoint. - Reason: This parameter is necessary to register new apps.
CommerceInventoryActionKeys.java
modules/apps/commerce/commerce-inventory-api/src/main/java/com/liferay/commerce/inventory/constants/CommerceInventoryActionKeys.java
- Date: Feb. 27, 2026
- Ticket: LPD-79147
- What changed: The
MANAGE_INVENTORYconstant value is removed, and the newVIEW_INVENTORIESconstant value is added. - Reason: This change is necessary to correctly manage permissions.
WorkflowDefinitionResourceImpl.java
modules/apps/headless/headless-admin-workflow/headless-admin-workflow-impl/src/main/java/com/liferay/headless/admin/workflow/internal/resource/v1_0/WorkflowDefinitionResourceImpl.java
- Date: Feb. 27, 2026
- Ticket: LPD-78064
- What changed: The
getWorkflowDefinitionsPageandgetLatestWorkflowDefinitionsmethods have a newStringparameter for a scope. - Reason: This change supports retrieving AI Hub scoped workflows.
WorkflowDefinitionManagerImpl.java
modules/apps/portal-workflow/portal-workflow-kaleo-runtime-integration-impl/src/main/java/com/liferay/portal/workflow/kaleo/runtime/integration/internal/WorkflowDefinitionManagerImpl.java
- Date: Feb. 27, 2026
- Ticket: LPD-78064
- What changed: The
getWorkflowDefinitionsPageandgetLatestWorkflowDefinitionsmethods have a newStringparameter for a scope. - Reason: This change supports retrieving AI Hub scoped workflows.
WorkflowDefinitionManagerUtil.java
modules/apps/portal-workflow/portal-workflow-api/src/main/java/com/liferay/portal/workflow/util/WorkflowDefinitionManagerUtil.java
- Date: Feb. 27, 2026
- Ticket: LPD-78064
- What changed: The
getWorkflowDefinitionsPageandgetLatestWorkflowDefinitionsmethods have a newStringparameter for a scope. - Reason: This change supports retrieving AI Hub scoped workflows.
WorkflowDefinitionManager.java
modules/apps/portal-workflow/portal-workflow-api/src/main/java/com/liferay/portal/workflow/manager/WorkflowDefinitionManager.java
- Date: Feb. 27, 2026
- Ticket: LPD-78064
- What changed: The
getWorkflowDefinitionsPageandgetLatestWorkflowDefinitionsmethods have a newStringparameter for a scope. - Reason: This change supports retrieving AI Hub scoped workflows.
Queries.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/query/Queries.java
- Date: Feb. 28, 2026
- Ticket: LPD-80837
- What changed: The
Queriesclass is removed. Instead, useQueriesUtil. - Reason: This change improves the code structure.
AggregationUtil.java
modules/apps/headless/headless-delivery/headless-delivery-api/src/main/java/com/liferay/headless/delivery/search/aggregation/AggregationUtil.java
- Date: Feb. 28, 2026
- Ticket: LPD-80837
- What changed: The
processVulcanAggregationmethod no longer accepts aQueriesparameter. - Reason: This method now uses the
QueriesUtilstatic utility instead.
SortUtil.java
modules/apps/headless/headless-delivery/headless-delivery-api/src/main/java/com/liferay/headless/delivery/search/sort/SortUtil.java
- Date: Feb. 28, 2026
- Ticket: LPD-80837
- What changed: The
processSortsmethod no longer accepts aQueriesparameter. - Reason: This method now uses the
QueriesUtilstatic utility instead.
CPDefinitionLocalService.java
modules/apps/commerce/commerce-product-api/src/main/java/com/liferay/commerce/product/service/CPDefinitionLocalService.java
- Date: Mar. 2, 2026
- Ticket: LPD-76491
- What changed: The
fetchCPDefinitionByCProductExternalReferenceCodeandfetchCPDefinitionByCProductIdmethods have a newbooleanparameter,excludeDraft. - Reason: This change is needed to avoid accessing product data for unauthenticated users on the front store.
CPDefinitionService.java
modules/apps/commerce/commerce-product-api/src/main/java/com/liferay/commerce/product/service/CPDefinitionService.java
- Date: Mar. 2, 2026
- Ticket: LPD-76491
- What changed: The
fetchCPDefinitionByCProductExternalReferenceCodeandfetchCPDefinitionByCProductIdmethods have a newbooleanparameter,excludeDraft. - Reason: This change is needed to avoid accessing product data for unauthenticated users on the front store.
WorkflowDefinition.java
modules/apps/headless/headless-admin-workflow/headless-admin-workflow-api/src/main/java/com/liferay/headless/admin/workflow/dto/v1_0/WorkflowDefinition.java
- Date: Mar. 3, 2026
- Ticket: LPD-78054
- What changed: The workflow definition DTO has a new
Stringproperty for a group external reference code. - Reason: This property scopes AI Agents by accounts.
WorkflowDefinitionManager.java
modules/apps/portal-workflow/portal-workflow-api/src/main/java/com/liferay/portal/workflow/manager/WorkflowDefinitionManager.java
- Date: Mar. 3, 2026
- Ticket: LPD-78054
- What changed: The
saveWorkflowDefinitionmethod has a newStringparameter for a scope. - Reason: This property scopes AI Agents by accounts.
SegmentsEntryPersistence.java
modules/apps/segments/segments-api/src/main/java/com/liferay/segments/service/persistence/SegmentsEntryPersistence.java
- Date: Mar. 5, 2026
- Ticket: LPD-81650
- What changed: These company ID finder methods are removed:
findByCompanyId,fetchByCompanyId_First,findByCompanyId_First,fetchByCompanyId_Last,findByCompanyId_Last,findByCompanyId_PrevAndNext,removeByCompanyId, andcountByCompanyId. - Reason: These methods did not function properly and were not used.
SegmentsEntryUtil.java
modules/apps/segments/segments-api/src/main/java/com/liferay/segments/service/persistence/SegmentsEntryUtil.java
- Date: Mar. 5, 2026
- Ticket: LPD-81650
- What changed: These company ID finder methods are removed:
findByCompanyId,fetchByCompanyId_First,findByCompanyId_First,fetchByCompanyId_Last,findByCompanyId_Last,findByCompanyId_PrevAndNext,removeByCompanyId, andcountByCompanyId. - Reason: These methods did not function properly and were not used.
service.xml
modules/apps/object/object-service/service.xml
- Date: Mar. 5, 2026
- Ticket: LPD-79365
- What changed: The database-level unique constraint on folder names is removed.
- Reason: Uniqueness should only be enforced for active folders, allowing users to reuse a name if the original folder is in the trash.
KaleoDefinitionPersistence.java
modules/apps/portal-workflow/portal-workflow-kaleo-api/src/main/java/com/liferay/portal/workflow/kaleo/service/persistence/KaleoDefinitionPersistence.java
- Date: Mar. 5, 2026
- Ticket: LPD-78054
- What changed: The
findByC_SandfindByC_S_Amethods have a newlongparameter for a group ID. - Reason: This change takes into account AI-based Kaleo Definitions being scoped by group.
FragmentEntryLinkLocalServiceImpl.java
modules/apps/fragment/fragment-service/src/main/java/com/liferay/fragment/service/impl/FragmentEntryLinkLocalServiceImpl.java
- Date: Mar. 6, 2026
- Ticket: LPD-81197
- What changed: Various
*ByFragmentEntryERCmethods are replaced by*ByFragmentEntrymethods. Additionally, thedeleteFragmentEntryLinksByFragmentEntryERC(long, String, String)method is removed with no direct replacement. - Reason: This change keeps the scope logic in service methods. The method removed with no replacement was not used.
FragmentEntryLinkFinderImpl.java
modules/apps/fragment/fragment-service/src/main/java/com/liferay/fragment/service/persistence/impl/FragmentEntryLinkFinderImpl.java
- Date: Mar. 6, 2026
- Ticket: LPD-81197
- What changed: The
FragmentEntryLinkFinderImplclass is removed. - Reason: This change removes custom finders in favor of using
DSLQuery.
UpgradeSourceCodeTask.java
modules/sdk/gradle-plugins-workspace/src/main/java/com/liferay/gradle/plugins/workspace/task/UpgradeSourceCodeTask.java
- Date: Mar. 6, 2026
- Ticket: LPD-75694
- What changed: An overriding implementation of the
execmethod is added. Additionally, thesetToVersion(String)method is removed, in favor of lazy version retrieval. - Reason: This task now validates that a valid Liferay version is passed in as a property.
CommerceDiscountRelFinderImpl.java
modules/apps/commerce/commerce-discount-service/src/main/java/com/liferay/commerce/discount/service/persistence/impl/CommerceDiscountRelFinderImpl.java
- Date: Mar. 7, 2026
- Ticket: LPD-79952
- What changed: The
CommerceDiscountRelFinderclass is removed. Instead, useCommerceDiscountRelServicemethods. - Reason: The
CommerceDiscountRelFinderimplementation was outdated and no longer used.
SegmentsExperience.java
modules/apps/segments/segments-api/src/main/java/com/liferay/segments/model/SegmentsExperience.java
- Date: Mar. 8, 2026
- Ticket: LPD-79814
- What changed: The
getSegmentsEntryGroupIdmethod is removed. - Reason: Entity models should primarily represent data state. Using
ScopeUtilto dynamically resolve scope inside the model implementation tightly couples the entity to external utility classes and context. The resolution of the Segments Entry group ID should be handled explicitly at the business logic or service layer, rather than hidden inside the model itself.
DSRPortletKeys.java
modules/apps/site/site-dsr-site-initializer-api/src/main/java/com/liferay/site/dsr/site/initializer/constants/DSRPortletKeys.java
- Date: Mar. 9, 2026
- Ticket: LPD-69509
- What changed: The
DIGITAL_SALES_ROOM_INVITE_MEMBERconstant is renamed toDSR_INVITE_MEMBER. - Reason: This change enforces compliance with the new module structure.
SitePage.java
modules/apps/headless/headless-admin-site/headless-admin-site-api/src/main/java/com/liferay/headless/admin/site/dto/v1_0/SitePage.java
- Date: Mar. 9, 2026
- Ticket: LPD-79415
- What changed: Various method names, parameters, and return types are updated to use
TaxonomyCategoryBriefinstead ofItemExternalReference. This change applies to content page templates, master pages, page templates, site pages, and widget page templates. - Reason: This change enables creating empty shells for categories and displaying them properly in the UI.
CTCollectionService.java
modules/apps/change-tracking/change-tracking-api/src/main/java/com/liferay/change/tracking/service/CTCollectionService.java
- Date: Mar. 10, 2026
- Ticket: LPD-79378
- What changed: Company ID and user ID parameters are removed from all methods. Instead, get the user ID from the base class method, and get the company ID from
CompanyThreadLocal. - Reason: This change prevents incorrect access to user information across virtual instances.
PanelApp.java
modules/apps/application-list/application-list-api/src/main/java/com/liferay/application/list/PanelApp.java
- Date: Mar. 10, 2026
- Ticket: LPD-75093
- What changed: The new
getIconmethod is added. - Reason: This change is necessary to display an icon alongside the panel application label in the UI.
rest-openapi.yaml
modules/apps/bulk/bulk-rest-impl/rest-openapi.yaml
- Date: Mar. 10, 2026
- Ticket: LPD-81782
- What changed: The bulk action types for selection actions are renamed (from
*_BULK_ACTIONto*_BULK_SELECTION_ACTION). - Reason: This change enforces consistent naming.
DSLFunctionFactory.java
modules/core/petra/petra-sql-dsl-api/src/main/java/com/liferay/petra/sql/dsl/factory/DSLFunctionFactory.java
- Date: Mar. 11, 2026
- Ticket: LPD-82351
- What changed: The new
replace(Expression<String>, Expression<String>, Expression<String>)andreplace(Expression<String>, String, String)methods are added. - Reason: The
REPLACESQL function is needed to strip prefixes, when ordering group results by name in DSL queries.
IconImageURL.java
modules/apps/headless/headless-admin-site/headless-admin-site-api/src/main/java/com/liferay/headless/admin/site/dto/v1_0/IconImageURL.java
- Date: Mar. 12, 2026
- Ticket: LPD-81218
- What changed: The
IconImageURLReferenceclass is removed. Instead, useIconImageURL. - Reason: Icon image external reference codes are unique by company, and they shouldn’t be shared by pages, so trying to set them resulted in errors promoting pages within the same company.
Settings.java
modules/apps/headless/headless-admin-site/headless-admin-site-api/src/main/java/com/liferay/headless/admin/site/dto/v1_0/Settings.java
- Date: Mar. 12, 2026
- Ticket: LPD-81218
- What changed: The
iconImageURLReferencefield and its corresponding getter and setter methods are removed. Instead, useiconImageURLand its corresponding getter and setter methods. - Reason: Icon image external reference codes are unique by company, and they shouldn’t be shared by pages, so trying to set them resulted in errors promoting pages within the same company.
StagingConfiguration.java
modules/apps/staging/staging-api/src/main/java/com/liferay/staging/configuration/StagingConfiguration.java
- Date: Mar. 12, 2026
- Ticket: LPD-81012
- What changed: The Publish parent pages by default configuration is removed.
- Reason: This functionality is not available since the new promote content changes were implemented. Lazy referencing substitutes similar functionality.
OAuthClientEntryLocalServiceImpl.java
modules/apps/oauth-client/oauth-client-persistence-service/src/main/java/com/liferay/oauth/client/persistence/service/impl/OAuthClientEntryLocalServiceImpl.java
- Date: Mar. 12, 2026
- Ticket: LPD-67470
- What changed: The
addOAuthClientEntryandupdateOAuthClientEntrymethods have a newStringparameter,matcherField. - Reason: The matcher field is now stored in the OAuth client entry.
OAuthClientEntryServiceImpl.java
modules/apps/oauth-client/oauth-client-persistence-service/src/main/java/com/liferay/oauth/client/persistence/service/impl/OAuthClientEntryServiceImpl.java
- Date: Mar. 12, 2026
- Ticket: LPD-67470
- What changed: The
addOAuthClientEntryandupdateOAuthClientEntrymethods have a newStringparameter,matcherField. - Reason: The matcher field is now stored in the OAuth client entry.
CPActionKeys.java
modules/apps/commerce/commerce-product-api/src/main/java/com/liferay/commerce/product/constants/CPActionKeys.java
- Date: Mar. 12, 2026
- Ticket: LPD-78239
- What changed: The
MANAGE_COMMERCE_PRODUCT_TAX_CATEGORIESconstant value is removed, and the newADD_COMMERCE_PRODUCT_TAX_CATEGORIESconstant value is added. Additionally, all uses ofMANAGE_COMMERCE_PRODUCT_TAX_CATEGORIESare substituted with eitherADD_COMMERCE_PRODUCT_TAX_CATEGORIESorVIEW_COMMERCE_PRODUCT_TAX_CATEGORIESat the portlet level, and eitherDELETEorUPDATEat the resource level. - Reason: This change is necessary to correctly manage permissions associated with tax categories.
StagingConfiguration.java
modules/apps/staging/staging-api/src/main/java/com/liferay/staging/configuration/StagingConfiguration.java
- Date: Mar. 13, 2026
- Ticket: LPD-81248
- What changed: The
publish-displayed-contentconfiguration is removed. - Reason: This configuration is no longer useful, after the export/import framework changes.
AssetCategoryService.java
portal-kernel/src/com/liferay/asset/kernel/service/AssetCategoryService.java
- Date: Mar. 13, 2026
- Ticket: LPD-81547
- What changed: The
getOrAddEmptyCategoryWithAncestorsmethod no longer has along userIdparameter. - Reason: The user ID parameter was not used.
CommerceActionKeys.java
modules/apps/commerce/commerce-api/src/main/java/com/liferay/commerce/constants/CommerceActionKeys.java
- Date: Mar. 13, 2026
- Ticket: LPD-78534
- What changed: The
MANAGE_COMMERCE_AVAILABILITY_ESTIMATESconstant value is removed, and the newADD_COMMERCE_AVAILABILITY_ESTIMATEandVIEW_COMMERCE_AVAILABILITY_ESTIMATESconstant values are added. - Reason: This change is necessary to correctly manage permissions.
JoinStep.java
modules/core/petra/petra-sql-dsl-api/src/main/java/com/liferay/petra/sql/dsl/query/JoinStep.java
- Date: Mar. 15, 2026
- Ticket: LPD-80827
- What changed: The new
innerJoinON(Table<?>, UnsafeSupplier<Predicate, T>)andleftJoinOn(Table<?>, UnsafeSupplier<Predicate, T>)methods are added. Add new methods to generate the Join using UnsafeSuppliers if needed. - Reason: This change reduces duplicate logic and uses specific methods to get a predicate using an
UnsafeSupplier.
ExportImportVulcanBatchEngineTaskItemDelegate.java
modules/apps/export-import/export-import-api/src/main/java/com/liferay/exportimport/vulcan/batch/engine/ExportImportVulcanBatchEngineTaskItemDelegate.java
- Date: Mar. 16, 2026
- Ticket: LPD-80308
- What changed: The
isApplicableExternalReferenceCodemethod is removed. Additionally, the newgetApplicableModelFunctionandgetModelClassmethods are added. - Reason: This change enables getting applicable models from the system event table, to correctly export model deletions with multiple REST resources.
CookiesConfigurationProvider.java
modules/apps/cookies/cookies-api/src/main/java/com/liferay/cookies/configuration/CookiesConfigurationProvider.java
- Date: Mar. 16, 2026
- Ticket: LPD-78592
- What changed: The new
getCookiesPreferenceHandlingFloatingIcon(ExtendedObjectClassDefinition.Scope, long)method is added. - Reason: The new method enables the new cookies preference configuration.
bnd.bnd
modules/third-party/com-liferay-faces-util/bnd.bnd
- Date: Mar. 18, 2026
- Ticket: LPD-82936
- What changed: The
com-liferay-faces-utilversion is increased and itsbuild.gradleis rewritten. - Reason: These changes support
liferay-faces-utilversion5.0.0.
bnd.bnd
modules/third-party/com-liferay-faces-bridge-api/bnd.bnd
- Date: Mar. 18, 2026
- Ticket: LPD-82936
- What changed: The
com-liferay-faces-bridge-apiversion is increased and itsbuild.gradleis rewritten. - Reason: These changes support
liferay-faces-bridge-apiversion7.0.0.
bnd.bnd
modules/third-party/com-liferay-faces-bridge-impl/bnd.bnd
- Date: Mar. 18, 2026
- Ticket: LPD-82936
- What changed: The
com-liferay-faces-bridge-implversion is increased and itsbuild.gradleis rewritten. - Reason: These changes support
liferay-faces-bridge-implversion7.0.0.
bnd.bnd
modules/third-party/com-liferay-faces-bridge-ext/bnd.bnd
- Date: Mar. 18, 2026
- Ticket: LPD-82936
- What changed: The
com-liferay-faces-bridge-extversion is increased and itsbuild.gradleis rewritten. - Reason: These changes support
liferay-faces-bridge-extversion9.0.0.
BasePortletExportImportTestCase.java
modules/apps/export-import/export-import-test-util/src/main/java/com/liferay/exportimport/test/util/lar/BasePortletExportImportTestCase.java
- Date: Mar. 19, 2026
- Ticket: LPD-81878
- What changed: The
importPortletmethod now returns anExportImportconfiguration. - Reason: The new changes related to export/import report entries require new testing steps related to the configuration report entries. This requires exposing the
ExportImportConfigurationvalues.
base_resource_impl.ftl
modules/util/portal-tools-rest-builder/src/main/resources/com/liferay/portal/tools/rest/builder/dependencies/base_resource_impl.ftl
- Date: Mar. 21, 2026
- Ticket: LPD-78778
- What changed: The
isAcceptAllLanguagesmethod now returnstrueduring an export process when REST Builder’s compatibility version is >= 15. - Reason: This change enables returning all available translations from the API when the request comes from an export/import process.
OAuthClientASLocalMetadataLocalService.java
modules/apps/oauth-client/oauth-client-persistence-api/src/main/java/com/liferay/oauth/client/persistence/service/OAuthClientASLocalMetadataLocalService.java
- Date: Mar. 24, 2026
- Ticket: LPD-74226
- What changed: The
addOAuthClientASLocalMetadata(long, String, String, String, boolean, String, String[], String[], String[], String, String)method has a newStringparameter for an external reference code. - Reason: This change adds support for LAR exports and imports.
OAuthClientASLocalMetadataService.java
modules/apps/oauth-client/oauth-client-persistence-api/src/main/java/com/liferay/oauth/client/persistence/service/OAuthClientASLocalMetadataService.java
- Date: Mar. 24, 2026
- Ticket: LPD-74226
- What changed: The
addOAuthClientASLocalMetadata(long, String, String, String, boolean, String, String[], String[], String[], String, String)method has a newStringparameter for an external reference code. - Reason: This change adds support for LAR exports and imports.
OAuthClientEntryLocalService.java
modules/apps/oauth-client/oauth-client-persistence-api/src/main/java/com/liferay/oauth/client/persistence/service/OAuthClientEntryLocalService.java
- Date: Mar. 24, 2026
- Ticket: LPD-74226
- What changed: The
addOAuthClientEntry(long, String, String, String, String, String, long, String, String)method has a new String parameter for an external reference code. - Reason: This change adds support for LAR exports and imports.
OAuthClientEntryService.java
modules/apps/oauth-client/oauth-client-persistence-api/src/main/java/com/liferay/oauth/client/persistence/service/OAuthClientEntryService.java
- Date: Mar. 24, 2026
- Ticket: LPD-74226
- What changed: The
addOAuthClientEntry(long, String, String, String, String, String, long, String, String)method has a new String parameter for an external reference code. - Reason: This change adds support for LAR exports and imports.
KaleoDefinitionVersionLocalService.java
modules/apps/portal-workflow/portal-workflow-kaleo-api/src/main/java/com/liferay/portal/workflow/kaleo/service/KaleoDefinitionVersionLocalService.java
- Date: Mar. 24, 2026
- Ticket: LPD-83622
- What changed: The
fetchLatestKaleoDefinitionVersion(long, String, OrderByComparator)method is removed. - Reason: This method overload was no longer used.
KaleoDefinitionVersionLocalServiceUtil.java
modules/apps/portal-workflow/portal-workflow-kaleo-api/src/main/java/com/liferay/portal/workflow/kaleo/service/KaleoDefinitionVersionLocalServiceUtil.java
- Date: Mar. 24, 2026
- Ticket: LPD-83622
- What changed: The
fetchLatestKaleoDefinitionVersion(long, String, OrderByComparator)method is removed. - Reason: This method overload was no longer used.
KaleoDefinitionVersionLocalServiceWrapper.java
modules/apps/portal-workflow/portal-workflow-kaleo-api/src/main/java/com/liferay/portal/workflow/kaleo/service/KaleoDefinitionVersionLocalServiceWrapper.java
- Date: Mar. 24, 2026
- Ticket: LPD-83622
- What changed: The
fetchLatestKaleoDefinitionVersion(long, String, OrderByComparator)method is removed. - Reason: This method overload was no longer used.
IndexerWriter.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/indexer/IndexerWriter.java
- Date: Mar. 25, 2026
- Ticket: LPD-83771
- What changed: The
reindex(String[])is removed. Instead, usereindexCompany(long companyId). - Reason: The removed method always received a single-element array containing a company ID as a
String. This change improves the code clarity and distinguishes this route fromreindex(long classPK).
build.gradle
modules/apps/commerce/commerce-report-impl/build.gradle
- Date: Mar. 27, 2026
- Ticket: LPD-82858
- What changed: The
jasperreportsdependency is updated to version7.0.6. Custom print order templates must be updated to be compatible with this version. - Reason: This change is necessary to upgrade
jasperreports.
OAuthClientASLocalMetadataPersistenceImpl.java
modules/apps/oauth-client/oauth-client-persistence-service/src/main/java/com/liferay/oauth/client/persistence/service/persistence/impl/OAuthClientASLocalMetadataPersistenceImpl.java
- Date: Mar. 31, 2026
- Ticket: LPD-74226
- What changed: The
findByLocalWellKnownURI(String),fetchByLocalWellKnownURI(String),fetchByLocalWellKnownURI(String, boolean),removeByLocalWellKnownURI(String), andcountByLocalWellKnownURI(String)methods now have a newlongparameter for a company ID. - Reason: This change adds support for LAR exports and imports.
OAuthClientASLocalMetadataLocalServiceImpl.java
modules/apps/oauth-client/oauth-client-persistence-service/src/main/java/com/liferay/oauth/client/persistence/service/impl/OAuthClientASLocalMetadataLocalServiceImpl.java
- Date: Mar. 31, 2026
- Ticket: LPD-74226
- What changed: Various methods have a new
Stringparameter for an external reference code. - Reason: This change adds support for LAR exports and imports.
OAuthClientEntryLocalServiceImpl.java
modules/apps/oauth-client/oauth-client-persistence-service/src/main/java/com/liferay/oauth/client/persistence/service/impl/OAuthClientEntryLocalServiceImpl.java
- Date: Mar. 31, 2026
- Ticket: LPD-74226
- What changed: Various methods have a new
Stringparameter added for an external reference code. - Reason: This change adds support for LAR exports and imports.
CommercePriceListLocalServiceImpl.java
modules/apps/commerce/commerce-price-list-service/src/main/java/com/liferay/commerce/price/list/service/impl/CommercePriceListLocalServiceImpl.java
- Date: Apr. 3, 2026
- Ticket: LPD-78018
- What changed: All overloads of the
updateCommercePriceList,addCatalogBaseCommercePriceList,addCommercePriceList,addOrUpdateCommercePriceList, andupdateCommercePriceListmethods have their parameters sorted according to theservice.xml. - Reason: This change enforces consistent code organization.
CommercePriceListServiceImpl.java
modules/apps/commerce/commerce-price-list-service/src/main/java/com/liferay/commerce/price/list/service/impl/CommercePriceListServiceImpl.java
- Date: Apr. 3, 2026
- Ticket: LPD-78018
- What changed: All overloads of the
addCommercePriceList,addOrUpdateCommercePriceList, andupdateCommercePriceListmethods have their parameters sorted according to theservice.xml. - Reason: This change enforces consistent code organization.
CookiesPreferenceHandlingConfiguration.java
modules/apps/cookies/cookies-api/src/main/java/com/liferay/cookies/configuration/CookiesPreferenceHandlingConfiguration.java
- Date: Apr. 3, 2026
- Ticket: LPD-84142
- What changed: The new
consentRenewalPeriodTimeUnitanddissentRenewalPeriodTimeUnitmethods are added for new configurations. Additionally, thedissentRenewalPeriodconfiguration method now has a description. - Reason: This change enables consent renewal period and dissent renewal period configurations to be defined with other units of time. It also accommodates for up to one year regardless of time unit.
DocumentFragmentEntryProcessor.java
modules/apps/fragment/fragment-api/src/main/java/com/liferay/fragment/processor/DocumentFragmentEntryProcessor.java
- Date: Apr. 7, 2026
- Ticket: LPD-82607
- What changed: The
processFragmentEntryLinkHTML(FragmentEntryLink, Document, FragmentEntryProcessorContext)method’s parameters are reordered. - Reason: This change enforces consistent code organization.
FragmentEntryProcessor.java
modules/apps/fragment/fragment-api/src/main/java/com/liferay/fragment/processor/FragmentEntryProcessor.java
- Date: Apr. 7, 2026
- Ticket: LPD-82607
- What changed: The
getDefaultEditableValuesJSONObject(String, JSONObject),processFragmentEntryLinkCSS(FragmentEntryLink, String, FragmentEntryProcessorContext), andprocessFragmentEntryLinkHTML(FragmentEntryLink, String, FragmentEntryProcessorContext)methods have their parameters reordered. - Reason: This change enforces consistent code organization.
DDMTemplateInfoItemFieldSetProvider.java
modules/apps/dynamic-data-mapping/dynamic-data-mapping-api/src/main/java/com/liferay/dynamic/data/mapping/info/item/provider/DDMTemplateInfoItemFieldSetProvider.java
- Date: Apr. 9, 2026
- Ticket: LPD-85077
- What changed: The
getInfoItemFieldSetmethod has a newlongparameter, for a group ID. - Reason: This change enables returning the correct templates based on group ID.
ObjectDefinitionLocalServiceImpl.java
modules/apps/object/object-service/src/main/java/com/liferay/object/service/impl/ObjectDefinitionLocalServiceImpl.java
- Date: Apr. 9, 2026
- Ticket: LPD-85693
- What changed: The
addCustomObjectDefinitionandaddSystemObjectDefinitionmethods have a newbooleanparameter,enableCategorization. - Reason: The new value supplied in the API request should be honored when creating an object definition.
SegmentsEntryProviderRegistry.java
modules/apps/segments/segments-api/src/main/java/com/liferay/segments/provider/SegmentsEntryProviderRegistry.java
- Date: Apr. 14, 2026
- Ticket: LPD-86011
- What changed: The
getSegmentsEntryIds(long, String, long, Context, long[])method no longer has along[]parameter forsegmentsEntryIds. - Reason: Segment entry IDs are now cached. Since the method filters a user’s segments based on this parameter, caching can lead to incorrect results when the same context is used with different values. For example, if the user belongs to segments
[0, 1, 2, 3, 4], a first call with[0, 1]may cache the filtered result, and a subsequent call with[0, 2]would incorrectly reuse the cached value instead of returning the correct filtered set.
SegmentsEntryRetriever.java
modules/apps/segments/segments-api/src/main/java/com/liferay/segments/SegmentsEntryRetriever.java
- Date: Apr. 14, 2026
- Ticket: LPD-86011
- What changed: The
getSegmentsEntryIds(long, long, Context, long[])no longer has along[]parameter forsegmentsEntryIds. - Reason: Segment entry IDs are now cached. Since the method filters a user’s segments based on this parameter, caching can lead to incorrect results when the same context is used with different values. For example, if the user belongs to segments
[0, 1, 2, 3, 4], a first call with[0, 1]may cache the filtered result, and a subsequent call with[0, 2]would incorrectly reuse the cached value instead of returning the correct filtered set.
DefaultObjectEntryManager.java
modules/apps/object/object-rest-api/src/main/java/com/liferay/object/rest/manager/v1_0/DefaultObjectEntryManager.java
- Date: Apr. 14, 2026
- Ticket: LPD-83164
- What changed: The new
fetchObjectEntry(DTOConverterContext, String, ObjectDefinition, String)method is added. - Reason: This method enables retrieving object entries via external reference code.
VertexAIConfiguration.java
modules/apps/ai-hub-cell/ai-hub-cell-api/src/main/java/com/liferay/ai/hub/cell/configuration/VertexAIConfiguration.java
- Date: Apr. 15, 2026
- Ticket: LPD-86060
- What changed: The new
VertexAIConfigurationclass is added. - Reason: This configuration ensures the Vertex AI configurations are kept safe and not hard-coded.
CommerceTaxCalculation.java
modules/apps/commerce/commerce-api/src/main/java/com/liferay/commerce/tax/CommerceTaxCalculation.java
- Date: Apr. 20, 2026
- Ticket: LPD-84997
- What changed: The
getCommerceTaxValues(long, long, long, long, BigDecimal, String, boolean)method’slong groupIdandBigDecimal amountparameters are renamed tocommerceChannelGroupIdandprice, respectively. The parameters are also reordered with the name change. - Reason: The parameters are renamed to be more descriptive and consistent with the commerce domain.
CommercePriceConverterUtil.java
modules/apps/commerce/commerce-service/src/main/java/com/liferay/commerce/internal/util/CommercePriceConverterUtil.java
- Date: Apr. 20, 2026
- Ticket: LPD-84997
- What changed: The
getConvertedPrice(long, long, long, long, String, BigDecimal, boolean, CommerceTaxCalculation)method’s parameters are reordered. - Reason: This change enforces consistent (alphabetical) source formatting.
CommerceTaxCalculationImpl.java
modules/apps/commerce/commerce-tax-service/src/main/java/com/liferay/commerce/tax/internal/CommerceTaxCalculationImpl.java
- Date: Apr. 20, 2026
- Ticket: LPD-84997
- What changed: The
getCommerceTaxValues(long, long, long, long, BigDecimal, String, boolean)method’slong groupIdandBigDecimal amountparameters are renamed tocommerceChannelGroupIdandprice, respectively. The parameters are also reordered with the name change. - Reason: The method parameters reflect the changes to the
CommerceTaxCalculationinterface.
StyleBookEntryLocalService.java
modules/apps/style-book/style-book-api/src/main/java/com/liferay/style/book/service/StyleBookEntryLocalService.java
- Date: Apr. 21, 2026
- Ticket: LPD-86116
- What changed: These method overloads are removed:
updatePreviewFileEntryId(long, long),updateStyleBookEntry(long, long, boolean, String, String, String, long), andupdateStyleBookEntry(long, String, String)(overloads without aServiceContext). Instead, call one of the overloads with aServiceContextparameter; useServiceContextFactory.getInstance(className, request)for request-scoped callers, ornew ServiceContext()if only the default behavior (with a new modified date) is needed. - Reason: Service context is needed so export/import (and other callers) can transmit the modified date and other audit fields through the update path. Keeping the old overloads left a second API surface that silently dropped that information.
StyleBookEntryService.java
modules/apps/style-book/style-book-api/src/main/java/com/liferay/style/book/service/StyleBookEntryService.java
- Date: Apr. 21, 2026
- Ticket: LPD-86116
- What changed: Several methods to update style books or previews now have a new
ServiceContextparameter. Existing callers must pass aServiceContext; useServiceContextFactory.getInstance(className, actionRequest)for MVC action commands, and build a new one from the request and scope group for headless resources. - Reason: The remote service must pass a service context so the local service can transmit the modified date and other audit fields through the update paths. Without it, the remote surface silently drops that information.
BaseScriptingExecutor.java
modules/apps/portal-scripting/portal-scripting-api/src/main/java/com/liferay/portal/scripting/BaseScriptingExecutor.java
- Date: Apr. 22, 2026
- Ticket: LPD-85800
- What changed: The
BaseScriptingExecutorclass is removed. - Reason:
GroovyScriptingExecutorwas the only subclass. Its logic has been refactored, so the abstract base class is no longer needed.
ClassVisibilityChecker.java
modules/apps/portal-scripting/portal-scripting-api/src/main/java/com/liferay/portal/scripting/ClassVisibilityChecker.java
- Date: Apr. 22, 2026
- Ticket: LPD-85800
- What changed: The
ClassVisibilityCheckerclass is removed. - Reason: This class was the sandbox-policy helper for the JavaScript and Ruby/Python scripting executors, and it was consumed via the
JavaScriptClassVisibilityCheckersubclass as a RhinoClassShutter. Those executors have been removed, leavingClassVisibilityCheckerwith no usages. Groovy is the only remaining scripting language, and it never used it.
LayoutUtilityPageEntryServiceImpl.java
modules/apps/layout/layout-utility-page-service/src/main/java/com/liferay/layout/utility/page/service/impl/LayoutUtilityPageEntryServiceImpl.java
- Date: Apr. 23, 2026
- Ticket: LPD-86647
- What changed: The
updateLayoutUtilityPageEntry(long layoutUtilityPageEntryId, long previewFileEntryId)andupdateLayoutUtilityPageEntry(long layoutUtilityPageEntryId, String name)methods are removed. Instead, use the method overloads with aServiceContext. - Reason: These methods are replaced by equivalent methods that accept a
ServiceContext. This aligns the remote service with the local service and ensures that workflow, permissions, and audit metadata propagate correctly.
LayoutUtilityPageEntryLocalServiceImpl.java
modules/apps/layout/layout-utility-page-service/src/main/java/com/liferay/layout/utility/page/service/impl/LayoutUtilityPageEntryLocalServiceImpl.java
- Date: Apr. 23, 2026
- Ticket: LPD-86647
- What changed: The
updateLayoutUtilityPageEntry(long layoutUtilityPageEntryId, long previewFileEntryId)andupdateLayoutUtilityPageEntry(long layoutUtilityPageEntryId, String name)methods are removed. Instead, use the method overloads with aServiceContext. - Reason: These methods are replaced by equivalent methods that accept a
ServiceContext. This aligns the remote service with the local service and ensures that workflow, permissions, and audit metadata propagate correctly.
IndexerWriter.java
modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/indexer/IndexerWriter.java
- Date: Apr. 23, 2026
- Ticket: LPD-87320
- What changed: The new
shouldRun(long companyId)method is added. - Reason:
DefaultIndexer#getReindexEntryCountnow consults the indexer’sshouldRunpolicy, short-circuiting to0when it returnsfalse. This prevents indexers that opt out of a given reindex (e.g., per-definitionObjectEntryindexers during a full portal reindex) from running a filteredSELECT COUNT(*)query whose result is discarded, sincereindexCompanyalready no-ops via the sameshouldRuncheck.IndexerWriterImplis the only implementation in the codebase, so promotingshouldRunto the interface is the right approach.
AttachmentResource.java
modules/apps/commerce/headless/headless-commerce/headless-commerce-delivery-cart-api/src/main/java/com/liferay/headless/commerce/delivery/cart/resource/v1_0/AttachmentResource.java
- Date: May 5, 2026
- Ticket: LPD-75148
- What changed: The
getCartAttachmentsPageandgetCartByExternalReferenceCodeAttachmentsPagemethods have newSearch,Filter, andSort[]parameters. - Reason: This change adds support for searching and filtering attachments.
AttachmentResource.java
modules/apps/commerce/headless/headless-commerce/headless-commerce-delivery-order-api/src/main/java/com/liferay/headless/commerce/delivery/order/resource/v1_0/AttachmentResource.java
- Date: May 5, 2026
- Ticket: LPD-75148
- What changed: The
getCartAttachmentsPageandgetCartByExternalReferenceCodeAttachmentsPagemethods have newSearch,Filter, andSort[]parameters. - Reason: This change adds support for searching and filtering attachments.
Changes in portal-impl Classes
GitUtil.java
portal-impl/src/com/liferay/portal/tools/GitUtil.java
- Date: Mar. 14, 2026
- Ticket: LPD-82650
- What changed: The
getGitCommandReadermethod now returns acom.liferay.petra.io.unsync.UnsyncBufferedReaderinstead ofcom.liferay.portal.kernel.io.unsync.UnsyncBufferedReader. - Reason: The kernel
UnsyncBufferedReaderwas removed and replaced by thepetra-ioversion.
Changes in portal-kernel Classes
FilterTranslator.java
portal-kernel/src/com/liferay/portal/kernel/search/filter/FilterTranslator.java
- Date: Feb. 10, 2026
- Ticket: LPD-78663
- What changed: The
FilterTranslatorinterface is removed. - Reason: The abstract interface was not used. Only the implementation classes are directly used within their own internal module classes.
QueryTranslator.java
portal-kernel/src/com/liferay/portal/kernel/search/query/QueryTranslator.java
- Date: Feb. 10, 2026
- Ticket: LPD-78663
- What changed: The
QueryTranslatorinterface is removed. - Reason: The abstract interface was not used. Only the implementation classes are directly used within their own internal module classes.
WorkflowLog.java
portal-kernel/src/com/liferay/portal/kernel/workflow/WorkflowLog.java
- Date: Feb. 10, 2026
- Ticket: LPD-77823
- What changed: The new
getWorkflowContextmethod is added. - Reason: This change is necessary to save metadata from AI agents in the
KaleoLogtable.
DestinationNames.java
portal-kernel/src/com/liferay/portal/kernel/messaging/DestinationNames.java
- Date: Feb. 13, 2026
- Ticket: LPD-76073
- What changed: The
CMP_PROJECT_COMMENT_ADDEDdestination name is renamed toCMP_COMMENT_ADDED. - Reason: This change reflects the logic for adding comments consolidating in the
CMP_COMMENT_ADDEDdestination, instead of one per entity.
LayoutLocalService.java
portal-kernel/src/com/liferay/portal/kernel/service/LayoutLocalService.java
- Date: Feb. 17, 2026
- Ticket: LPD-78515
- What changed: The
getOrAddEmptyLayoutmethod has a newbooleanparameter,privateLayout. - Reason: This change supports exporting private pages in the Headless API.
Field.java
portal-kernel/src/com/liferay/portal/kernel/search/Field.java
- Date: Feb. 18, 2026
- Ticket: LPD-79553
- What changed: The
validate(String)method is removed. - Reason: Fields do not need to be internally validated.
DocumentImpl.java
portal-kernel/src/com/liferay/portal/kernel/search/DocumentImpl.java
- Date: Feb. 18, 2026
- Ticket: LPD-79553
- What changed: The
doGetField(String, boolean)method is removed. - Reason: The paths for getting and creating documents are separate now, so this method for a merged path is no longer needed.
FriendlyURLResolverRegistryUtil.java
portal-kernel/src/com/liferay/portal/kernel/portlet/FriendlyURLResolverRegistryUtil.java
- Date: Feb. 21, 2026
- Ticket: LPD-78504
- What changed: The
getFriendlyURLResolverandgetFriendlyURLResolversAsCollectionmethods now accept alongparameter forcompanyId. - Reason: This change enables filtering friendly URL resolvers by company ID.
HashedFilesRegistry.java
portal-kernel/src/com/liferay/portal/kernel/frontend/hashed/files/HashedFilesRegistry.java
- Date: Feb. 24, 2026
- Ticket: LPD-78555
- What changed: The new
getCachingLevel(HttpServletRequest)method is added. - Reason: This change is required to centralize the caching configuration.
PortletDataHandler.java
portal-kernel/src/com/liferay/exportimport/kernel/lar/PortletDataHandler.java
- Date: Feb. 25, 2026
- Ticket: LPD-77963
- What changed: The
getNamemethod is removed, in favor ofgetTitle(locale). - Reason: This change simplifies retrieving
BatchEnginePortletDataHandlertitles for the UI, and it enforces consistency in usinggetLabelLanguageKeyfrom the export/import descriptor for batch engine portlet data handlers.
ActionKeys.java
portal-kernel/src/com/liferay/portal/kernel/security/permission/ActionKeys.java
- Date: Feb. 27, 2026
- Ticket: LPD-78219
- What changed: The
MANAGE_COUNTRIESconstant value is removed, and theADD_COUNTRYconstant value is added. Additionally, all the uses ofMANAGE_COUNTRIESare substituted with eitherADD_COUNTRYat the portlet level, or eitherDELETEorUPDATEat the resource level. - Reason: This change is necessary to correctly manage permissions.
SearchContext.java
portal-kernel/src/com/liferay/portal/kernel/search/SearchContext.java
- Date: Mar. 5, 2026
- Ticket: LPD-81727
- What changed: The
registerBatchModeSyncFuturemethod now returns aFuture<?>instead ofNoticeableFuture<?>. Additionally, theunregisterBatchModeSyncFuture(Future<?>)method is removed. - Reason: The
registerBatchModeSyncFuturemethod now usesNoticeableFuture.addFutureListener()to remove completed futures from the batch mode sync set automatically, enabling self-cleanup without requiring callers to manually unregister. This makes the removed unregistering method unnecessary.
StringBundler.java
portal-kernel/src/com/liferay/portal/kernel/util/StringBundler.java
- Date: Mar. 10, 2026
- Ticket: LPD-82197
- What changed: The
com.liferay.portal.kernel.util.StringBundlerclass is removed. Instead, usecom.liferay.petra.string.StringBundler. - Reason: All usages have been migrated to
com.liferay.petra.string.StringBundler. This change consolidates string bundling and enforces code reuse.
QuickAccessEntry.java
portal-kernel/src/com/liferay/portal/kernel/servlet/taglib/ui/QuickAccessEntry.java
- Date: Mar. 10, 2026
- Ticket: LPD-82197
- What changed: The deprecated
setBody(com.liferay.portal.kernel.util.StringBundler)method is removed. Instead, usesetBody(com.liferay.petra.string.StringBundler). - Reason: The kernel
StringBundlerclass has been removed.
Serializer.java
portal-kernel/src/com/liferay/portal/kernel/io/Serializer.java
- Date: Mar. 11, 2026
- Ticket: LPD-82276
- What changed: The
com.liferay.portal.kernel.io.Serializerclass is removed. Instead, usecom.liferay.petra.io.Serializer. - Reason: All usages have been migrated to
com.liferay.petra.io.Serializer. This change consolidates serialization and enforces code reuse.
Deserializer.java
portal-kernel/src/com/liferay/portal/kernel/io/Deserializer.java
- Date: Mar. 11, 2026
- Ticket: LPD-82276
- What changed: The
com.liferay.portal.kernel.io.Deserializerclass has been removed. Instead, usecom.liferay.petra.io.Deserializer. - Reason: All usages have been migrated to
com.liferay.petra.io.Deserializer. This change consolidates deserialization and enforces code reuse.
LayoutSetPrototypeLocalService.java
portal-kernel/src/com/liferay/portal/kernel/service/LayoutSetPrototypeLocalService.java
- Date: Mar. 12, 2026
- Ticket: LPD-81592
- What changed: The
addLayoutSetPrototype(long, long, Map<Locale, String>, Map<Locale, String>, boolean, boolean, boolean, ServiceContext)andupdateLayoutSetPrototype(long, Map<Locale, String>, Map<Locale, String>, boolean, boolean, boolean, ServiceContext)methods are removed. - Reason: The Ready for propagation toggle allowed admins to control when site template changes propagated to connected sites. This feature has been completely removed from the UI and the service layer, and an upgrade process removes it for existing site templates.
LayoutSetPrototypeService.java
portal-kernel/src/com/liferay/portal/kernel/service/LayoutSetPrototypeService.java
- Date: Mar. 12, 2026
- Ticket: LPD-81592
- What changed: The
addLayoutSetPrototype(Map<Locale, String>, Map<Locale, String>, boolean, boolean, boolean, ServiceContext)andupdateLayoutSetPrototype(long, Map<Locale, String>, Map<Locale, String>, boolean, boolean, boolean, ServiceContext)methods are removed. Additionally, theaddLayoutSetPrototype(String, String, boolean, boolean, boolean, ServiceContext)no longer has abooleanparameter forreadyForPropagation. - Reason: The Ready for propagation toggle allowed admins to control when site template changes propagated to connected sites. This feature has been completely removed from the UI and the service layer, and an upgrade process removes it for existing site templates.
UnsyncByteArrayInputStream.java
portal-kernel/src/com/liferay/portal/kernel/io/unsync/UnsyncByteArrayInputStream.java
- Date: Mar. 12, 2026
- Ticket: LPD-82456
- What changed: The
com.liferay.portal.kernel.io.unsync.UnsyncByteArrayInputStreamclass is removed. Instead, usecom.liferay.petra.io.unsync.UnsyncByteArrayInputStream. - Reason: This change consolidates the code and enforces code reuse.
UnsyncByteArrayOutputStream.java
portal-kernel/src/com/liferay/portal/kernel/io/unsync/UnsyncByteArrayOutputStream.java
- Date: Mar. 12, 2026
- Ticket: LPD-82456
- What changed: The
com.liferay.portal.kernel.io.unsync.UnsyncByteArrayOutputStreamclass is removed. Instead, usecom.liferay.petra.io.unsync.UnsyncByteArrayOutputStream. - Reason: This change consolidates the code and enforces code reuse.
UnsyncStringReader.java
portal-kernel/src/com/liferay/portal/kernel/io/unsync/UnsyncStringReader.java
- Date: Mar. 13, 2026
- Ticket: LPD-82616
- What changed: The
com.liferay.portal.kernel.io.unsync.UnsyncStringReaderclass is removed. Instead, usecom.liferay.petra.io.unsync.UnsyncStringReader. - Reason: This change consolidates the code and enforces code reuse.
UnsyncStringWriter.java
portal-kernel/src/com/liferay/portal/kernel/io/unsync/UnsyncStringWriter.java
- Date: Mar. 13, 2026
- Ticket: LPD-82616
- What changed: The
com.liferay.portal.kernel.io.unsync.UnsyncStringWriterclass is removed. Instead, usecom.liferay.petra.io.unsync.UnsyncStringWriter. - Reason: This change consolidates the code and enforces code reuse.
UnsyncBufferedReader.java
portal-kernel/src/com/liferay/portal/kernel/io/unsync/UnsyncBufferedReader.java
- Date: Mar. 14, 2026
- Ticket: LPD-82650
- What changed: The
com.liferay.portal.kernel.io.unsync.UnsyncBufferedReaderclass is removed. Instead, usecom.liferay.petra.io.unsync.UnsyncBufferedReader. - Reason: All usages are migrated to
com.liferay.petra.io.unsync.UnsyncBufferedReader. This change consolidates the code and enforces code reuse.
UnsyncBufferedWriter.java
portal-kernel/src/com/liferay/portal/kernel/io/unsync/UnsyncBufferedWriter.java
- Date: Mar. 14, 2026
- Ticket: LPD-82650
- What changed: The
com.liferay.portal.kernel.io.unsync.UnsyncBufferedWriterclass is removed. Instead, usecom.liferay.petra.io.unsync.UnsyncBufferedWriter. - Reason: All usages are migrated to
com.liferay.petra.io.unsync.UnsyncBufferedWriter. This change consolidates the code and enforces code reuse.
UnsyncBufferedInputStream.java
portal-kernel/src/com/liferay/portal/kernel/io/unsync/UnsyncBufferedInputStream.java
- Date: Mar. 17, 2026
- Ticket: LPD-82823
- What changed: The
com.liferay.portal.kernel.io.unsync.UnsyncBufferedInputStreamis removed. Instead, usecom.liferay.petra.io.unsync.UnsyncBufferedInputStream. - Reason: This change consolidates the code and enforces code reuse.
UnsyncBufferedOutputStream.java
portal-kernel/src/com/liferay/portal/kernel/io/unsync/UnsyncBufferedOutputStream.java
- Date: Mar. 17, 2026
- Ticket: LPD-82823
- What changed: The
com.liferay.portal.kernel.io.unsync.UnsyncBufferedOutputStreamclass is removed. Instead, usecom.liferay.petra.io.unsync.UnsyncBufferedOutputStream. - Reason: This change consolidates the code and enforces code reuse.
UnsyncCharArrayReader.java
portal-kernel/src/com/liferay/portal/kernel/io/unsync/UnsyncCharArrayReader.java
- Date: Mar. 17, 2026
- Ticket: LPD-82919
- What changed: The
com.liferay.portal.kernel.io.unsync.UnsyncCharArrayReaderclass is removed. Instead, usecom.liferay.petra.io.unsync.UnsyncCharArrayReader. - Reason: This change consolidates the code and enforces code reuse.
UnsyncCharArrayWriter.java
portal-kernel/src/com/liferay/portal/kernel/io/unsync/UnsyncCharArrayWriter.java
- Date: Mar. 17, 2026
- Ticket: LPD-82919
- What changed: The
com.liferay.portal.kernel.io.unsync.UnsyncCharArrayWriterclass is removed. Instead, usecom.liferay.petra.io.unsync.UnsyncCharArrayWriter. - Reason: This change consolidates the code and enforces code reuse.
UnsyncFilterInputStream.java
portal-kernel/src/com/liferay/portal/kernel/io/unsync/UnsyncFilterInputStream.java
- Date: Mar. 17, 2026
- Ticket: LPD-82919
- What changed: The
com.liferay.portal.kernel.io.unsync.UnsyncFilterInputStreamclass is removed. Instead, usecom.liferay.petra.io.unsync.UnsyncFilterInputStream. - Reason: This change consolidates the code and enforces code reuse.
UnsyncFilterOutputStream.java
portal-kernel/src/com/liferay/portal/kernel/io/unsync/UnsyncFilterOutputStream.java
- Date: Mar. 17, 2026
- Ticket: LPD-82919
- What changed: The
com.liferay.portal.kernel.io.unsync.UnsyncFilterOutputStreamclass is removed. Instead, usecom.liferay.petra.io.unsync.UnsyncFilterOutputStream. - Reason: This change consolidates the code and enforces code reuse.
UnsyncPrintWriter.java
portal-kernel/src/com/liferay/portal/kernel/io/unsync/UnsyncPrintWriter.java
- Date: Mar. 17, 2026
- Ticket: LPD-82919
- What changed: The
com.liferay.portal.kernel.io.unsync.UnsyncPrintWriterclass is removed. Instead, usecom.liferay.petra.io.unsync.UnsyncPrintWriter. - Reason: This change consolidates the code and enforces code reuse.
AnnotatedObjectInputStream.java
portal-kernel/src/com/liferay/portal/kernel/io/AnnotatedObjectInputStream.java
- Date: Mar. 18, 2026
- Ticket: LPD-83085
- What changed: The
com.liferay.portal.kernel.io.AnnotatedObjectInputStreamclass is removed. Instead, usecom.liferay.petra.io.AnnotatedObjectInputStream. - Reason: This change consolidates the code and enforces code reuse.
AnnotatedObjectOutputStream.java
portal-kernel/src/com/liferay/portal/kernel/io/AnnotatedObjectOutputStream.java
- Date: Mar. 18, 2026
- Ticket: LPD-83085
- What changed: The
com.liferay.portal.kernel.io.AnnotatedObjectOutputStreamclass is removed. Instead, usecom.liferay.petra.io.AnnotatedObjectOutputStream. - Reason: This change consolidates the code and enforces code reuse.
OutputStreamWriter.java
portal-kernel/src/com/liferay/portal/kernel/io/OutputStreamWriter.java
- Date: Mar. 18, 2026
- Ticket: LPD-83085
- What changed: The
com.liferay.portal.kernel.io.OutputStreamWriterclass is removed. Instead, usecom.liferay.petra.io.OutputStreamWriter. - Reason: This change consolidates the code and enforces code reuse.
WriterOutputStream.java
portal-kernel/src/com/liferay/portal/kernel/io/WriterOutputStream.java
- Date: Mar. 18, 2026
- Ticket: LPD-83085
- What changed: The
com.liferay.portal.kernel.io.WriterOutputStreamclass is removed. Instead, usecom.liferay.petra.io.WriterOutputStream. - Reason: This change consolidates the code and enforces code reuse.
ProtectedAnnotatedObjectInputStream.java
portal-kernel/src/com/liferay/portal/kernel/io/ProtectedAnnotatedObjectInputStream.java
- Date: Mar. 18, 2026
- Ticket: LPD-83085
- What changed: The
com.liferay.portal.kernel.io.ProtectedAnnotatedObjectInputStreamclass is removed. Instead, usecom.liferay.petra.io.ProtectedAnnotatedObjectInputStream. - Reason: This change consolidates the code and enforces code reuse.
ProtectedObjectInputStream.java
portal-kernel/src/com/liferay/portal/kernel/io/ProtectedObjectInputStream.java
- Date: Mar. 18, 2026
- Ticket: LPD-83085
- What changed: The
com.liferay.portal.kernel.io.ProtectedObjectInputStreamclass is removed. Instead, usecom.liferay.petra.io.ProtectedObjectInputStream. - Reason: This change consolidates the code and enforces code reuse.
DummyOutputStream.java
portal-kernel/src/com/liferay/portal/kernel/io/DummyOutputStream.java
- Date: Mar. 18, 2026
- Ticket: LPD-83085
- What changed: The
com.liferay.portal.kernel.io.DummyOutputStreamclass is removed. Instead, usecom.liferay.petra.io.DummyOutputStream. - Reason: This change consolidates the code and enforces code reuse.
DummyWriter.java
portal-kernel/src/com/liferay/portal/kernel/io/DummyWriter.java
- Date: Mar. 18, 2026
- Ticket: LPD-83085
- What changed: The
com.liferay.portal.kernel.io.DummyWriterclass is removed. Instead, usecom.liferay.petra.io.DummyWriter. - Reason: This change consolidates the code and enforces code reuse.
BigEndianCodec.java
portal-kernel/src/com/liferay/portal/kernel/io/BigEndianCodec.java
- Date: Mar. 18, 2026
- Ticket: LPD-83085
- What changed: The
com.liferay.portal.kernel.io.BigEndianCodecclass is removed. Instead, usecom.liferay.petra.io.BigEndianCodec. - Reason: This change consolidates the code and enforces code reuse.
ByteArrayFileInputStream.java
portal-kernel/src/com/liferay/portal/kernel/io/ByteArrayFileInputStream.java
- Date: Mar. 18, 2026
- Ticket: LPD-83085
- What changed: The
com.liferay.portal.kernel.io.ByteArrayFileInputStreamclass is removed. Instead, usecom.liferay.petra.io.ByteArrayFileInputStream. - Reason: This change consolidates the code and enforces code reuse.
SerializationConstants.java
portal-kernel/src/com/liferay/portal/kernel/io/constants/SerializationConstants.java
- Date: Mar. 18, 2026
- Ticket: LPD-83085
- What changed: The
com.liferay.portal.kernel.io.constants.SerializationConstantsclass is removed. Instead, usecom.liferay.petra.io.SerializationConstants. - Reason: This change consolidates the code and enforces code reuse.
PathHolder.java
portal-kernel/src/com/liferay/portal/kernel/io/PathHolder.java
- Date: Mar. 18, 2026
- Ticket: LPD-83085
- What changed: The
com.liferay.portal.kernel.io.PathHolderclass is removed. - Reason: This class was unused.
ClassLoaderObjectInputStream.java
portal-kernel/src/com/liferay/portal/kernel/util/ClassLoaderObjectInputStream.java
- Date: Mar. 18, 2026
- Ticket: LPD-83085
- What changed: The
com.liferay.portal.kernel.util.ClassLoaderObjectInputStreamclass is removed. Instead, usecom.liferay.petra.io.ClassLoaderObjectInputStream. - Reason: This change consolidates the code and enforces code reuse.
ProtectedClassLoaderObjectInputStream.java
portal-kernel/src/com/liferay/portal/kernel/util/ProtectedClassLoaderObjectInputStream.java
- Date: Mar. 18, 2026
- Ticket: LPD-83085
- What changed: The
com.liferay.portal.kernel.util.ProtectedClassLoaderObjectInputStreamclass is removed. Instead, usecom.liferay.petra.io.ProtectedClassLoaderObjectInputStream. - Reason: This change consolidates the code and enforces code reuse.
AsyncBroker.java
portal-kernel/src/com/liferay/portal/kernel/concurrent/AsyncBroker.java
- Date: Mar. 19, 2026
- Ticket: LPD-83105
- What changed: The
com.liferay.portal.kernel.concurrent.AsyncBrokerclass is removed. Instead, usecom.liferay.petra.concurrent.AsyncBroker. - Reason: This change consolidates the code and enforces code reuse.
BaseFutureListener.java
portal-kernel/src/com/liferay/portal/kernel/concurrent/BaseFutureListener.java
- Date: Mar. 19, 2026
- Ticket: LPD-83105
- What changed: The
com.liferay.portal.kernel.concurrent.BaseFutureListenerclass is removed. Instead, usecom.liferay.petra.concurrent.BaseFutureListener. - Reason: This change consolidates the code and enforces code reuse.
DefaultNoticeableFuture.java
portal-kernel/src/com/liferay/portal/kernel/concurrent/DefaultNoticeableFuture.java
- Date: Mar. 19, 2026
- Ticket: LPD-83105
- What changed: The
com.liferay.portal.kernel.concurrent.DefaultNoticeableFutureclass is removed. Instead, usecom.liferay.petra.concurrent.DefaultNoticeableFuture. - Reason: This change consolidates the code and enforces code reuse.
FutureConverter.java
portal-kernel/src/com/liferay/portal/kernel/concurrent/FutureConverter.java
- Date: Mar. 19, 2026
- Ticket: LPD-83105
- What changed: The
com.liferay.portal.kernel.concurrent.FutureConverterclass is removed. Instead, usecom.liferay.petra.concurrent.FutureConverter. - Reason: This change consolidates the code and enforces code reuse.
FutureListener.java
portal-kernel/src/com/liferay/portal/kernel/concurrent/FutureListener.java
- Date: Mar. 19, 2026
- Ticket: LPD-83105
- What changed: The
com.liferay.portal.kernel.concurrent.FutureListenerclass is removed. Instead, usecom.liferay.petra.concurrent.FutureListener. - Reason: This change consolidates the code and enforces code reuse.
NoticeableFuture.java
portal-kernel/src/com/liferay/portal/kernel/concurrent/NoticeableFuture.java
- Date: Mar. 19, 2026
- Ticket: LPD-83105
- What changed: The
com.liferay.portal.kernel.concurrent.NoticeableFutureclass is removed. Instead, usecom.liferay.petra.concurrent.NoticeableFuture. - Reason: This change consolidates the code and enforces code reuse.
NoticeableFutureConverter.java
portal-kernel/src/com/liferay/portal/kernel/concurrent/NoticeableFutureConverter.java
- Date: Mar. 19, 2026
- Ticket: LPD-83105
- What changed: The
com.liferay.portal.kernel.concurrent.NoticeableFutureConverterclass is removed. Instead, usecom.liferay.petra.concurrent.NoticeableFutureConverter. - Reason: This change consolidates the code and enforces code reuse.
ThreadPoolExecutor.java
portal-kernel/src/com/liferay/portal/kernel/concurrent/ThreadPoolExecutor.java
- Date: Mar. 19, 2026
- Ticket: LPD-83105
- What changed: The
com.liferay.portal.kernel.concurrent.ThreadPoolExecutorclass is removed. Instead, usecom.liferay.petra.concurrent.NoticeableThreadPoolExecutor. - Reason: This change consolidates the code and enforces code reuse.
ThreadPoolHandler.java
portal-kernel/src/com/liferay/portal/kernel/concurrent/ThreadPoolHandler.java
- Date: Mar. 19, 2026
- Ticket: LPD-83105
- What changed: The
com.liferay.portal.kernel.concurrent.ThreadPoolHandlerclass is removed. Instead, usecom.liferay.petra.concurrent.ThreadPoolHandler. - Reason: This change consolidates the code and enforces code reuse.
ThreadPoolHandlerAdapter.java
portal-kernel/src/com/liferay/portal/kernel/concurrent/ThreadPoolHandlerAdapter.java
- Date: Mar. 19, 2026
- Ticket: LPD-83105
- What changed: The
com.liferay.portal.kernel.concurrent.ThreadPoolHandlerAdapterclass is removed. Instead, usecom.liferay.petra.concurrent.ThreadPoolHandlerAdapter. - Reason: This change consolidates the code and enforces code reuse.
AbortPolicy.java
portal-kernel/src/com/liferay/portal/kernel/concurrent/AbortPolicy.java
- Date: Mar. 19, 2026
- Ticket: LPD-83105
- What changed: The
com.liferay.portal.kernel.concurrent.AbortPolicyclass is removed. Instead, usejava.util.concurrent.ThreadPoolExecutor.AbortPolicy. - Reason: This change consolidates the code and enforces code reuse.
CallerRunsPolicy.java
portal-kernel/src/com/liferay/portal/kernel/concurrent/CallerRunsPolicy.java
- Date: Mar. 19, 2026
- Ticket: LPD-83105
- What changed: The
com.liferay.portal.kernel.concurrent.CallerRunsPolicyclass is removed. Instead, usejava.util.concurrent.ThreadPoolExecutor.CallerRunsPolicy. - Reason: The kernel
ThreadPoolExecutorclass is removed.
RejectedExecutionHandler.java
portal-kernel/src/com/liferay/portal/kernel/concurrent/RejectedExecutionHandler.java
- Date: Mar. 19, 2026
- Ticket: LPD-83105
- What changed: The
com.liferay.portal.kernel.concurrent.RejectedExecutionHandlerclass is removed. Instead, usejava.util.concurrent.RejectedExecutionHandler. - Reason: The kernel
ThreadPoolExecutorclass is removed.
TaskQueue.java
portal-kernel/src/com/liferay/portal/kernel/concurrent/TaskQueue.java
- Date: Mar. 19, 2026
- Ticket: LPD-83105
- What changed: The
com.liferay.portal.kernel.concurrent.TaskQueueclass is removed. - Reason: This class was only used by the kernel
ThreadPoolExecutorclass, which is now removed.
ClusterMasterExecutor.java
portal-kernel/src/com/liferay/portal/kernel/cluster/ClusterMasterExecutor.java
- Date: Mar. 19, 2026
- Ticket: LPD-83105
- What changed: The
executorOnMastermethod now returns acom.liferay.petra.concurrent.NoticeableFutureinstead of acom.liferay.portal.kernel.concurrent.NoticeableFuture. - Reason:
NoticeableFuturewas migrated to thepetra-concurrentmodule.
FutureClusterResponses.java
portal-kernel/src/com/liferay/portal/kernel/cluster/FutureClusterResponses.java
- Date: Mar. 19, 2026
- Ticket: LPD-83105
- What changed:
FutureClusterResponsesnow extendscom.liferay.petra.concurrent.DefaultNoticeableFutureinstead ofcom.liferay.portal.kernel.concurrent.DefaultNoticeableFuture. - Reason:
DefaultNoticeableFuturewas migrated to thepetra-concurrentmodule.
ReaderInputStream.java
portal-kernel/src/com/liferay/portal/kernel/io/ReaderInputStream.java
- Date: Mar. 19, 2026
- Ticket: LPD-83273
- What changed: The
ReaderInputStreamclass is removed. - Reason: This class is no longer used.
Indexer.java
portal-kernel/src/com/liferay/portal/kernel/search/Indexer.java
- Date: Mar. 25, 2026
- Ticket: LPD-83771
- What changed: The
reindex(String[])method is removed. Instead, usereindexCompany(long companyId). - Reason: The removed method always received a single-element array containing a company ID as a
String, and every implementation only usedids[0]. This change improves the code clarity and distinguishes this route fromreindex(long classPK).
BaseIndexer.java
portal-kernel/src/com/liferay/portal/kernel/search/BaseIndexer.java
- Date: Mar. 25, 2026
- Ticket: LPD-83771
- What changed: The
reindex(String[])anddoReindex(String[] ids)methods are removed. UsereindexCompany(long companyId)instead ofreindex(String[]), and usedoReindexCompany(long companyId)instead ofdoReindex(String[]). - Reason: The removed method always received a single-element array containing a company ID as a
String. Both the public and protected abstract methods are updated to acceptlong companyIddirectly.
BaseSearcher.java
portal-kernel/src/com/liferay/portal/kernel/search/BaseSearcher.java
- Date: Mar. 25, 2026
- Ticket: LPD-83771
- What changed: The
doReindex(String[])method is removed. Instead, usedoReindexCompany(long companyId). - Reason: This change reflects change to
doReindexCompanyinBaseIndexer.
DummyIndexer.java
portal-kernel/src/com/liferay/portal/kernel/search/dummy/DummyIndexer.java
- Date: Mar. 25, 2026
- Ticket: LPD-83771
- What changed: The
reindex(String[])method is removed. Instead, usereindexCompany(long companyId). - Reason: This change reflects the changes to the
Indexerinterface.
DuplicateUniqueFinderRowsCleaner.java
portal-kernel/src/com/liferay/portal/kernel/dao/db/DuplicateUniqueFinderRowsCleaner.java
- Date: Apr. 10, 2026
- Ticket: LPD-83003
- What changed: The
deleteDuplicatesmethod now returns abooleanvalue, which indicates whether the duplicate cleanup deleted data. It returnsfalsewhen_hasUnpopulatedColumndetects that one of the indexed columns in_columnNamesis entirelynullor empty for all rows in_tableName. - Reason: This change is required so callers (such as
IndexUpdaterUtil) can distinguish between duplicate rows being deleted successfully (so unique index creation can be retried), and duplicate cleanup being intentionally skipped because a newly added indexed column was not populated yet. Without this extra information, the caller cannot safely decide whether retrying unique index creation is correct.
ScriptingValidator.java
portal-kernel/src/com/liferay/portal/kernel/scripting/ScriptingValidator.java
- Date: Apr. 22, 2026
- Ticket: LPD-85800
- What changed: The
ScriptingValidatorinterface is removed. Itsvalidate(String)method is moved toScriptingExecutor. - Reason: The validator was a parallel SPI to
ScriptingExecutorwith the same per-language registration pattern. Merging its logic withScriptingExecutorremoves the duplicate service tracker and keeps all language-specific scripting behavior in a single interface.
Scripting.java
portal-kernel/src/com/liferay/portal/kernel/scripting/Scripting.java
- Date: Apr. 22, 2026
- Ticket: LPD-85800
- What changed: The
clearCache(String language)method is removed. - Reason: This method is no longer used.
ScriptingExecutor.java
portal-kernel/src/com/liferay/portal/kernel/scripting/ScriptingExecutor.java
- Date: Apr. 22, 2026
- Ticket: LPD-85800
- What changed: The
clearCacheandgetScriptingContainermethods are removed. - Reason: These methods are no longer used.
ScriptingUtil.java
portal-kernel/src/com/liferay/portal/kernel/scripting/ScriptingUtil.java
- Date: Apr. 22, 2026
- Ticket: LPD-85800
- What changed: The static
clearCache(String language)method is removed. - Reason: This change follows the removal of
Scripting#clearCache(String).
BooleanQuery.java
portal-kernel/src/com/liferay/portal/kernel/search/BooleanQuery.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed:
BooleanQueryis now a class that extendsBaseQueryImplinstead of an interface; code that implements it must now extend it or use it directly. Theadd(Query, BooleanClauseOccur)method no longer throws aParseException. Additionally, theadd(Query, String)method is removed; instead, useadd(Query, BooleanClauseOccur). - Reason:
BooleanQueryImplwas the only implementation ofBooleanQuery, so merging them into a single class improves the code structure. The method that accepted aStringparameter always converted it to aBooleanClauseOccur, so the extra method overload was redundant.
BooleanQueryImpl.java
portal-kernel/src/com/liferay/portal/kernel/search/generic/BooleanQueryImpl.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed: The
BooleanQueryImplis removed. UseBooleanQuerydirectly instead. - Reason:
BooleanQueryis now a concrete class that incorporates all functionality fromBooleanQueryImpl, making the separate implementation class unnecessary.
BooleanClauseFactory.java
portal-kernel/src/com/liferay/portal/kernel/search/BooleanClauseFactory.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed: The
BooleanClauseFactoryinterface is removed. Instead, createBooleanClauseinstances directly. - Reason: The factory class is no longer needed to create
BooleanClauseinstances.
BooleanClauseFactoryUtil.java
portal-kernel/src/com/liferay/portal/kernel/search/BooleanClauseFactoryUtil.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed: The
BooleanClauseFactoryUtilutility class is deleted. Instead, createBooleanClauseinstances directly. - Reason: This static utility is no longer needed.
BooleanClauseFactoryImpl.java
portal-kernel/src/com/liferay/portal/kernel/search/generic/BooleanClauseFactoryImpl.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed: The
BooleanClauseFactoryImplclass is deleted. Instead, create aBooleanClausedirectly. - Reason: The factory implementation is no longer needed.
BooleanClause.java
portal-kernel/src/com/liferay/portal/kernel/search/BooleanClause.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed:
BooleanClauseis now a concrete class instead of an interface. Code that implementsBooleanClausemust be updated to extend it or use it directly instead. - Reason:
BooleanClauseImplwas the only implementation of theBooleanClauseinterface. Merging them into a single POJO class simplifies the code structure.
BooleanClauseImpl.java
portal-kernel/src/com/liferay/portal/kernel/search/generic/BooleanClauseImpl.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed: The
BooleanClauseImplclass is deleted. Instead, useBooleanClausedirectly. - Reason:
BooleanClauseis now a concrete class that incorporates all functionality fromBooleanClauseImpl, making the separate implementation class unnecessary.
BooleanClauseOccur.java
portal-kernel/src/com/liferay/portal/kernel/search/BooleanClauseOccur.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed:
BooleanClauseOccuris now anenuminstead of an interface. Additionally, thegetNamemethod is removed, and the staticMUST,MUST_NOT, andSHOULDfields are nowenumconstants instead ofBooleanClauseOccurImplinstances. - Reason: This change simplifies the code structure. The three constants are a fixed set of values that are best represented as an
enum.
BooleanClauseOccurImpl.java
portal-kernel/src/com/liferay/portal/kernel/search/BooleanClauseOccurImpl.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed: The
BooleanClauseOccurImplclass is deleted. - Reason:
BooleanClauseOccuris now anenum, so the separate implementation class is no longer needed.
TermQuery.java
portal-kernel/src/com/liferay/portal/kernel/search/TermQuery.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed:
TermQueryis now a concrete class that extendsBaseQueryImpl, instead of an interface. Code that implementsTermQuerymust be updated to extend it or use it directly instead. - Reason:
TermQueryImplwas the only implementation of theTermQueryinterface. Merging them into a single POJO class simplifies the code structure.
TermQueryImpl.java
portal-kernel/src/com/liferay/portal/kernel/search/generic/TermQueryImpl.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed: The
TermQueryImplclass is removed. Instead, useTermQuerydirectly. - Reason:
TermQueryis now a concrete class that incorporates all functionality fromTermQueryImpl, making the separate implementation class unnecessary.
QueryTerm.java
portal-kernel/src/com/liferay/portal/kernel/search/QueryTerm.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed:
QueryTermis now a concrete class instead of an interface. Code that implementsQueryTermmust be updated to use it directly instead. - Reason:
QueryTermImplwas the only implementation of theQueryTerminterface. Merging them into a single POJO class simplifies the code structure.
QueryTermImpl.java
portal-kernel/src/com/liferay/portal/kernel/search/generic/QueryTermImpl.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed: The
QueryTermImplclass is removed. Instead, useQueryTermdirectly. - Reason:
QueryTermis now a concrete class that incorporates all functionality fromQueryTermImpl, making the separate implementation class unnecessary.
TermRangeQuery.java
portal-kernel/src/com/liferay/portal/kernel/search/TermRangeQuery.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed:
TermRangeQueryis now a concrete class that extendsBaseQueryImpl, instead of an interface. Code that implementsTermRangeQuerymust be updated to extend it or use it directly instead. - Reason:
TermRangeQueryImplwas the only implementation of theTermRangeQueryinterface. Merging them into a single POJO class simplifies the code structure.
TermRangeQueryImpl.java
portal-kernel/src/com/liferay/portal/kernel/search/generic/TermRangeQueryImpl.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed: The
TermRangeQueryImplclass is removed. Instead, useTermRangeQuerydirectly. - Reason:
TermRangeQueryis now a concrete class that incorporates all functionality fromTermRangeQueryImpl, making the separate implementation class unnecessary.
BaseBooleanQueryImpl.java
portal-kernel/src/com/liferay/portal/kernel/search/BaseBooleanQueryImpl.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed: The
BaseBooleanQueryImplabstract class is removed. Its methods (addTermsandparseKeywords) are moved intoBooleanQuery. - Reason:
BooleanQueryImplwas the only subclass ofBaseBooleanQueryImpl. The extra layer of inheritance was unnecessary.
WildcardQuery.java
portal-kernel/src/com/liferay/portal/kernel/search/WildcardQuery.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed:
WildcardQueryis now a concrete class that extendsBaseQueryImpl, instead of an interface. Code that implementsWildcardQuerymust be updated to extend it or use it directly instead. - Reason:
WildcardQueryImplwas the only implementation of theWildcardQueryinterface. Merging them into a single POJO class simplifies the code structure.
WildcardQueryImpl.java
portal-kernel/src/com/liferay/portal/kernel/search/generic/WildcardQueryImpl.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed: The
WildcardQueryImplclass is removed. Instead, useWildcardQuerydirectly. - Reason:
WildcardQueryis now a concrete class that incorporates all functionality fromWildcardQueryImpl, making the separate implementation class unnecessary.
Query.java
portal-kernel/src/com/liferay/portal/kernel/search/Query.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed:
Queryis now an abstract class instead of an interface. Code that implements Query must be updated to extend it instead. - Reason:
BaseQueryImplwas the only direct implementation of theQueryinterface. Merging them into a single abstract class simplifies the code structure.
BaseQueryImpl.java
portal-kernel/src/com/liferay/portal/kernel/search/BaseQueryImpl.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed: The
BaseQueryImplabstract class is removed. Instead, extendQuerydirectly. - Reason:
Queryis now an abstract class that incorporates all functionality fromBaseQueryImpl, making the separate base class unnecessary.
DisMaxQuery.java
portal-kernel/src/com/liferay/portal/kernel/search/generic/DisMaxQuery.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed:
DisMaxQueryis moved to thecom.liferay.portal.kernel.searchpackage. - Reason: The generic sub-package is being removed, to flatten the search query class hierarchy into a single package.
FuzzyQuery.java
portal-kernel/src/com/liferay/portal/kernel/search/generic/FuzzyQuery.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed:
FuzzyQueryis moved to thecom.liferay.portal.kernel.searchpackage. - Reason: The generic sub-package is being removed, to flatten the search query class hierarchy into a single package.
MatchAllQuery.java
portal-kernel/src/com/liferay/portal/kernel/search/generic/MatchAllQuery.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed:
MatchAllQueryis moved to thecom.liferay.portal.kernel.searchpackage. - Reason: The generic sub-package is being removed, to flatten the search query class hierarchy into a single package.
MatchQuery.java
portal-kernel/src/com/liferay/portal/kernel/search/generic/MatchQuery.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed:
MatchQueryis moved to thecom.liferay.portal.kernel.searchpackage. - Reason: The generic sub-package is being removed, to flatten the search query class hierarchy into a single package.
MoreLikeThisQuery.java
portal-kernel/src/com/liferay/portal/kernel/search/generic/MoreLikeThisQuery.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed:
MoreLikeThisQueryis moved to thecom.liferay.portal.kernel.searchpackage. - Reason: The generic sub-package is being removed, to flatten the search query class hierarchy into a single package.
MultiMatchQuery.java
portal-kernel/src/com/liferay/portal/kernel/search/generic/MultiMatchQuery.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed:
MultiMatchQueryis moved to thecom.liferay.portal.kernel.searchpackage. - Reason: The generic sub-package is being removed, to flatten the search query class hierarchy into a single package.
NestedQuery.java
portal-kernel/src/com/liferay/portal/kernel/search/generic/NestedQuery.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed:
NestedQueryis moved to thecom.liferay.portal.kernel.searchpackage. - Reason: The generic sub-package is being removed, to flatten the search query class hierarchy into a single package.
StringQuery.java
portal-kernel/src/com/liferay/portal/kernel/search/generic/StringQuery.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed:
StringQueryis moved to thecom.liferay.portal.kernel.searchpackage. - Reason: The generic sub-package is being removed, to flatten the search query class hierarchy into a single package.
packageinfo
portal-kernel/src/com/liferay/portal/kernel/search/generic/packageinfo
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed: The
com.liferay.portal.kernel.search.genericpackage is removed. - Reason: All classes have been moved to
com.liferay.portal.kernel.search, so a separate generic sub-package is no longer needed.
QueryVisitor.java
portal-kernel/src/com/liferay/portal/kernel/search/query/QueryVisitor.java
- Date: Apr. 25, 2026
- Ticket: LPD-87417
- What changed: The
DisMaxQuery,FuzzyQuery,MatchAllQuery,MatchQuery,MoreLikeThisQuery,MultiMatchQuery,NestedQuery, andStringQueryclasses are now imported from thecom.liferay.portal.kernel.searchpackage. Classes implementingQueryVisitormust update their imports and@Overrideannotations to match the new parameter types. - Reason: The corresponding
*Queryclasses were moved out of the generic sub-package intocom.liferay.portal.kernel.search.
Changes in Taglibs
BodyContentWrapper.java
util-taglib/src/com/liferay/taglib/BodyContentWrapper.java
- Date: Mar. 13, 2026
- Ticket: LPD-82616
- What changed: The
BodyContentWrapperconstructor now has acom.liferay.petra.io.unsync.UnsyncStringWriterparameter instead ofcom.liferay.portal.kernel.io.unsync.UnsyncStringWriter. - Reason:
UnsyncStringWriterwas migrated fromportal-kerneltopetra-io.
Changes in util-java Classes
XMLSafeReader.java
util-java/src/com/liferay/util/xml/XMLSafeReader.java
- Date: Mar. 13, 2026
- Ticket: LPD-82616
- What changed:
XMLSafeReadernow extendscom.liferay.petra.io.unsync.UnsyncStringReaderinstead ofcom.liferay.portal.kernel.io.unsync.UnsyncStringReader. - Reason:
UnsyncStringReaderwas migrated fromportal-kerneltopetra-io.
Changes in util-bridges Classes
ScriptPostProcess.java
util-bridges/src/com/liferay/util/bridges/common/ScriptPostProcess.java
- Date: Mar. 10, 2026
- Ticket: LPD-82197
- What changed: The deprecated
setInitalPage(com.liferay.portal.kernel.util.StringBundler)method is removed. Instead, usesetInitalPage(com.liferay.petra.string.StringBundler). - Reason: The kernel
StringBundlerclass has been removed.