2026 Deprecations and Breaking Changes

Liferay DXP 2026.Q1 Breaking Changes

Breaking changes break or significantly alter existing functionality or code structure. Here are all of the breaking changes for Liferay DXP 2026.Q1. 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 ChangesDescriptionReferences
AWS S3 Store: NTLM ProxyDue to the AWS SDK upgrade to 2.0, NTLM proxy authentication no longer works to connect to AWS, because the ntlmProxyDomain and ntlmProxyWorkstation keys are no longer used. Either use standard (username/password) authentication, or switch to another proxy solution.LPD-58512
AWS S3 Store: Custom Signer OverridesDue to the AWS SDK upgrade to 2.0, the signer override behavior has changed. If you rely on signer override for compatibility with older S3-compatible devices, you must verify your compatibility with AWS SDK 2.0’s default signing behavior.LPD-58512
AWS S3 Store: Explicit HTTP ProtocolsDue to the AWS SDK upgrade to 2.0, the SDK now determines your connection protocol based on your endpoint configuration. If you were forcing HTTP (non-HTTPS) connections via connectionProtocol, this setting is now ignored.LPD-58512
AWS SDK Version UpgradeThe AWS SDK for Java 2.0 is now the actively maintained solution for connection Liferay to AWS. Liferay’s Amazon AWS S3 store connector has migrated to using this version.LPD-58512
Blade Version 8.0Blade 8.0 is released, adding support for new AI tools. This version is not compatible with Gradle tasks using Java 8. If you require Java 8 to run Gradle tasks, you must downgrade your workspace Gradle plugin to version 14.0.1 or lower, in your workspace’s settings.gradle file.LPD-78046
Database Upgrade Tool: Batch Insert ConfigurationsTo improve upgrade performance, database connections are now automatically supplied with batch input optimization arguments. User-defined arguments are still preserved. These arguments are reWriteBatchedInserts=true for PostgreSQL, rewriteBatchedStatements=true for MySQL/MariaDB, and useBulkCopyForBatchInsert=true for SQL Server.LPD-58512
Database Upgrade Tool: Configuration FilesThe database upgrade tool now reads all configurations from portal-upgrade-ext.properties, consolidating them into one file. The portal-upgrade-database.properties file is now deprecated and ignored.LPD-58512
Database Upgrade Tool: Database ConfigurationThe database upgrade tool now reads your database configuration from portal-ext.properties directly, instead of requiring re-entry. You can still override this value via portal-upgrade-ext.properties.LPD-59502
Database Upgrade Tool: Default App Server PathsThe default application server directory paths shown in the template in app-server.properties are updated to use explicit path notation (e.g., ./bin instead of /bin). This change reduces ambiguity about these paths.LPD-59502
Database Upgrade Tool: Default DatabaseThe database upgrade tool now uses PostgreSQL as its default database. PostgreSQL is now widely adopted and the recommended database for Liferay DXP. You can still choose other supported databases by entering a different value at the prompt.LPD-59502
Database Upgrade Tool: Default Heap MemoryThe database upgrade tool’s default max heap memory is increased from 2048 MB to 4096 MB. This improves upgrade stability because the previous default was insufficient for large upgrades. You can still adjust the tool’s max memory via the --jvm-opts argument.LPD-59502
Database Upgrade Tool: Default JVM ArgumentsSome JVM arguments are now supplied with default values instead of enforcing explicit entry. Unless otherwise specified, it now uses -Dfile.encoding=UTF8, -Duser.country=US, -Duser.language=en, -Duser.timezone=GMT, and -Xmx4096m.LPD-59502
Database Upgrade Tool: Input ValidationThe interactive upgrade tool setup now validates multiple fields to catch potential problems before the upgrade starts. It validates directory paths, as well as the database hostname and port (for valid values that can be resolved via the DNS).LPD-59502
Data Cleanup and RemovalData and module cleanup actions are now executed manually on-demand, via *Server Administration → ResourcesSystem Cleanup Actions. Previously, these automatically ran during Liferay DXP upgrades, from configurations in System SettingsUpgradesData Cleanup/Data Removal. Those configurations are removed in favor of the manual experience in Server Administration.LPD-62053
Editing Pages During Publication ReviewThe Edit and Edit in P1 actions in the Publications review screen now redirect to the appropriate editing experience depending on the page type: the Page Builder interface for content pages, the page editing interface for widget/portlet pages, the template editor for page templates, and a configuration screen for non-content pages (i.e., a panel, a URL, a page set, an embedded page, or a link to a page). This change smooths out the experience of making small changes during review.LPD-68255
Elasticsearch 7Elasticsearch 7 has reached its end-of-life, and it is no longer a supported search engine for Liferay. Liferay DXP 2026.Q1 ships with a native Elasticsearch 8 connector as the default bundled integration, so you can continue to use Liferay with Elasticsearch 8.19. If you are still using Elasticsearch 7, you must upgrade your Elastic stack to 8.19 before upgrading Liferay to 2026.Q1.LPD-66887
Liferay Developer Studio: Liferay IDE AlloyUIIn the upcoming LDS release, development tooling for the AlloyUI framework will be 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. If needed, you can still keep your current LDS version until you complete your ongoing AlloyUI-related tasks.LPD-74745
Liferay Developer Studio: Liferay Upgrade PlannerIn the upcoming LDS release, the Liferay Upgrade Planner (for migrating cold from older versions of Liferay) will be removed. Instead, see the reference on Liferay Learn for breaking changes and deprecations, and use the upgradeSourceCode Blade command to help automate code migrations. If needed, you can still keep your current LDS version until you complete your ongoing code migration tasks.LPD-74745
Liferay Developer Studio: XML SearchIn the upcoming LDS release, the XPath-based search tab in the Search menu will be removed. If you need XPath-based search functionality for XML files, you can find third-party plugins on the Eclipse Marketplace.LPD-74745
MCP Server SSE TransportSSE is deprecated, so SSE transport is no longer supported for MCP servers. MCP server configurations now use StreamableHTTTP instead.LPD-78158
Site Template PropagationSite template propagation is no longer available. If you make changes to your site template, you must manually propagate the changes to sites based on it.LPD-15134
Tomcat Directory NameThe tomcat directory’s name in app-server.properties is changed to tomcat (removing the version number). This reduces the need to adjust properties during DXP upgrades.LPD-59502

Changes in Module Source

service.xml modules/apps/export-import/export-import-report-service/service.xml

  • Date: Nov. 4, 2025
  • Ticket: LPD-68621
  • What changed: The scope and scopeKey columns are removed.
  • Reason: This change removes redundant information. The group ID is already saved, so these columns were redundant.

ExportImportReportEntryLocalService.java modules/apps/export-import/export-import-report-api/src/main/java/com/liferay/exportimport/report/service/ExportImportReportEntryLocalService.java

  • Date: Nov. 4, 2025
  • Ticket: LPD-68621
  • What changed: The addEmptyExportImportReportyEntry and addErrorExportImportReportEntry methods no longer have String scope or String scopeKey parameters.
  • Reason: The corresponding fields for these parameters no longer exist.

rest-openapi.yaml modules/apps/headless/headless-admin-site/headless-admin-site-impl/rest-openapi.yaml

  • Date: Nov. 4, 2025
  • Ticket: LPD-69174
  • What changed: New schemas are added to manage the model success form container submission result types.
  • Reason: This change enforces the distinction between different submission types for form containers.

SystemFDSEntry.java modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/SystemFDSEntry.java

  • Date: Nov. 5, 2025
  • Ticket: LPD-65557
  • What changed: The new getAdditionalAPIURLParameters(HttpServletRequest) method is added. Additionally, the getAdditionalAPIURLParameters method is removed.
  • Reason: System data sets must be able to calculate additional API URL parameters as needed.

CommerceInventoryWarehouseItemLocalServiceImpl.java modules/apps/commerce/commerce-inventory-service/src/main/java/com/liferay/commerce/inventory/service/impl/CommerceInventoryWarehouseItemLocalServiceImpl.java

  • Date: Nov. 10, 2025
  • Ticket: LPD-70087
  • What changed: The addCommerceInventoryWarehouseItem overloaded methods have a new BigDecimal parameter, reservedQuantity. Additionally, the updateCommerceInventoryWarehouseItem(long, long, BigDecimal, BigDecimal, long) method is removed and replaced with updateCommerceInventoryWarehouseItem(long, long, BigDecimal, BigDecimal, String, long), and the updateCommerceInventoryWarehouseItem(long, long, long, BigDecimal, String) method is removed and replaced with updateCommerceInventoryWarehouseItem(long user, long, BigDecimal, BigDecimal, String, long).
  • Reason: This change is necessary to manage the reserved quantity for Commerce inventory warehouse items. The method removals consolidate the code for updating and managing the reserved quantities.

CommerceInventoryWarehouseItemServiceImpl.java modules/apps/commerce/commerce-inventory-service/src/main/java/com/liferay/commerce/inventory/service/impl/CommerceInventoryWarehouseItemServiceImpl.java

  • What changed: The addCommerceInventoryWarehouseItem overloaded methods have a new BigDecimal parameter, reservedQuantity. Additionally, the updateCommerceInventoryWarehouseItem(long, long, BigDecimal, BigDecimal, long) method is removed and replaced with updateCommerceInventoryWarehouseItem(long, long, BigDecimal, BigDecimal, String, long), and the updateCommerceInventoryWarehouseItem(long, long, long, BigDecimal, String) method is removed and replaced with updateCommerceInventoryWarehouseItem(long user, long, BigDecimal, BigDecimal, String, long).
  • Reason: This change is necessary to manage the reserved quantity for Commerce inventory warehouse items. The method removals consolidate the code for updating and managing the reserved quantities.

CommerceTaxTestUtil.java modules/apps/commerce/commerce-test-util/src/main/java/com/liferay/commerce/test/util/CommerceTaxTestUtil.java

  • Date: Nov. 10, 2025
  • Ticket: LPD-70028
  • What changed: The addCommerceByAddressTaxMethod method is renamed to addByAddressCommerceTaxMethod.
  • Reason: This change enforces consistent naming standards.

ObjectEntryManagerRegistry.java modules/apps/object/object-rest-api/src/main/java/com/liferay/object/rest/manager/v1_0/ObjectEntryManagerRegistry.java

  • Date: Nov. 11, 2025
  • Ticket: LPD-70461
  • What changed: The getObjectEntryManager method now has a new companyId parameter.
  • Reason: This change adds support for including a company ID with the storage type.

CookiesPreferenceHandlingConfiguration.java modules/apps/cookies/cookies-api/src/main/java/com/liferay/cookies/configuration/CookiesPreferenceHandlingConfiguration.java

  • Date: Nov. 11, 2025
  • Ticket: LPD-68505
  • What changed: The new cookie-consent-renewal-period-help and modified-date configurations are added.
  • Reason: This change adds support for system administrators to set user consent cookie expiration times. It also removes existing consent cookies when the configuration is changed.

rest-openapi.yaml modules/apps/headless/headless-object/headless-object-impl/rest-openapi.yaml

  • Date: Nov. 12, 2025
  • Ticket: LPD-69769
  • What changed: The YAML properties now use the Vulcan scope schema. New properties (e.g., key and label) are added as nested fields.
  • Reason: This change enforces consistent scope schemas to use the Vulcan scope schema.

rest-openapi.yaml modules/apps/object/object-rest-impl/rest-openapi.yaml

  • Date: Nov. 12, 2025
  • Ticket: LPD-69769
  • What changed: The YAML properties now use the Vulcan scope schema. New properties (e.g., key and label) are added as nested fields.
  • Reason: This change enforces consistent scope schemas to use the Vulcan scope schema.

TaskNodeExecutor.java modules/apps/portal-workflow/portal-workflow-kaleo-runtime-impl/src/main/java/com/liferay/portal/workflow/kaleo/runtime/internal/node/TaskNodeExecutor.java

  • Date: Nov. 13, 2025
  • Ticket: LPD-70612
  • What changed: The doExecute method no longer uses a TaskNodeExecutorAIDelegate.
  • Reason: This approach is no longer needed.

FDSSerializer.java modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/serializer/FDSSerializer.java

  • Date: Nov. 17, 2025
  • Ticket: LPD-67036
  • What changed: The new serializeHideManagementBarInEmptyState method is added.
  • Reason: This method is needed to support the flag in the Data Set Manager. It serializes a boolean flag that indicates whether the management bar should be hidden when the data set has an empty state.

SystemFDSEntry.java modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/SystemFDSEntry.java

  • Date: Nov. 17, 2025
  • Ticket: LPD-67036
  • What changed: The new getHideManagementBarInEmptyState method is added.
  • Reason: This method is necessary to provide the flag value for system data sets.

TaskResourceImpl.java modules/dxp/apps/ai-hub/ai-hub-rest-impl/src/main/java/com/liferay/ai/hub/rest/internal/resource/v1_0/TaskResourceImpl.java

  • Date: Nov. 21, 2025
  • Ticket: LPD-71117
  • What changed: The postTask(Task) method is removed, in favor of the new postByExternalReferenceCodeTask(String, Task) method.
  • Reason: This changes is necessary to propagate events to the correct SSE event sink.

DigitalSalesRoomResourceImpl.java modules/dxp/apps/digital-sales-room/headless/headless-digital-sales-room-impl/src/main/java/com/liferay/headless/digital/sales/room/internal/resource/v1_0/DigitalSalesRoomResourceImpl.java

  • Date: Nov. 21, 2025
  • Ticket: LPD-69509
  • What changed: The getDigitalSalesRoomsPage(String, Filter, Pagination, Sort[]) method’s Filter and Sort[] parameters are removed.
  • Reason: These parameters were not used.

service.xml modules/apps/export-import/export-import-report-service/service.xml

  • Date: Nov. 24, 2025
  • Ticket: LPD-70530
  • What changed: The modelName property is renamed to modelNameLanguageKey.
  • Reason: This value is now used as a language key.

rest-openapi.yaml modules/apps/object/object-rest-impl/rest-openapi.yaml

  • Date: Nov. 24, 2025
  • Ticket: LPD-68509
  • What changed: The /by-external-reference-code/{externalReferenceCode}/versions, /scopes/{scopeKey}/by-external-reference-code/{externalReferenceCode}/versions, and /{objectEntryId}/versions endpoints have a new sort query parameter.
  • Reason: This change adds support for sorting object entry versions (e.g., by their version number).

ExportImportVulcanBatchEngineTaskItemDelegate.java modules/apps/export-import/export-import-api/src/main/java/com/liferay/exportimport/vulcan/batch/engine/ExportImportVulcanBatchEngineTaskItemDelegate.java

  • Date: Nov. 24, 2025
  • Ticket: LPD-70530
  • What changed: The default implementation for the getLabelLanguageKey method is removed. Additionally, the getModelName method is removed.
  • Reason: This interface’s implementation classes must implement getLabelLanguageKey because it’s used when displaying report entries. The removed method is no longer used.

LayoutUtilityPageEntryService.java modules/apps/layout/layout-utility-page-api/src/main/java/com/liferay/layout/utility/page/service/LayoutUtilityPageEntryService.java

  • Date: Nov. 25, 2025
  • Ticket: LPD-68031
  • What changed: Various methods have the masterLayoutPlid parameter replaced by a masterLayoutPageTemplateEntryERC parameter. Pass the master page template entry external reference code instead of a PLID.
  • Reason: This change adds support for referencing master templates in export/imports, using the new batch API.

LayoutUtilityPageEntryLocalService.java. modules/apps/layout/layout-utility-page-api/src/main/java/com/liferay/layout/utility/page/service/LayoutUtilityPageEntryLocalService.java.

  • Date: Nov. 25, 2025
  • Ticket: LPD-68031
  • What changed: Various methods have the masterLayoutPlid parameter replaced by a masterLayoutPageTemplateEntryERC parameter. Pass the master page template entry external reference code instead of a PLID.
  • Reason: This change adds support for referencing master templates in export/imports, using the new batch API.

AssetPermissionAction.java modules/apps/bulk/bulk-rest-api/src/main/java/com/liferay/bulk/rest/dto/v1_0/AssetPermissionAction.java

  • Date: Nov. 26, 2025
  • Ticket: LPD-68735
  • What changed: The AssetPermissionAction class is removed.
  • Reason: This class is no longer used.

rest-openapi.yaml modules/apps/headless/headless-admin-site/headless-admin-site-impl/rest-openapi.yaml

  • Date: Nov. 26, 2025
  • Ticket: LPD-65252
  • What changed: Various field descriptions are changed.
  • Reason: This change enforces consistency in the field descriptions.

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: Nov. 28, 2025
  • Ticket: LPD-68087
  • What changed: The compatibility version is increased, as of changes adding support for lazy referencing roles via REST APIs.
  • Reason: The change to RoleExternalReferenceCode means that BaseResourceImpl classes from older Liferay versions won’t be compatible.

service.xml modules/apps/commerce/commerce-price-list-service/service.xml

  • Date: Nov. 28, 2025
  • Ticket: LPD-72460
  • What changed: A finder is removed.
  • Reason: This change enforces returning a unique value for finders for single entities.

service.xml modules/apps/commerce/commerce-service/service.xml

  • Date: Nov. 28, 2025
  • Ticket: LPD-72460
  • What changed: A finder is removed.
  • Reason: This change enforces returning a unique value for finders for single entities.

service.xml modules/apps/commerce/commerce-wish-list-service/service.xml

  • Date: Nov. 28, 2025
  • Ticket: LPD-72460
  • What changed: The CW_CPI_CP finder now has the unique constraint.
  • Reason: This change enforces returning a unique value for finders for single entities.

service.xml modules/apps/commerce/commerce-product-service/service.xml

  • Date: Dec. 3, 2025
  • Ticket: LPD-72608
  • What changed: The C_V finder now returns a CPDefinition instead of a Collection, and it now has the unique constraint.
  • Reason: This change enforces returning a unique value for finders for single entities.

FDSActionDropdownItem.java modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/model/FDSActionDropdownItem.java

  • Date: Dec. 5, 2025
  • Ticket: LPD-70100
  • What changed: The new FDSActionDropdownItem(List<FDSActionDropdownItem>) method is added. Additionally, the setType(String type) method is removed.
  • Reason: This change is required to support the new FDSActionDropdownItemBuilder. The setType method is no longer used, in favor of the parent implementation.

rest-openapi.yaml modules/apps/change-tracking/change-tracking-rest-impl/rest-openapi.yaml

  • Date: Dec. 10, 2025
  • Ticket: LPD-71138
  • What changed: The getCTCollectionsPage object has a new filter property.
  • Reason: This change is necessary to be able to filter by the CTCollection status.

LayoutStructure.java modules/apps/layout/layout-api/src/main/java/com/liferay/layout/util/structure/LayoutStructure.java

  • Date: Dec. 10, 2025
  • Ticket: LPD-46921
  • What changed: The updateLayoutStructureRule(JSONArray, JSONArray, String, String, String) method has a new String parameter, script.
  • Reason: This change adds support for advanced rules containing a script.

ListTypeDefinitionLocalService.java modules/apps/list-type/list-type-api/src/main/java/com/liferay/list/type/service/ListTypeDefinitionLocalService.java

  • Date: Dec. 10, 2025
  • Ticket: LPD-72657
  • What changed: The addListTypeDefinition and updateListTypeDefinition methods have a new ServiceContext parameter.
  • Reason: This change adds support for persisting model permissions.

JournalArticleService.java modules/apps/journal/journal-api/src/main/java/com/liferay/journal/service/JournalArticleService.java

  • Date: Dec. 12, 2025
  • Ticket: LPD-73550
  • What changed: The getLayoutArticlesCount and getLayoutArticles methods now have a new parameter for classNameId.
  • Reason: This change adds support for excluding articles with default values for a given web content structure.

DataCleanup.java modules/apps/data-cleanup/data-cleanup-api/src/main/java/com/liferay/data/cleanup/DataCleanup.java

  • Date: Dec. 13, 2025
  • Ticket: LPD-71333
  • What changed: The new getServletContextName method is added.
  • Reason: This method is needed to store and retrieve the servlet context name, to check whether the module to clean up is present. Originally, this was done before creating the DataCleanup object, but delaying it improves server startup performance.

rest-openapi.yaml modules/apps/headless/headless-admin-site/headless-admin-site-impl/rest-openapi.yaml

  • Date: Dec. 13, 2026
  • Ticket: LPD-72250
  • What changed: The FragmentStyle object is removed, instead included in the FragmentViewport.FragmentViewportStyle array.
  • Reason: The distinction between FragmentStyle and FragmentViewportStyle is unnecessary, because the desktop viewport is considered the same as any other viewport.

CPDefinitionFinderImpl.java modules/apps/commerce/commerce-product-service/src/main/java/com/liferay/commerce/product/service/persistence/impl/CPDefinitionFinderImpl.java

  • Date: Dec. 16, 2025
  • Ticket: LPD-74231
  • What changed: The CPDefinitionFinderImpl class is removed. Instead, use CPDefinitionLocalService.
  • Reason: The implementation logic for finding an expired CPDefinition is refactored into CPDefinitionLocalServiceImpl and now uses a DSL query. The old, custom SQL implementation is no longer needed. The other methods were no longer used, so they have no direct replacement.

frontend-data-set.tld modules/apps/frontend-data-set/frontend-data-set-taglib/src/main/resources/META-INF/frontend-data-set.tld

  • Date: Dec. 17, 2025
  • Ticket: LPD-9465
  • What changed: The customViewsEnabled attribute is replaced by the snapshotsEnabled attribute.
  • Reason: This change prevents confusion by clarifying this feature’s name, because custom and system data sets already exist.

S3Store.java modules/apps/portal-store/portal-store-s3/src/main/java/com/liferay/portal/store/s3/S3Store.java

  • Date: Dec. 17, 2025
  • Ticket: LPD-72206
  • What changed: The proxy settings configuration logic no longer sets ntlmProxyDomain or ntlmProxyWorkstation. Additionally, the activate method’s logic no longer configures a signer override or connection protocol. The default and recommended signer type to use is now SigV4 (i.e., AwsV4HttpSigner). When the S3 store is configured to use an endpoint via the s3Endpoint configuration property, use the s3Endpoint value to specify the connection protocol.
  • Reason: With AWS SDK v2, the S3Store uses an asynchronous HTTP client that doesn’t support NTLM configuration. Additionally, NTLM is considered a deprecated authentication protocol and will be removed (see LPD-9462). Signers supported in AWS SDK v1 are no longer supported in v2; AWS considers overriding the signer as an advanced configuration that should only be done if necessary. With AWS SDK v2, there is no direct equivalent for the ‘connectionProtocol’ property.

ExpandoBridgeIndexer.java modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/expando/ExpandoBridgeIndexer.java

  • Date: Dec. 18, 2025
  • Ticket: LPD-74740
  • What changed: The encodeFieldName and getNumericSuffix methods are moved into ExpandoBridgeUtil. Additionally, the addAttributes method now has a BaseModel parameter.
  • Reason: This change enforces consistent code organization standards. The moved methods are utility methods that aren’t tied to the ExpandoBridgeIndexer’s state.

EntityFieldsUtil.java modules/apps/headless/headless-common-spi/src/main/java/com/liferay/headless/common/spi/odata/entity/EntityFieldsUtil.java

  • Date: Dec. 18, 2025
  • Ticket: LPD-74740
  • What changed: The getEntityFields method’s ExpandoBridgeIndexer parameter is removed.
  • Reason: This parameter is no longer used.

ExpandoBridgeRetriever.java modules/apps/portal-search/portal-search-spi/src/main/java/com/liferay/portal/search/spi/model/index/contributor/ExpandoBridgeRetriever.java

  • Date: Dec. 18, 2025
  • Ticket: LPD-74740
  • What changed: The ExpandoBridgeRetriever class is removed.
  • Reason: The adaptation logic from DLFileEntry to DLFileVersion is already handled by DLFileEntryImpl#getExpandoBridge, so this interface is no longer needed.

DLFileEntryExpandoBridgeRetriever.java modules/apps/document-library/document-library-service/src/main/java/com/liferay/document/library/internal/search/DLFileEntryExpandoBridgeRetriever.java

  • Date: Dec. 18, 2025
  • Ticket: LPD-74740
  • What changed: The DLFileEntryExpandoBridgeRetriever class is removed.
  • Reason: The adaptation logic from DLFileEntry to DLFileVersion is already handled by DLFileEntryImpl#getExpandoBridge, so this class is no longer needed.

ObjectFieldSettingUtil.java /modules/apps/object/object-api/src/main/java/com/liferay/object/field/setting/util/ObjectFieldSettingUtil.java

  • Date: Dec. 18, 2025
  • Ticket: LPD-74685
  • What changed: The getDefaultValues method now has a new DDMExpressionFactory parameter.
  • Reason: This change enables default value evaluation during page rendering.

RootProjectConfigurator.java modules/sdk/gradle-plugins-workspace/src/main/java/com/liferay/gradle/plugins/workspace/configurator/RootProjectConfigurator.java

  • Date: Dec. 23, 2025
  • Ticket: LPD-74428
  • What changed: The FORMAT_SOURCE_UPGRADE_TASK_NAME value is renamed to UPGRADE_CODE_TASK_NAME.
  • Reason: This change reflects the task’s name changing from formatSourceUpgrade to upgradeCode.

LayoutStructureRulesHelper.java modules/apps/layout/layout-api/src/main/java/com/liferay/layout/helper/structure/LayoutStructureRulesHelper.java

  • Date: Dec. 23, 2025
  • Ticket: LPD-74698
  • What changed: The processLayoutStructureRules(long, LayoutStructure, PermissionChecker, long[]) has new InfoItemFIeldValues and Locale parameters.
  • Reason: This change is needed to support advanced rules.

SystemFDSEntry.java modules/apps/frontend-data-set/frontend-data-set-api/src/main/java/com/liferay/frontend/data/set/SystemFDSEntry.java

  • Date: Dec. 23, 2025
  • Ticket: LPD-74816
  • What changed: The new getSnapshotsEnabled method is added.
  • Reason: This method is needed to retrieve the serialized value of the snapshotsEnabled property.

DLURLHelper.java modules/apps/document-library/document-library-api/src/main/java/com/liferay/document/library/util/DLURLHelper.java

  • Date: Jan. 12, 2026
  • Ticket: LPD-72635
  • What changed: The new getPreviewURL(String fileEntryFriendlyURL, String groupFriendlyURL) method is added.
  • Reason: This method is needed to calculate preview URLs for files using a the friendly URL of the file entry and group. Imports are still able to complete even if the file entry doesn’t exist.

ExportImportReportEntryLocalService.java modules/apps/export-import/export-import-report-api/src/main/java/com/liferay/exportimport/report/service/ExportImportReportEntryLocalService.java

  • Date: Jan. 12, 2026
  • Ticket: LPD-72635
  • What changed: The addEmptyExportImportReportyEntry and addErrorExportImportReportEntry methods no longer have an int origin parameter.
  • Reason: This change simplifies calling these methods.

TaskResource.java modules/dxp/apps/ai-hub/ai-hub-rest-api/src/main/java/com/liferay/ai/hub/rest/resource/v1_0/TaskResource.java

  • Date: Jan. 16, 2026
  • Ticket: LPD-69638
  • What changed: The postByExternalReferenceCodeTask(String, Task) method has its String (external reference code) parameter removed.
  • Reason: This change enforces code clarity. The parameter passed to this method was an SSE event sink key, not an external reference code.

Task.java modules/dxp/apps/ai-hub/ai-hub-rest-api/src/main/java/com/liferay/ai/hub/rest/dto/v1_0/Task.java

  • Date: Jan. 16, 2026
  • Ticket: LPD-69638
  • What changed: The new sseEventSinkKey field is added, along with corresponding getter and setter methods.
  • Reason: This change was made to pass the SSE event sink key in the request body, because it’s not in the request parameter anymore.

DefaultObjectEntryManager.java modules/apps/object/object-rest-api/src/main/java/com/liferay/object/rest/manager/v1_0/DefaultObjectEntryManager.java

  • Date: Jan. 16, 2026
  • Ticket: LPD-75084
  • What changed: The expireObjectEntry(DTOConverterContext, long) method is removed. Its logic is refactored into expireObjectEntry(DTOConverterContext, String, ObjectDefinition, String).
  • Reason: This change enforces exposing object entry external reference codes instead of their IDs.

ObjectEntryResource.java modules/apps/object/object-rest-api/src/main/java/com/liferay/object/rest/resource/v1_0/ObjectEntryResource.java

  • Date: Jan. 16, 2026
  • Ticket: LPD-75084
  • What changed: The postObjectEntryExpire(Long objectEntryId) method is removed, in favor of postByExternalReferenceCodeExpire(String externalReferenceCode).
  • Reason: This change enforces exposing object entry external reference codes instead of their IDs.

TaxonomyVocabularyResourceImpl.java modules/apps/bulk/bulk-rest-impl/src/main/java/com/liferay/bulk/rest/internal/resource/v1_0/TaxonomyVocabularyResourceImpl.java

  • Date: Jan. 16, 2026
  • Ticket: LPD-69236
  • What changed: The postSiteTaxonomyVocabulariesCommonPageObject method now has BulkAction and DocumentBulkSelection parameters.
  • Reason: This change is necessary to enable editing categories with bulk actions in the CMS.

KeywordResourceImpl.java modules/apps/bulk/bulk-rest-impl/src/main/java/com/liferay/bulk/rest/internal/resource/v1_0/KeywordResourceImpl.java

  • Date: Jan. 16, 2026
  • Ticket: LPD-69236
  • What changed: The postKeywordsCommonPageObject method now has BulkAction and DocumentBulkSelection parameters.
  • Reason: This change is necessary to enable editing tags with bulk actions in the CMS.

rest-openapi.yaml modules/apps/headless/headless-admin-site/headless-admin-site-impl/rest-openapi.yaml

  • Date: Jan. 16, 2026
  • Ticket: LPD-69119
  • What changed: The FragmentInstancePageElementDefinition is modified to include new FormFragmentInstancePageElementDefinition schemas.
  • Reason: This change is necessary to properly manage form fragment page elements.

ExportImportVulcanBatchEngineTaskItemDelegate.java modules/apps/export-import/export-import-api/src/main/java/com/liferay/exportimport/vulcan/batch/engine/ExportImportVulcanBatchEngineTaskItemDelegate.java

  • Date: Jan. 20, 2026
  • Ticket: LPD-74822
  • What changed: The getSubtitleLanguageKeys method is removed, in favor of getDescription(java.util.Locale). Additionally, the getTagLanguageKey method is removed, in favor of getTag(java.util.Locale).
  • Reason: The description field is now used instead of the subtitle field, because the final value is returned, not the language key. This change improves retrieving the value from frontend code.

BaseStagedModelDataHandlerTestCase.java modules/apps/export-import/export-import-test-util/src/main/java/com/liferay/exportimport/test/util/lar/BaseStagedModelDataHandlerTestCase.java

  • Date: Jan. 20, 2026
  • Ticket: LPD-75526
  • What changed: All initImport methods returning void are removed, and replaced by initImportWithSafeCloseable methods returning SafeCloseable.
  • Reason: A SafeCloseable is necessary to return so that users can invoke the method to close the import (calling the zip reader’s close method).

LayoutSEOEntryModel.java modules/apps/layout/layout-seo-api/src/main/java/com/liferay/layout/seo/model/LayoutSEOEntryModel.java

  • Date: Jan. 20, 2026
  • Ticket: LPD-74804
  • What changed: The getOpenGraphImageFileEntryId() and setOpenGraphImageFileEntryId() methods are removed.
  • Reason: This change supports better portability (using staging or LAR export/imports) by allowing lazy referencing of SegmentsEntry via external reference code (ERC) instead of a hard primary key.

OAuth2ProviderActionKeys.java modules/apps/oauth2-provider/oauth2-provider-api/src/main/java/com/liferay/oauth2/provider/constants/OAuth2ProviderActionKeys.java

  • Date: Jan. 22, 2026
  • Ticket: LPD-67475
  • What changed: Various action keys are renamed (removing ACTION_* from the name).
  • Reason: This change enforces consistent naming standards, following the same pattern as PushNotificationsActionKeys.

OAuth2ProviderConstants.java modules/apps/oauth2-provider/oauth2-provider-api/src/main/java/com/liferay/oauth2/provider/constants/OAuth2ProviderConstants.java

  • Date: Jan. 22, 2026
  • Ticket: LPD-67475
  • What changed: The DYNAMIC_REGISTRATOR constant value is renamed to OAUTH2_PROVIDER_DYNAMIC_REGISTRATOR, and the EXPIRED_TOKEN constant value is renamed to OAUTH2_PROVIDER_EXPIRED_TOKEN.
  • Reason: This change enforces consistent naming standards. The namespace is needed for the constants in this class to follow the same pattern as in AccessibilitySettingConstants or AccountConstants.

DefaultFragmentEntryProcessorContext.java modules/apps/fragment/fragment-api/src/main/java/com/liferay/fragment/processor/DefaultFragmentEntryProcessorContext.java

  • Date: Jan. 23, 2026
  • Ticket: LPD-76230
  • What changed: The DefaultFragmentEntryProcessorContext constructor has new parameters for companyId and scopeGroupId.
  • Reason: This change improves the accessibility of company and scope group information during fragment processing.

BulkableDocumentRequestTranslator.java modules/apps/portal-search/portal-search-engine-adapter-api/src/main/java/com/liferay/portal/search/engine/adapter/document/BulkableDocumentRequestTranslator.java

  • Date: Jan. 23, 2026
  • Ticket: LPD-76985
  • What changed: The BulkableDocumentRequestTranslator interface is removed.
  • Reason: This interface is no longer needed. It didn’t provide any meaningful abstraction.

AccountUserRetriever.java modules/apps/account/account-api/src/main/java/com/liferay/account/retriever/AccountUserRetriever.java

  • Date: Jan. 23, 2026
  • Ticket: LPD-76917
  • What changed: The getAccountUsers(long) method is removed.
  • Reason: This method was only used to retrieve user IDs. This change improves performance by avoiding retrieving users unnecessarily for this purpose.

TranslationManager.java modules/apps/translation/translation-api/src/main/java/com/liferay/translation/manager/TranslationManager.java

  • Date: Jan. 23, 2026
  • Ticket: LPD-72778
  • What changed: The new processXLIFFTranslation method is added.
  • Reason: The new method enables processing XLIFF files and importing translations.

rest-openapi.yaml modules/apps/headless/headless-admin-site/headless-admin-site-impl/rest-openapi.yaml

  • Date: Jan. 23, 2026
  • Ticket: LPD-69121
  • What changed: Various backgroumdFragmentImage properties are renamed to a new backgroundImageValue schema.
  • Reason: This change improves the schema organization.

rest-openapi.yaml modules/apps/headless/headless-admin-site/headless-admin-site-impl/rest-openapi.yaml

  • Date: Jan. 23, 2026
  • Ticket: LPD-74170
  • What changed: The FragmentLinkTextValue and LinkFragmentEditableElementValue schemas are added. Additionally, the TextFragmentEditableElementValue schema has been modified to accommodate FragmentLinkTextValue being extracted from its definition.
  • Reason: This change improves the schema organization.

SseUtil.java modules/dxp/apps/ai-hub/ai-hub-rest-api/src/main/java/com/liferay/ai/hub/rest/resource/v1_0/util/SseUtil.java

  • Date: Jan. 26, 2026
  • Ticket: LPD-76267
  • What changed: The setSSE method is removed.
  • Reason: This change simplifies the code.

BulkActionExecutionStatusConstants.java modules/apps/site/site-cms-site-initializer-api/src/main/java/com/liferay/site/cms/site/initializer/constants/BulkActionExecutionStatusConstants.java

  • Date: Jan. 26, 2026
  • Ticket: LPD-76554
  • What changed: The BulkSelectionActionStatusConstants class is moved into the bulk-selection-api module.
  • Reason: This change improves the code’s reusability. The constants used in other modules should not depend on site-cms-site-initializer-api.

DDMValueUtil.java modules/apps/headless/headless-delivery/headless-delivery-api/src/main/java/com/liferay/headless/delivery/dto/v1_0/util/DDMValueUtil.java

  • Date: Jan. 30, 2026
  • Ticket: LPD-74358
  • What changed: The toDDMValue method now uses a JSON String parameter instead of a ContentField.
  • Reason: This change improves the code’s reusability.

ListObjectReferenceFactory.java modules/apps/layout/layout-api/src/main/java/com/liferay/layout/list/retriever/ListObjectReferenceFactory.java

  • Date: Feb. 2, 2026
  • Ticket: LPD-77454
  • What changed: The getListObjectReference(JSONObject) method has new long parameters (companyId and groupId).
  • Reason: The new parameters are necessary to retrieve asset list entries using external reference codes, and to include them in JSONObject information (like the item type).

ConfigurationFilterStringUtil.java modules/apps/configuration-admin/configuration-admin-api/src/main/java/com/liferay/configuration/admin/util/ConfigurationFilterStringUtil.java

  • Date: Feb. 4, 2026
  • Ticket: LPD-75854
  • What changed: The getGroupScopedFilterString(Serializable, String, String) method’s String groupId parameter is changed to a Serializable. The getGroupScopedFilterString(Serializable, String) and getGroupScopedFilterString(Serializable, String, String) methods have a new Serializable parameter, companyId. Additionally, the groupId and siteExternalReferenceCode parameters are removed from more overloads of getGroupScopedFilterString.
  • Reason: This change removes the need for client code to convert values to String values. These values are most commonly scope primary keys with a Serializable type. The removed groupId and siteExternalReferenceCode parameters are not used when saving PORTLET configurations.

OAuthClientASLocalMetadataJSONException.java modules/apps/oauth-client/oauth-client-persistence-api/src/main/java/com/liferay/oauth/client/persistence/exception/OAuthClientASLocalMetadataJSONException.java

  • Date: Feb. 5, 2026
  • Ticket: LPD-67473
  • What changed: The OAuthClientASLocalMetadataJSONException exception class is removed.
  • Reason: This exception is no longer used. It’s replaced by OAuthClientASLocalMetadataMetadataJSONException.

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 addCommerceShippingFixedOptionRel and updateCommerceShippingFixedOptionRel methods have their parameters reordered. Additionally, the deprecated addCommerceShippingFixedOptionRel method is removed.
  • Reason: This change enforces consistent code organization and removes unnecessary code.

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 addCommerceShippingFixedOptionRel and updateCommerceShippingFixedOptionRel methods have their parameters reordered. Additionally, the deprecated addCommerceShippingFixedOptionRel method is removed.
  • Reason: This change enforces consistent code organization and removes unnecessary code.

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 segmentsEntryId is removed, and replaced by segmentsEntryERC and segmentsEntryScopeERC.
  • Reason: This change adds support for lazy references for segments entries, by using the external reference code instead of a primary key.

SegmentsExperience.java modules/apps/segments/segments-api/src/main/java/com/liferay/segments/model/SegmentsExperience.java

  • Date: Feb. 7, 2026
  • Ticket: LPD-73850
  • What changed: The getSegmentsEntryId and setSegmentsEntryId methods are removed.
  • Reason: This change adds support for lazy references for segments entries, by using the external reference code instead of a primary key.

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: The StatsResponse class is merged into StatsResponseImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The StatsResponseBuilder class is merged into StatsResponseBuilderImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and implementation.

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 PipelineAggregationTranslator interface is removed.
  • Reason: The interface is no longer used, because the implementation classes are only needed within their own internal module classes.

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 addSystemObjectDefinition method has a new boolean parameter, enableObjectEntryHistory.
  • Reason: This change enables tracking modifiable system objects in CMP by setting enableObjectEntryHistory to true.

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: The tag is increased to 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 methods with *Url in the name are 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 methods with *Url in the name are 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 methods with *Url in the name are 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_CODE constant value is removed.
  • Reason: This constant is no longer needed.

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 AggregationTranslator interface is removed.
  • Reason: The interface is no longer used, because the implementation classes are only needed within their own internal module classes.

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: The CircleShape class is merged into CircleShapeImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The CircleShapeBuilder class is merged into CircleShapeBuilderImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The Coordinate class is merged into CoordinateImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The EnvelopeShape class is merged into EnvelopeShapeImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The EnvelopeShapeBuilder class is merged into EnvelopeShapeBuilderImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The GeoBuilders class is merged into GeoBuildersImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The GeoDistance class is merged into GeoDistanceImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The GeoLocationPoint class is merged into GeoLocationPointImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The GeometryCollectionShape class is merged into GeometryCollectionShapeImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The GeometryCollectionShapeBuilder class is merged into GeometryCollectionShapeBuilderImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The LineStringShape class is merged into LineStringShapeImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The LineStringShapeBuilder class is merged into LineStringShapeBuilderImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The MultiLineStringShape class is merged into MultiLineStringShapeImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The MultiLineStringShapeBuilder class is merged into MultiLineStringShapeBuilderImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The MultiPointShape class is merged into MultiPointShapeImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The MultiPointShapeBuilder class is merged into MultiPointShapeBuilderImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The MultiPolygonShape class is merged into MultiPolygonShapeImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The PointShape class is merged into PointShapeImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The PointShapeBuilder class is merged into PointShapeBuilderImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The PolygonShape class is merged into PolygonShapeImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The PolygonShapeBuilder class is merged into PolygonShapeBuilderImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and implementation.

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: The Script class is merged into ScriptImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The ScriptBuilder class is merged into ScriptBuilderImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The ScriptField class is merged into ScriptFieldImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The ScriptFieldBuilder class is merged into ScriptFieldBuilderImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The Scripts class is merged into ScriptsImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and implementation.

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 updateCookiesPreferenceHandlingConfiguration)ExtendedObjectClassDefinition.Scope, long) method has a new boolean parameter, storeConsent. Additionally, the new isCookiesPreferenceHandlingStoreConsent(ExtendedObjectClassDefinition.Scope, long) method is added.
  • Reason: This change adds support for the new store consent configuration option.

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: Various backgroumdFragmentImage properties are renamed to a new backgroundImageValue schema.
  • Reason: This change improves the schema organization.

rest-openapi.yaml modules/apps/bulk/bulk-rest-impl/rest-openapi.yaml

  • Date: Feb. 12, 2026
  • Ticket: LPD-75297
  • What changed: StatusBulkAction now accepts status as a String rather than an int.
  • Reason: This change accounts for statuses that are not numbers.

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 AgentsFactory class is removed, in favor of the _createInternalAgents method in `SupervisorAgentImpl.
  • Reason: Agent definitions now come from objects where some classes were simplified, so a factory to create a list of sub-agents is no longer needed.

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: The StatsRequestBuilderFactory class is merged into StatsRequestBuilderFactoryImpl.
  • Reason: StatsRequestBuilderFactory is a static utility now.

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: The ComplexQueryBuilder class is merged into ComplexQueryBuilderImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and implementation.

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: The GroupByRequestFactory class is merged into GroupByRequestFactoryImpl.
  • Reason: GroupByRequestFactory is a static utility now.

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: The GroupByRequest class is merged into GroupByRequestImpl. Merge GroupByRequest and GroupByRequestImpl
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The GroupByResponse class is merged into GroupByResponseImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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 GroupByRequestFactory class is removed. Instead, create a GroupByRequest directly.
  • Reason: This class is no longer used.

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 GroupByResponseFactory class is removed. Instead, create a GroupByResponse directly.
  • Reason: This class is no longer used.

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 DocumentBuilderFactory parameter is removed from the IndexedFieldsFixture constructor.
  • Reason: DocumentBuilderFactory is being refactored into a static utility.

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: The Document class is merged into DocumentImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and implementation.

DocumentBuilder.java modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/document/DocumentBuilder.java

DocumentBuilderFactory.java modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/document/DocumentBuilderFactory.java

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: The Field class is merged into FieldImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and implementation.

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: A new configuration field is added for userNotificationScopeEnabled.
  • 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: All method and variable names referring to AI tasks as task definitions are renamed to call them agent definitions.
  • Reason: “Agent definition” is the right term for what is provided.

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 SPINodeResource constructor method now accepts a SearchEngineAdapter parameter instead of a SearchRequestExecutor.
  • Reason: SearchRequestExecutor is no longer exposed as an external API.

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: The DocumentBuilderFactory class is merged into DocumentBuilderFactoryImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and implementation.

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: The SearchHit class is merged into SearchHitImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The SearchHitBuilder class is merged into Builder.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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 SearchHitBuilderFactory class is removed. Instead, create a SearchHitBuilder directly.
  • Reason: This class is no longer used.

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: The HighlightField class is merged into HighlightFieldImpl. Merge HighlightField and HighlightFieldImpl
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The HighlightFieldBuilder class is merged into HighlightFieldBuilderImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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 HighlightFieldBuilderFactory class is no longer used. Instead, create a HighlightFieldBuilder directly.
  • Reason: This class is no longer used.

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: The Bucket class is merged into BucketImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The BucketAggregationResult class is merged into BaseBucketAggregationResult.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The `` class is merged into ChildrenAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The DateHistogramAggregationResult class is merged into DateHistogramAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The DiversifiedSamplerAggregationResult class is merged into DiversifiedSamplerAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The FilterAggregationResult class is merged into FilterAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The FiltersAggregationResult class is merged into FiltersAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The GeoDistanceAggregationResult class is merged into GeoDistanceAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The GeoHashGridAggregationResult class is merged into GeoHashGridAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The GlobalAggregationResult class is merged into GlobalAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The HistogramAggregationResult class is merged into HistogramAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The MissingAggregationResult class is merged into MissingAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The NestedAggregationResult class is merged into NestedAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The RangeAggregationResult class is merged into RangeAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The ReverseNestedAggregationResult class is merged into ReverseNestedAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The SamplerAggregationResult class is merged into SamplerAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The SignificantTermsAggregationResult class is merged into SignificantTermsAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The SignificantTextAggregationResult class is merged into SignificantTextAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The TermsAggregationResult class is merged into TermsAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The AvgAggregationResult class is merged into AvgAggregationResultimpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The CardinalityAggregationResult class is merged into CardinalityAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The GeoBoundsAggregationResult class is merged into GeoBoundsAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The GeoCentroidAggregationResult class is merged into GeoCentroidAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The MaxAggregationResult class is merged into MaxAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The MinAggregationResult class is merged into MinAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The PercentileRanksAggregationResult class is merged into PercentileRanksAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The ScriptedMetricAggregationResult class is merged into ScriptedMetricAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The SumAggregationResult class is merged into SumAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The TopHitsAggregationResult class is merged into TopHitsAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The ValueCountAggregationResult class is merged into ValueCountAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and 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: The WeightedAvgAggregationResult class is merged into WeightedAvgAggregationResultImpl.
  • Reason: This change simplifies the code by removing unnecessary separation of the API and implementation.

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: The method overloads of addCPDefinition, addOrUpdateCPDefinition, and updateCPDefinition are removed, and the remaining addCPDefinition, addOrUpdateCPDefinition, and updateCPDefinition methods have new parameters for accountGroupFilterEnabled and channelFilterEnabled. Additionally, all of these methods have their parameters reordered.
  • Reason: This change enforces using the existing accountGroupFilterEnabled and channelFilterEnabled values if they’re provided. The code refactoring also simplifies method usages.

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 handle method now has a new String parameter, message.
  • Reason: The batch engine logic requires providing the message from the source of the exception.

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: BulkableDocumentRequest now uses a generic type that extends DocumentResponse. Additionally, the accept(Consumer<T>) method is removed.
  • Reason: This change avoids unnecessary lambda creation by converting BulkableDocumentRequest into a marker interface.

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), and setUID(ClassedModel, DocumentBuilder) methods are removed.
  • Reason: UIDFactory should only manage UID creation, not getting or setting UIDs.

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, Set<Long>) method is removed. Instead, use create(long ctCollectionId) to get the same information.
  • Reason: The original feature that required this method was removed. Removing this method also simplifies the code 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: The addLayoutPageTemplateEntry method overloads now take a new String parameter for classTypeKey.
  • Reason: The new parameter adds support for creating lazy references.

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(long, String) method is renamed to fetchCPMeasurementUnit(long, String), and the getCPMeasurementUnitByKey(long, String) method is renamed to getCPMeasurementUnit(long, String). The getCPMeasurementUnits(long) method is removed and replaced by getCPMeasurementUnits(long, int, int, OrderByComparator), the getCPMeasurementUnitsByType(long, int, int, int, OrderByComparator) method is removed and replaced by getCPMeasurementUnits(long, int, int, int, OrderByComparator), and the fetchCPMeasurementUnitByExternalReferenceCode(long, String) method is removed and replaced by fetchCPMeasurementUnit(String, long). Additionally, the fetchPrimaryCPMeasurementUnitByType(long, int) and getCPMeasurementUnitsByType(long, int) methods are removed.
  • Reason: These changes enforce consistent code standards, and remove duplicate and unused methods.

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_UNITS constant value is removed. Additionally, the new ADD_COMMERCE_PRODUCT_MEASUREMENT_UNIT and VIEW_COMMERCE_PRODUCT_MEASUREMENT_UNITS constants are added.
  • Reason: This change is necessary to enforce correct permission management.

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 DigitalSalesRoomTicketConstants class is renamed to DSRTicketConstants, and moved to the site-dsr-site-initializer-api module.
  • Reason: The digital-sales-room-api module has been refactored.

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 getCompanyId method is removed.
  • Reason: The appropriate logic is handled within ModelIndexerWriterContributor methods.

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 BatchIndexingActionable class is removed. Instead, use IndexableActionableDynamicQuery directly.
  • Reason: This class is no longer used.

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 DynamicQueryBatchIndexingActionableFactory class is removed. Instead, use IndexableActionableDynamicQuery directly.
  • Reason: This class is no longer used.

service.xml ./modules/apps/marketplace/marketplace-service/service.xml

  • Date: Feb. 7, 2026
  • Ticket: LPD-25552
  • What changed: Various app and module finders have their return types changed to Collection or are now unique.
  • Reason: Non-unique finders for single entities can cause inconsistent persistence behavior and duplicate entries.

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: Various addCPDefinition, addOrUpdateCPDefinition, and updateCPDefinition method overloads are removed. The remaining addCPDefinition, addOrUpdateCPDefinition, and updateCPDefinition methods now also have new parameters for accountGroupFilterEnabled and channelFilterEnabled. The updateCPDefinition method has new parameters for shippable, freeShipping, shipSeparately, shippingExtrPrice, width, height, depth, weight, cpTaxCategoryId, taxExempt, and TelcoOrElectronics. Additionally, all of these methods have their parameters reordered.
  • Reason: This change is required to use existing accountGroupFilterEnabled and channelFilterEnabled values if provided. The refactor also simplifies method usages.

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 if product versioning is active.
  • Reason: A unique index has been added for the CProductId and version fields.

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 ModelIndexerWriterDocumentHelper class is removed. Instead, use IndexerDocumentBuilder directly.
  • Reason: This class is no longer used.

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 String parameter, registrationEndpoint.
  • Reason: The new parameter is used 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_INVENTORY constant value is removed in favor of VIEW_INVENTORIES. removed the constant MANAGE_INVENTORY and added the constant VIEW_INVENTORIES
  • Reason: This change enforces correct permission management for inventories.

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 getWorkflowDefinitionsPage and getLatestWorkflowDefinitions methods have a new String parameter for a scope.
  • Reason: This change enables retrieved 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 getWorkflowDefinitionsPage and getLatestWorkflowDefinitions methods have a new String parameter for a scope.
  • Reason: This change enables retrieved 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 getWorkflowDefinitionsPage and getLatestWorkflowDefinitions methods have a new String parameter for a scope.
  • Reason: This change enables retrieved 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 getWorkflowDefinitionsPage and getLatestWorkflowDefinitions methods have a new String parameter for a scope.
  • Reason: This change enables retrieved 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 Queries class is removed. Use QueriesUtil instead.
  • Reason: This class is no longer used.

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 processVulcanAggregation method no longer takes a Queries parameter.
  • Reason: QueriesUtil is used now instead of Queries.

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 processSorts method no longer takes a Queries parameter.
  • Reason: QueriesUtil is used now instead of Queries.

service.xml modules/apps/object/object-service/service.xml

  • Date: Mar. 9, 2026
  • Ticket: LPD-79365
  • What changed: Folder names no longer have the unique database-level constraint.
  • Reason: Uniqueness should only be enforced for active folders, allowing users to reuse a name if the original folder is in the trash.

FragmentEntryLinkFinderImpl.java modules/apps/fragment/fragment-service/src/main/java/com/liferay/fragment/service/persistence/impl/FragmentEntryLinkFinderImpl.java

  • Date: Mar. 9, 2026
  • Ticket: LPD-81197
  • What changed: The FragmentEntryLinkFinderImpl class is removed.
  • Reason: Custom finders are removed in favor of DSLQuery.

FragmentEntryLinkLocalServiceImpl.java modules/apps/fragment/fragment-service/src/main/java/com/liferay/fragment/service/impl/FragmentEntryLinkLocalServiceImpl.java

  • Date: Mar. 9, 2026
  • Ticket: LPD-81197
  • What changed: Various *byFragmentEntryERC methods now take fragment entries directly instead of their external reference codes (now *byFragmentEntry). Additionally, the deleteFragmentEntryLinksByFragmentEntryERC(long, String, String) method is removed.
  • Reason: This change keeps scope logic in service methods. The unused method was no longer used.

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: Getter and setter methods are added for an array of TaxonomyCategoryBrief.
  • Reason: This change adds support for lazy references for categories. The parent category and vocabulary external reference codes are needed to display the category in the UI properly.

ContentPageTemplate.java modules/apps/headless/headless-admin-site/headless-admin-site-api/src/main/java/com/liferay/headless/admin/site/dto/v1_0/ContentPageTemplate.java

  • Date: Mar. 9, 2026
  • Ticket: LPD-79415
  • What changed: Getter and setter methods are added for an array of TaxonomyCategoryBrief.
  • Reason: This change adds support for lazy references for categories. The parent category and vocabulary external reference codes are needed to display the category in the UI properly.

MasterPage.java modules/apps/headless/headless-admin-site/headless-admin-site-api/src/main/java/com/liferay/headless/admin/site/dto/v1_0/MasterPage.java

  • Date: Mar. 9, 2026
  • Ticket: LPD-79415
  • What changed: Getter and setter methods are added for an array of TaxonomyCategoryBrief.
  • Reason: This change adds support for lazy references for categories. The parent category and vocabulary external reference codes are needed to display the category in the UI properly.

PageTemplate.java modules/apps/headless/headless-admin-site/headless-admin-site-api/src/main/java/com/liferay/headless/admin/site/dto/v1_0/PageTemplate.java

  • Date: Mar. 9, 2026
  • Ticket: LPD-79415
  • What changed: Getter and setter methods are added for an array of TaxonomyCategoryBrief.
  • Reason: This change adds support for lazy references for categories. The parent category and vocabulary external reference codes are needed to display the category in the UI properly.

WidgetPageTemplate.java modules/apps/headless/headless-admin-site/headless-admin-site-api/src/main/java/com/liferay/headless/admin/site/dto/v1_0/WidgetPageTemplate.java

  • Date: Mar. 9, 2026
  • Ticket: LPD-79415
  • What changed: Getter and setter methods are added for an array of TaxonomyCategoryBrief.
  • Reason: This change adds support for lazy references for categories. The parent category and vocabulary external reference codes are needed to display the category in the UI properly.

CTCollectionService.java modules/apps/change-tracking/change-tracking-api/src/main/java/com/liferay/change/tracking/service/CTCollectionService.java

  • Date: Mar. 15, 2026
  • Ticket: LPD-79378
  • What changed: All companyId and userId parameters are removed from CTCollectionService. Now userId is retrieved from the base class method and companyId is retrieved from CompanyThreadLocal instead.
  • Reason: This change enforces security standards for information access.

IconImageURLReference.java modules/apps/headless/headless-admin-site/headless-admin-site-api/src/main/java/com/liferay/headless/admin/site/dto/v1_0/IconImageURLReference.java

  • Date: Mar. 15, 2026
  • Ticket: LPD-81218
  • What changed: IconImageURLReference is renamed to IconImageURL.
  • Reason: Icon image external reference codes are unique within a Liferay instance and shouldn’t be shared between pages.

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. 15, 2026
  • Ticket: LPD-81218
  • What changed: The iconImageURLReference field and its corresponding getter and setter methods are removed, in favor of iconImagURL and its getter and setter methods.
  • Reason: Icon image external reference codes are unique within a Liferay instance and shouldn’t be shared between pages.

Changes in portal-impl Classes

AssetVocabularyLocalServiceImpl.java portal-impl/src/com/liferay/portlet/asset/service/impl/AssetVocabularyLocalServiceImpl.java

  • Date: Nov. 5, 2025
  • Ticket: LPD-67522
  • What changed: The updateVocabulary(long, String, Map<Locale, String>, Map<Locale, String>, String, int, ServiceContext) method now handles vocabularies that may have null titles.
  • Reason: This change is necessary to account for lazy referencing of vocabularies.

AssetVocabularyServiceImpl.java portal-impl/src/com/liferay/portlet/asset/service/impl/AssetVocabularyServiceImpl.java

  • Date: Nov. 5, 2025
  • Ticket: LPD-67522
  • What changed: The updateVocabulary(long, String, Map<Locale, String>, Map<Locale, String>, String, int, ServiceContext) method now handles vocabularies that may have null titles.
  • Reason: This change is necessary to account for lazy referencing of vocabularies.

DBUpgrader.java portal-impl/src/com/liferay/portal/tools/DBUpgrader.java

  • Date: Dec. 1, 2025
  • Ticket: LPD-70109
  • What changed: The upgradeModules(Runnable upgradeModulesCallbackRunnable) method’s Runnable parameter is removed. Use the new method by calling it without the parameter.
  • Reason: This change is required because the logic to control upgrade report generation is no longer coupled with the logic that controls whether an upgrade is running. The additional logic is moved inside the upgradeModules method in DBUpgrader.

Changes in portal-kernel Classes

FileSizeException.java portal-kernel/src/com/liferay/document/library/kernel/exception/FileSizeException.java

  • Date: Nov. 4, 2025
  • Ticket: LPD-77969
  • What changed: A new FileSizeException constructor is added that accepts a MIME type as a parameter.
  • Reason: The MIME type can give more information to users when displaying the error message.

LayoutService.java portal-kernel/src/com/liferay/portal/kernel/service/LayoutService.java

  • Date: Nov. 4, 2025
  • Ticket: LPD-67244
  • What changed: The new getLayout(long plid) and getLayout(long groupId, boolean privateLayout, long layoutId) methods are added.
  • Reason: The change is necessary because layouts are only retrieved when the user has the VIEW permission.

UpgradeProcess.java portal-kernel/src/com/liferay/portal/kernel/upgrade/UpgradeProcess.java

  • Date: Nov. 10, 2025
  • Ticket: LPD-70013
  • What changed: The addTemporaryIndex(String tableName, boolean unique, String... columnNames) method is moved to the DB class. Get a reference to a DB object with DBManagerUtil.getDB(), and call its addTemporaryIndex method.
  • Reason: This change is required to use the temporary index from classes other than those extending UpgradeProcess.

LayoutService.java portal-kernel/src/com/liferay/portal/kernel/service/LayoutService.java

  • Date: Nov. 17, 2025
  • Ticket: LPD-68031
  • What changed: Various methods have the masterLayoutPlid parameter removed and replaced with a masterLayoutPageTemplateEntryERC parameter. Instead, pass the master layout page template entry’s external reference code.
  • Reason: This change adds support for referencing master templates in export/imports, via the new batch API.

LayoutLocalService.java portal-kernel/src/com/liferay/portal/kernel/service/LayoutLocalService.java

  • Date: Nov. 17, 2025
  • Ticket: LPD-68031
  • What changed: Various methods have the masterLayoutPlid parameter removed and replaced with a masterLayoutPageTemplateEntryERC parameter. Instead, pass the master layout page template entry’s external reference code.
  • Reason: This change adds support for referencing master templates in export/imports, via the new batch API.

LayoutPageTemplateEntryLayoutProvider.java portal-kernel/src/com/liferay/layout/page/template/kernel/provider/LayoutPageTemplateEntryLayoutProvider.java

  • Date: Nov. 27, 2025
  • Ticket: LPD-72415
  • What changed: The getLayoutPageTemplateEntryLayout method has a new parameter, plid.
  • Reason: This method is necessary to correctly determine the group ID.

FrontendESMUtil.java portal-kernel/src/com/liferay/portal/kernel/frontend/esm/FrontendESMUtil.java

  • Date: Dec. 2, 2025
  • Ticket: LPD-52709
  • What changed: The getScriptType method is removed.
  • Reason: This method is no longer used.

LayoutModel.java portal-kernel/src/com/liferay/portal/kernel/model/LayoutModel.java

  • Date: Dec. 17, 2025
  • Ticket: LPD-68134
  • What changed: The faviconFileEntryId field and its associated getter and setter methods are removed, in favor of methods using an external reference code. Use faviconFileEntryERC and faviconFileEntryScopeERC instead of using the faviconFileEntryId.
  • Reason: This change adds support for lazy referencing favicon file entries.

GroupCapability.java /portal-kernel/src/com/liferay/portal/kernel/group/capability/GroupCapability.java

  • Date: Dec. 17, 2025
  • Ticket: LPD-73630
  • What changed: The isSupportPortlet method is renamed to isSupportsPortlet.
  • Reason: This change enforces naming consistency for group capability methods.

PortletDataHandler.java /portal-kernel/src/com/liferay/exportimport/kernel/lar/PortletDataHandler.java

  • Date: Dec. 18, 2025
  • Ticket: LPD-70252
  • What changed: Various getExportControls, getImportControls, and getStagingControls methods now include PortletDataHandler in their names (e.g., getExportPortletDataHandlerControls).
  • Reason: This change enforces code clarity and consistency.

OrphanReferencesDataCleanupUtil.java portal-kernel/src/com/liferay/portal/kernel/upgrade/data/cleanup/util/OrphanReferencesDataCleanupUtil.java

  • Date: Dec. 23, 2025
  • Ticket: LPD-53142
  • What changed: The cleanUpTable(Connection, String, String, String, String[], String) and getWhereClause(Connection, String, String, String, String[], String) methods have a new String[] parameter, customJoinClauses. For existing uses of these APIs, passing a null value for the new parameter maintains the existing behavior.
  • Reason: This change is necessary to support the performance of the PostUpgradeDataCleanupProcess classes.

TableOrphanReferencesDataCleanupPreupgradeProcess.java portal-kernel/src/com/liferay/portal/kernel/upgrade/data/cleanup/TableOrphanReferencesDataCleanupPreupgradeProcess.java

  • Date: Dec. 23, 2025
  • Ticket: LPD-53142
  • What changed: The constructor TableOrphanReferencesDataCleanupPreupgradeProcess(String, String, String, String, String) has a new String parameter, customJoinClause. For existing uses of this API, passing a null value for the new parameter maintains the existing behavior.
  • Reason: This change is necessary to support the performance of the PostUpgradeDataCleanupProcess classes.

BaseLocalizedColumnUpgradeProcess.java portal-kernel/src/com/liferay/portal/kernel/upgrade/BaseLocalizedColumnUpgradeProcess.java

  • Date: Jan. 20, 2026
  • Ticket: LPD-51236
  • What changed: The upgradeLocalizedColumn(ResourceBundleLoader, String, String, String, String, String, long[]) method’s long[] companyIds parameter is removed. All existing companies are used after this change.
  • Reason: All existing companies can be retrieved internally, so the parameter is not needed.

PortletDataHandler.java portal-kernel/src/com/liferay/exportimport/kernel/lar/PortletDataHandler.java

  • Date: Jan. 20, 2026
  • Ticket: LPD-74822
  • What changed: The new getDescription and getTag methods are added.
  • Reason: This change is necessary to access descriptions and tags from the portlet data handler.

PortletDataHandlerBoolean.java portal-kernel/src/com/liferay/exportimport/kernel/lar/PortletDataHandlerBoolean.java

  • Date: Jan. 20, 2026
  • Ticket: LPD-74822
  • What changed: The getSubtitles and getTag methods are removed. Instead, use the methods in PortletDataHandler.
  • Reason: The subtitles (description) and the tag are actually contained in the portlet data handler, not in the controls.

EmptyModelManager.java portal-kernel/src/com/liferay/exportimport/kernel/empty/model/EmptyModelManager.java

  • Date: Jan. 23, 2026
  • Ticket: LPD-75399
  • What changed: The company-scoped getOrAddEmptyModel method overloads have a new String parameter, modelNameLanguageKey. Additionally, the group-scoped method without a modelNameLanguageKey parameter is removed. Instead, use one of the company-scoped methods.
  • Reason: The new parameter is needed to populate the entity type column for report entries with a user-friendly name, instead of showing the class name.

EmptyModelManagerUtil.java portal-kernel/src/com/liferay/exportimport/kernel/empty/model/EmptyModelManagerUtil.java

  • Date: Jan. 23, 2026
  • Ticket: LPD-75399
  • What changed: The overloaded getOrAddEmptyModel methods have a new String parameter, modelNameLanguageKey.
  • Reason: The new parameter is needed to populate the entity type column for report entries with a user-friendly name, instead of showing the class name.

MoreLikeThisQuery.java portal-kernel/src/com/liferay/portal/kernel/search/generic/MoreLikeThisQuery.java

  • Date: Feb. 4, 2026
  • Ticket: LPD-78273
  • What changed: The MoreLikeThisQuery constructor’s companyId parameter is replaced with an indexName parameter.
  • Reason: When the MoreLikeThisQuery is executed, the company ID is converted to an index name, so it’s better to accept it as a parameter beforehand.

QueryTranslator.java portal-kernel/src/com/liferay/portal/kernel/search/query/QueryTranslator.java

  • Date: Feb. 10, 2026
  • Ticket: LPD-78663
  • What changed: The QueryTranslator interface is removed.
  • Reason: This interface was not used. The implementation classes are used within their own internal module classes directly.

FilterTranslator.java portal-kernel/src/com/liferay/portal/kernel/search/filter/FilterTranslator.java

  • Date: Feb. 10, 2026
  • Ticket: LPD-78663
  • What changed: The FilterTranslator interface is removed.
  • Reason: This interface was not used. The implementation classes are used within their own internal module classes directly.

WorkflowLog.java portal-kernel/src/com/liferay/portal/kernel/workflow/WorkflowLog.java

  • Date: Feb. 10, 2026
  • Ticket: LPD-77823
  • What changed: The getWorkflowContext method is added.
  • Reason: This change is necessary to save metadata from AI agents in the KaleoLog table.

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_ADDED constant value is removed, and replaced with CMP_COMMENT_ADDED.
  • Reason: This change simplifies and consolidates the CMP comments, so there is 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 getOrAddEmptyLayout method has a new Boolean parameter, privateLayout.
  • Reason: This change adds support for exporting private pages.

Field.java portal-kernel/src/com/liferay/portal/kernel/search/Field.java

  • Date: Feb. 18, 2026
  • Ticket: LPD-79553
  • What changed: The validate(String name) method is removed.
  • Reason: This method is no longer needed.

DocumentImpl.java portal-kernel/src/com/liferay/portal/kernel/search/DocumentImpl.java

  • Date: Feb. 18, 2026
  • Ticket: LPD-79553
  • What changed: The doGetField(String name, boolean createIfNew) method is removed.
  • Reason: This method is no longer needed because the get and create paths are separate.

FriendlyURLResolverRegistryUtil.java portal-kernel/src/com/liferay/portal/kernel/portlet/FriendlyURLResolverRegistryUtil.java

  • Date: Feb. 21, 2026
  • Ticket: LPD-78504
  • What changed: The getFriendlyURLResolver and getFriendlyURLResolversAsCollection methods have a new parameter, companyId.
  • Reason: This change adds support for 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 necessary to improve the accessibility of caching configurations.

PortletDataHandler.java /portal-kernel/src/com/liferay/exportimport/kernel/lar/PortletDataHandler.java

  • Date: Feb. 25, 2026
  • Ticket: LPD-77963
  • What changed: The getName method is removed, and replaced by getTitle(Locale).
  • Reason: This method simplifies retrieving BatchEnginePortletDataHandler titles. It enforces consistency by always using getLabelLanguageKey.

ActionKeys.java portal-kernel/src/com/liferay/portal/kernel/security/permission/ActionKeys.java

  • Date: Feb. 27, 2026
  • Ticket: LPD-78219
  • What changed: The MANAGE_COUNTRIES constant value is removed, and the new ADD_COUNTRY constant is added. Additionally, all usages of MANAGE_COUNTRIES are substituted with either ADD_COUNTRY at the portlet level, or either DELETE or UPDATE at the resource level.
  • Reason: This change is necessary for correct permission management.

LayoutSetPrototypeLocalService.java portal-kernel/src/com/liferay/portal/kernel/service/LayoutSetPrototypeLocalService.java

  • Date: Mar. 15, 2026
  • Ticket: LPD-81592
  • What changed: Various methods related to site template propagation are removed. The updateLayoutSetPrototype overloaded methods no longer accept parameters for active or readyForPropagation.
  • Reason: Site template propagation is no longer available.

LayoutSetPrototypeService.java portal-kernel/src/com/liferay/portal/kernel/service/LayoutSetPrototypeService.java

  • Date: Mar. 15, 2026
  • Ticket: LPD-81592
  • What changed: Various methods related to site template propagation are removed. The updateLayoutSetPrototype overloaded methods no longer accept parameters for active or readyForPropagation.
  • Reason: Site template propagation is no longer available.