2025 Deprecations and Breaking Changes

Liferay DXP 2025.Q4 Breaking changes

Breaking changes break or significantly alter existing functionality or code structure. Here are all of the breaking changes for Liferay DXP 2025.Q4. 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
Analytics Cloud APIThe impressionMade event replaces the previewed event in the Analytics Cloud API. The new impressionMadeMetric consolidates impressions to include both the new impressionMade events and legacy previewed events.LPD-61800
Button TextButton text no longer creates escaped text when the user presses Enter.LPD-62655
Duplicated Object Definitions and EntitiesObject definitions and entities that share the same name now may appear multiple times in the UI.LPD-62188
Exporting/Importing Site-Scoped SettingsHeadless API now exposed and managed via export/import operations. The imported configuration now overrides existing site configurations with a matching site scope.LPD-58493
Fragment Content Nested in a Collection DisplayContent created within a nested fragment in a Collection Display fragment is no longer indexed.LPD-63304
Importing Content with Parent PagesImporting content referencing a non-existent parent page now creates an empty parent page with the Empty status. Pages with the Empty status now appear clearly labeled in the UI. These pages allow limited actions (adding children, editing, and moving) and are excluded from navigation, search, and item selectors.LPD-56377, LPD-61845, LPD-65251
Mail SettingsThe system-wide mail settings for Liferay DXP are moved from Server Administration to System Settings (under Email → Virtual Instance Scope). Instance-level mail settings inherit from the base system settings. Existing settings migrate during the database upgrade.LPD-25567
Object InheritanceChild object entries can now inherit from multiple parents, or have no parent. The object definition’s relationship field is now only required when an entry is created in a parent context. Standalone entries no longer inherit permissions or configurations from a root object.LPD-47816
Previewing Display Page Templates and ContentThe Review Changes screen for display page templates now shows the templates and content created with them.LPD-58225, LPD-60040
Previewing Web Content FieldsThe Review Changes screen for web content articles now shows all fields, including ones created with custom structures.LPD-61221
SAML User GroupsUser groups that exist in Liferay but not in a SAML service provider now sync automatically when a user in the group authenticates with SAML.LPD-46627
Velocity Templates in WorkflowVelocity is no longer available in workflow.LPD-66671

Changes in Module Source

ListTypeEntryLocalServiceImpl.java modules/apps/list-type/list-type-service/src/main/java/com/liferay/list/type/service/impl/ListTypeEntryLocalServiceImpl.java

  • Date: Jul. 29, 2025
  • Ticket: LPD-61629
  • What changed: In various service method implementations, the word incomplete is replaced with empty when referring to lazy references.
  • Reason: This change reflects the change of the lazy referencing status from incomplete to empty.

AccountEntryLocalServiceImpl.java modules/apps/account/account-service/src/main/java/com/liferay/account/service/impl/AccountEntryLocalServiceImpl.java

  • Date: Jul. 29, 2025
  • Ticket: LPD-61629
  • What changed: In various method implementations, the word incomplete is replaced with empty when referring to lazy references.
  • Reason: This change reflects the change of the lazy referencing status from incomplete to empty.

IncompleteModelManagerImpl.java modules/apps/export-import/export-import-report-service/src/main/java/com/liferay/exportimport/report/internal/incomplete/model/IncompleteModelManagerImpl.java

  • Date: Jul. 29, 2025
  • Ticket: LPD-61629
  • What changed: The package, class, and method names related to lazy referencing were renamed from incomplete to empty.
  • Reason: This change reflects the change of the lazy referencing status from incomplete to empty.

InventoryAnalysisResourceImpl.java modules/apps/analytics/analytics-cms-rest-impl/src/main/java/com/liferay/analytics/cms/rest/internal/resource/v1_0/InventoryAnalysisResourceImpl.java

  • Date: Jul. 30, 2025
  • Ticket: LPD-43294
  • What changed: The getInventoryAnalysis and getDepotEntries methods have their Long spaceId parameter renamed to depotEntryId.
  • Reason: This change forces consistent naming standards.

OverviewResourceImpl.java modules/apps/analytics/analytics-cms-rest-impl/src/main/java/com/liferay/analytics/cms/rest/internal/resource/v1_0/OverviewResourceImpl.java

  • Date: Jul. 30, 2025
  • Ticket: LPD-43294
  • What changed: The getContentOverview and getFileOverview methods have their Long spaceId parameter renamed to depotEntryId.
  • Reason: This change forces consistent naming standards.

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

  • Date: Jul. 31, 2025
  • Ticket: LPD-61990
  • What changed: The getObjectEntriesPage and getScopeScopeKeyPage methods no longer have a Boolean parameter for flatten.
  • Reason: This parameter is no longer used.

ObjectEntryLocalServiceImpl.java modules/apps/object/object-service/src/main/java/com/liferay/object/service/impl/ObjectEntryLocalServiceImpl.java

  • Date: Aug. 1, 2025
  • Ticket: LPD-40798
  • What changed: Various method signatures are removed in favor of new ones that use an external reference code, group ID, and object definition ID as parameters.
  • Reason: This change adds support for more than one object entry with the same entry external reference codes across different sites, companies, and object definitions.

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

  • Date: Aug. 1, 2025
  • Ticket: LPD-40798
  • What changed: The older finders have been removed in favor of new ones for externalReferenceCode, groupId, companyId, and objectDefinitionId.
  • Reason: This change allows for duplicating object entry external reference codes across different sites, companies, and object definitions.

UserAccountResource.java modules/apps/headless/headless-admin-user/headless-admin-user-api/src/main/java/com/liferay/headless/admin/user/resource/v1_0/UserAccountResource.java

  • Date: Aug. 1, 2025
  • Ticket: LPD-61014
  • What changed: The postUserAccount, captchaAnswer, and captchaToken methods have two new String parameters (captchaAnswer and captchaToken).
  • Reason: This change adds support for captcha validation.

rest-openapi.yaml modules/dxp/apps/scim/scim-rest-impl/rest-openapi.yaml

  • Date: Aug. 3, 2025
  • Ticket: LPD-56434
  • What changed: The User schema is modified, and a new Address schema is added.
  • Reason: This change allows for processing the addresses attribute while provisioning SCIM users.

OpenAPIUtil.java modules/util/portal-tools-rest-builder/src/main/java/com/liferay/portal/tools/rest/builder/internal/freemarker/util/OpenAPIUtil.java

  • Date: Aug. 5, 2025
  • Ticket: LPD-62249
  • What changed: The operation ID is updated for certain words (Status), so OpenAPIUtil’s compatibility version is increased.
  • Reason: REST builder automatically generates operation IDs based on their path.

DepotEntryGroupRelLocalService.java /modules/apps/depot/depot-api/src/main/java/com/liferay/depot/service/DepotEntryGroupRelLocalService.java

  • Date: Aug. 5, 2025
  • Ticket: LPD-61564
  • What changed: The getDepotEntryGroupRels and getDepotEntryGroupRelsCount methods have a new long parameter (type).
  • Reason: This change differentiates between two different kinds of depots: spaces and asset libraries. The new parameter allows distinguishing between these two types of depots.

DepotEntryGroupRelService.java /modules/apps/depot/depot-api/src/main/java/com/liferay/depot/service/DepotEntryGroupRelService.java

  • Date: Aug. 5, 2025
  • Ticket: LPD-61564
  • What changed: The getDepotEntryGroupRels and getDepotEntryGroupRelsCount methods have a new long parameter (type).
  • Reason: This change differentiates between two different kinds of depots: spaces and asset libraries. The new parameter allows distinguishing between these two types of depots.

DepotEntryLocalService.java /modules/apps/depot/depot-api/src/main/java/com/liferay/depot/service/DepotEntryLocalService.java

  • Date: Aug. 5, 2025
  • Ticket: LPD-61564
  • What changed: The addDepotEntry, getGroupConnectedDepotEntries, and getGroupConnectedDepotEntriesCount methods have a new long parameter (type).
  • Reason: This change differentiates between two different kinds of depots: spaces and asset libraries. The new parameter allows distinguishing between these two types of depots.

DepotEntryService.java /modules/apps/depot/depot-api/src/main/java/com/liferay/depot/service/DepotEntryService.java

  • Date: Aug. 5, 2025
  • Ticket: LPD-61564
  • What changed: The addDepotEntry, getGroupConnectedDepotEntries, and getGroupConnectedDepotEntriesCount methods have a new long parameter (type).
  • Reason: This change differentiates between two different kinds of depots: spaces and asset libraries. The new parameter allows distinguishing between these two types of depots.

CPConfigurationListLocalService.java modules/apps/commerce/commerce-product-api/src/main/java/com/liferay/commerce/product/service/CPConfigurationListLocalService.java

  • Date: Aug. 5, 2025
  • Ticket: LPD-51865
  • What changed: The addOrUpdate and update methods now have a new ServiceContext parameter.
  • Reason: This change adds support for custom fields.

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

  • Date: Aug. 5, 2025
  • Ticket: LPD-51865
  • What changed: The add, addOrUpdate, and update methods now have a new ServiceContext parameter.
  • Reason: This change adds support for custom fields.

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

  • Date: Aug. 6, 2025
  • Ticket: LPD-52310
  • What changed: Multiple add and update methods no longer expose their respective fields.
  • Reason: This change reflects the changed behavior of Commerce product configurations.

rest-openapi.yaml modules/apps/commerce/headless/headless-commerce/headless-commerce-admin-catalog-impl/rest-openapi.yaml

  • Date: Aug. 6, 2025
  • Ticket: LPD-52310
  • What changed: Product configuration entries no longer have a visible field.
  • Reason: This change reflects the changed behavior of Commerce product configurations.

OpenAPIUtil.java modules/util/portal-tools-rest-builder/src/main/java/com/liferay/portal/tools/rest/builder/internal/freemarker/util/OpenAPIUtil.java

  • Date: Aug. 7, 2025
  • Ticket: LPD-57834
  • What changed: The operation ID is updated for certain words (Status), so OpenAPIUtil’s compatibility version is increased.
  • Reason: REST builder automatically generates operation IDs based on their path.

SharingEntryLocalService.java modules/apps/sharing/sharing-api/src/main/java/com/liferay/sharing/service/SharingEntryLocalService.java

  • Date: Aug. 7, 2025
  • Ticket: LPD-61903
  • What changed: The getSharingEntries method has a new OrderByComparator parameter.
  • Reason: This change allows for sorting by product needs.

SharingEntryService.java modules/apps/sharing/sharing-api/src/main/java/com/liferay/sharing/service/SharingEntryService.java

  • Date: Aug. 7, 2025
  • Ticket: LPD-61903
  • What changed: The getSharingEntries method has a new OrderByComparator parameter.
  • Reason: This change allows for sorting by product needs.

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: Aug. 7, 2025
  • Ticket: LPD-55438
  • What changed: The FavIcon field is now its own schema instead of an object.
  • Reason: This change enforces explicit declarations for possible types.

BaseCTDisplayRenderer.java modules/apps/change-tracking/change-tracking-spi/src/main/java/com/liferay/change/tracking/spi/display/BaseCTDisplayRenderer.java

  • Date: Aug. 8, 2025
  • Ticket: LPD-61649
  • What changed: The new buildStructureDisplay(DisplayBuilder<T>) and getDownloadLink(DisplayContext<?>, String, long, String) methods are added to the inner DisplayBuilder class.
  • Reason: This change allows for a section header displaying a language key to be shown on the data tab. IT also allows for structure data to be displayed on any CTModel, if present.

DepotRolesConstants.java modules/apps/depot/depot-api/src/main/java/com/liferay/depot/constants/DepotRolesConstants.java

  • Date: Aug. 10, 2025
  • Ticket: LPD-61297
  • What changed: The CMS_CONSUMER constant value is removed.
  • Reason: This role should be used as a regular role and not depot-dependent.

BaseObjectEntryManagerImplTestCase.java modules/apps/object/object-rest-test-util/src/main/java/com/liferay/object/rest/test/util/BaseObjectEntryManagerImplTestCase.java

  • Date: Aug. 11, 2025
  • Ticket: LPD-61960
  • What changed: The usage of ObjectDefinitionLocalService is now static.
  • Reason: This change is necessary to use the setUpClass static method.

NotificationTemplateUtil.java modules/apps/notification/notification-test-util/src/main/java/com/liferay/notification/test/util/NotificationTemplateUtil.java

  • Date: Aug. 12, 2025
  • Ticket: LPD-62104
  • What changed: The createNotificationRecipientSetting method is removed.
  • Reason: This method implementation already exists in the NotificationRecipientSettingUtil class.

getAlloyEditorProcessor.js modules/apps/layout/layout-content-page-editor-web/src/main/resources/META-INF/resources/page_editor/app/processors/getAlloyEditorProcessor.js

  • Date: Aug. 12, 2025
  • Ticket: LPD-62655
  • What changed: New lines are no longer allowed in editable links.
  • Reason: This change was previously applied to editable text fields, so this change enforces consistency for both field types.

LocalizationSelect.tsx modules/apps/fragment/fragment-impl/src/main/resources/META-INF/resources/js/api/LocalizationSelect.tsx

  • Date: Aug. 14, 2025
  • Ticket: LPD-58672
  • What changed: A specific form ID can now be used to apply Localization Select events to only the inputs belonging to that form.
  • Reason: This change allows for applying events only to the desired form for the new side-by-side translation view.

BaseObjectEntryManagerImplTestCase.java modules/apps/object/object-rest-test-util/src/main/java/com/liferay/object/rest/test/util/BaseObjectEntryManagerImplTestCase.java

  • Date: Aug. 17, 2025
  • Ticket: LPD-62358
  • What changed: The usage of ObjectDefinitionLocalService is now static.
  • Reason: This change is necessary to use the setUpClass static method.

DefaultObjectEntryManagerImplTest.java modules/apps/object/object-rest-test/src/testIntegration/java/com/liferay/object/rest/internal/manager/v1_0/test/DefaultObjectEntryManagerImplTest.java

  • Date: Aug. 19, 2025
  • Ticket: LPD-62828
  • What changed: The addRelatedObjectEntry method is now split into two implementations. One implementation uses an object entry ID as a parameter, and the other uses an external reference code and scope key.
  • Reason: This change allows for adding related object entries with a scope.

BaseAMImageCounter.java modules/apps/adaptive-media/adaptive-media-image-api/src/main/java/com/liferay/adaptive/media/image/counter/BaseAMImageCounter.java

  • Date: Aug. 19, 2025
  • Ticket: LPD-62588
  • What changed: The forEachFileEntry method is removed. The new getClassName method is added. The getMimeTypes method is changed from protected to private.
  • Reason: The counting method now uses an AtomicInteger counter to iterate through groups and check the previewable processor max size, instead of individually checking each file entry’s size.

SamlProviderConfiguration.java modules/dxp/apps/saml/saml-api/src/main/java/com/liferay/saml/runtime/configuration/SamlProviderConfiguration.java

  • Date: Aug. 20, 2025
  • Ticket: LPD-37323
  • What changed: The new SAML_ROLE_BOTH configuration is added in the role configuration.
  • Reason: The change adds support for both IdP and SP in Liferay.

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

  • Date: Aug. 20, 2025
  • Ticket: LPD-60002
  • What changed: New configuration values are added for feature flag configurations.
  • Reason: This change allows preferences for non-strict cookie types to be hidden from the end-user.

rest-openapi.yaml modules/apps/headless/headless-asset-library/headless-asset-library-impl/rest-openapi.yaml

  • Date: Aug. 21, 2025
  • Ticket: LPD-62030
  • What changed: Resources now use the full schema name (UserAccount) instead of User.
  • Reason: This change enforces consistency with other APIs.

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

  • Date: Aug. 25, 2025
  • Ticket: LPD-62356
  • What changed: The deleteRelatedObjectEntry and getRelatedObjectEntries methods now have a new String parameter for a scope key.
  • Reason: This change adds support for these operations in a scoped context.

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

  • Date: Aug. 25, 2025
  • Ticket: LPD-59863
  • What changed: A new schema is added for WidgetLookAndFeelConfig.
  • Reason: This change improves widget look and feel configuration management.

BatchEngineDeletionHelper.java modules/apps/batch-engine/batch-engine-api/src/main/java/com/liferay/batch/engine/BatchEngineDeletionHelper.java

  • Date: Aug. 25, 2025
  • Ticket: LPD-57377
  • What changed: The BatchEngineDeletionHelper interface and implementations are removed. The logic is moved into ExportImportAttachmentManager instead.
  • Reason: This change improves the code organization.

LayoutPageTemplateStructureLocalServiceUtil.java modules/apps/layout/layout-page-template-api/src/main/java/com/liferay/layout/page/template/service/LayoutPageTemplateStructureLocalServiceUtil.java

  • Date: Aug. 28, 2025
  • Ticket: LPD-63831
  • What changed: The overloaded updateLayoutPageTemplateStructureData methods have a new long parameter for a user ID.
  • Reason: This change prevents using GuestOrUserUtil in *LocalServiceImpl classes.

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

  • Date: Aug. 28, 2025
  • Ticket: LPD-64018
  • What changed: The getDefaultEditableValuesJSONObject method’s JSON String parameter is replaced with a JSONObject parameter.
  • Reason: This change reduces the back-and-forth conversions from JSON and string values.

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

  • Date: Aug. 28, 2025
  • Ticket: LPD-64018
  • What changed: The validateFragmentEntryHTML method’s JSON String parameter is replaced with a JSONObject parameter.
  • Reason: This change reduces the back-and-forth conversions from JSON and string values.

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

  • Date: Aug. 28, 2025
  • Ticket: LPD-64018
  • What changed: The getDefaultEditableValuesJSONObject method’s JSON String parameter is replaced with a JSONObject parameter. Additionally, the validateFragmentEntryHTML method is removed.
  • Reason: This change reduces the back-and-forth conversions from JSON and string values. The validateFragmentEntryHTML method is no longer needed.

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

  • Date: Aug. 28, 2025
  • Ticket: LPD-64018
  • What changed: The getDefaultEditableValuesJSONObject and validateFragmentEntryHTML methods now have a JSONObject parameter instead of a JSON String parameter.
  • Reason: This change reduces the back-and-forth conversions from JSON and string values.

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

  • Date: Aug. 28, 2025
  • Ticket: LPD-64018
  • What changed: The validateFragmentEntryHTML method’s JSON String parameter is replaced with a JSONObject parameter.
  • Reason: This change reduces the back-and-forth conversions from JSON and string values.

FragmentRenderer.java modules/apps/fragment/fragment-api/src/main/java/com/liferay/fragment/renderer/FragmentRenderer.java

  • Date: Aug. 28, 2025
  • Ticket: LPD-64018
  • What changed: The getConfiguration method’s JSON String parameter is replaced with a JSONObject parameter.
  • Reason: This change reduces the back-and-forth conversions from JSON and string values.

FragmentRendererController.java modules/apps/fragment/fragment-api/src/main/java/com/liferay/fragment/renderer/FragmentRendererController.java

  • Date: Aug. 28, 2025
  • Ticket: LPD-64018
  • What changed: The getConfiguration method’s JSON String parameter is replaced with a JSONObject parameter.
  • Reason: This change reduces the back-and-forth conversions from JSON and string values.

FragmentEntryConfigurationParser.java modules/apps/fragment/fragment-api/src/main/java/com/liferay/fragment/util/configuration/FragmentEntryConfigurationParser.java

  • Date: Aug. 28, 2025
  • Ticket: LPD-64018
  • What changed: All methods now have a JSONObject parameter instead of a JSON String parameter.
  • Reason: This change reduces the back-and-forth conversions from JSON and string values.

FragmentEntryValidator.java modules/apps/fragment/fragment-api/src/main/java/com/liferay/fragment/validator/FragmentEntryValidator.java

  • Date: Aug. 28, 2025
  • Ticket: LPD-64018
  • What changed: The validateConfiguration and validateConfigurationValues methods now have a JSONObject parameter instead of a JSON String parameter.
  • Reason: This change reduces the back-and-forth conversions from JSON and string values.

FragmentCollectionFilter.java modules/apps/fragment/fragment-collection-filter-api/src/main/java/com/liferay/fragment/collection/filter/FragmentCollectionFilter.java

  • Date: Aug. 28, 2025
  • Ticket: LPD-64018
  • What changed: The getConfiguration method’s JSON String parameter is replaced with a JSONObject parameter.
  • Reason: This change reduces the back-and-forth conversions from JSON and string values.

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

  • Date: Aug. 30, 2025
  • Ticket: LPD-63103
  • What changed: The incrementScore and decrementScore methods now accept the score as a parameter instead of modelClassNameId.
  • Reason: The incrementScore and decrementScore methods leveraged BufferedIncrement incorrectly, causing poor performance. This change updates the signature to ensure the correct usage of BufferedIncrement.

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

  • Date: Aug. 30, 2025
  • Ticket: LPD-63739
  • What changed: The FORMAT_SOURCE_JAKARTA_TRANSFORM_TASK_NAME constant value is replaced with UPGRADE_JAKARTA_TASK_NAME.
  • Reason: This change enforces naming consistency for String constants. The underlying name value changed from formatSourceJakartaTransform to upgradeJakarta.

TermsSetQuery.java modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/query/TermsSetQuery.java

  • Date: Sep. 3, 2025
  • Ticket: LPD-64190
  • What changed: The setMinimumShouldMatchField(java.lang.String) method no longer returns a String value.
  • Reason: The returned value is no longer needed.

CMSDefaultPermissionUtil.java modules/apps/site/site-cms-site-initializer-api/src/main/java/com/liferay/site/cms/site/initializer/util/CMSDefaultPermissionUtil.java

  • Date: Sep. 4, 2025
  • Ticket: LPD-62475
  • What changed: The addOrUpdateCMSDefaultPermission method is renamed to addOrUpdateObjectEntry, and it uses a company ID instead of a group ID. Additionally, the getCMSDefaultPermissionPermissionsJSONObject method is replaced with the getJSONObject method.
  • Reason: The CMSDefaultPermission object definition now has a company scope, and the permissions field is now for default permissions.

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

  • Date: Sep. 4, 2025
  • Ticket: LPD-62317
  • What changed: The deleteRelatedObjectEntry and getRelatedObjectEntries methods have new parameters (Aggregation aggregation and String filterString).
  • Reason: These methods must use the same parameters used for the getObjectEntries method.

FormManager.java modules/apps/layout/layout-api/src/main/java/com/liferay/layout/manager/FormManager.java

  • Date: Sep. 6, 2025
  • Ticket: LPD-62003
  • What changed: The addFragmentEntryLinksLayoutStructureItems method has a new boolean parameter (readOnly.)
  • Reason: This change allows for one side in a side-by-side translation view to be represented as a read-only form.

ObjectDefinitionResourcePermissionUtil.java modules/apps/object/object-api/src/main/java/com/liferay/object/definition/security/permission/resource/util/ObjectDefinitionResourcePermissionUtil.java

  • Date: Sep. 8, 2025
  • Ticket: LPD-60127
  • What changed: The populateRootDescendantNodeModelResources and removeRootDescendantNodeModelResources methods are removed. Additionally, the populateResourceActions method’s Map<Long, List<ObjectRelationship>>, ObjectDefinitionPersistence, and ObjectDefinitionTreeFactory parameters are removed, and the removeResourceActions method’s ObjectDefinitionPersistence and ObjectDefinitionTreeFactory methods are removed.
  • Reason: The logic associated with the removed methods and parameters is no longer applied.

ObjectDefinitionService.java modules/apps/object/object-api/src/main/java/com/liferay/object/service/ObjectDefinitionService.java

  • Date: Sep. 8, 2025
  • Ticket: LPD-63539
  • What changed: The addCustomObjectDefinition, addSystemObjectDefinition, updateCustomObjectDefinition, and updateSystemObjectDefinition methods now have an additional parameter (List workflowDefinitionLinks).
  • Reason: The new parameter is necessary to link workflow definitions to the object definitions being added or updated.

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

  • Date: Sep. 9, 2025
  • Ticket: LPD-62459
  • What changed: The new active, manualMembership, membershipRestriction, and typeSettings fields are added, along with corresponding methods to interact with these fields.
  • Reason: This change exposes the required properties in the batch APIs.

SiteResource.java modules/apps/headless/headless-site/headless-site-api/src/main/java/com/liferay/headless/site/resource/v1_0/SiteResource.java

  • Date: Sep. 9, 2025
  • Ticket: LPD-62459
  • What changed: Various methods have a new batch version added. Additionally, the postSite(Multipartbody) method is renamed to postSiteSiteInitializer(MultipartBody).
  • Reason: This change is necessary to create batch API methods.

FavIcon.java modules/apps/headless/headless-admin-site/headless-admin-site-client/src/main/java/com/liferay/headless/admin/site/client/dto/v1_0/FavIcon.java

  • Date: Sep. 9, 2025
  • Ticket: LPD-63425
  • What changed: Various methods are removed in favor of methods that support multiple values.
  • Reason: This change adds support for client extensions and item external reference types.

OpenGraphConfiguration.java modules/apps/layout/layout-seo-api/src/main/java/com/liferay/layout/seo/open/graph/OpenGraphConfiguration.java

  • Date: Sep. 9, 2025
  • Ticket: LPD-64950
  • What changed: The isOpenGraphEnabled(Company) method’s Company parameter is replaced with a long parameter, for the company ID.
  • Reason: Only the company ID is needed, so retrieving and passing the Company itself is unnecessary.

ObjectEntryServiceImpl.java modules/apps/object/object-service/src/main/java/com/liferay/object/service/impl/ObjectEntryServiceImpl.java

  • Date: Sep. 11, 2025
  • Ticket: LPD-61816
  • What changed: The userId parameter is removed from various method signatures.
  • Reason: This change is necessary to address issues in the method usages.

ObjectEntryLocalService.java modules/apps/object/object-api/src/main/java/com/liferay/object/service/ObjectEntryLocalService.java

  • Date: Sep. 12, 2025
  • Ticket: LPD-62479
  • What changed: The partialUpdateObjectEntry and updateObjectEntry methods have a new long parameter, for an object entry folder ID.
  • Reason: This change fixes a bug.

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

  • Date: Sep. 16, 2025
  • Ticket: LPD-60513
  • What changed: Various APIs related to taxonomy vocabularies are removed.
  • Reason: These APIs were redundant, because the existing site resource APIs are also usable for CMS.

CMSDefaultPermissionUtil.java modules/apps/site/site-cms-site-initializer-api/src/main/java/com/liferay/site/cms/site/initializer/util/CMSDefaultPermissionUtil.java

  • Date: Sep. 17, 2025
  • Ticket: LPD-62565
  • What changed: The addOrUpdateObjectEntry method has new parameters (depotGroupId and treePath).
  • Reason: This change is necessary for CMSDefaultPermission object entries to save these values.

rest-openapi.yaml modules/apps/headless/headless-asset-library/headless-asset-library-impl/rest-openapi.yaml

  • Date: Sep. 18, 2025
  • Ticket: LPD-65106
  • What changed: The sites path is renamed to connectedSites and the Site path is renamed to ConnectedSite. Additionally, the sites property is renamed to connectedSites and the numberOfSites property is renamed to numberOfConnectedSites.
  • Reason: This change enforces more accurate usage of site paths and properties.

DepotGroupItemSelectorCriterion.java modules/apps/depot/depot-api/src/main/java/com/liferay/depot/item/selector/DepotGroupItemSelectorCriterion.java

  • Date: Sep. 18, 2025
  • Ticket: LPD-65787
  • What changed: The DepotGroupItemSelectorCriterion class is removed. Instead, use GroupItemSelectorCriterion.
  • Reason: The DepotGroupItemSelectorCriterion class’s only attribute (and corresponding methods) are now in GroupItemSelectorCriterion instead.

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

  • Date: Sep. 22, 2025
  • Ticket: LPD-63756
  • What changed: The new description field is added, and the name field is now a Map<String, String> instead of a String. Their corresponding getter and setter methods are also updated to reflect these changes.
  • Reason: This change is necessary to update the batch APIs to the required properties and format.

BatchEngineExportTaskExecutor.java modules/apps/batch-engine/batch-engine-api/src/main/java/com/liferay/batch/engine/BatchEngineExportTaskExecutor.java

  • Date: Sep. 22, 2025
  • Ticket: LPD-65748
  • What changed: The isPersistContent method is renamed to isPersist.
  • Reason: The method is related to the whole batch engine export task, not only to the content. The name change reflects its functionality.

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

  • Date: Sep. 22, 2025
  • Ticket: LPD-65999
  • What changed: The mvccVersion field is now an Integer instead of a Number.
  • Reason: This change enforces consistency with its standard usage.

service.xml modules/dxp/apps/saml/saml-persistence-service/service.xml

  • Date: Sep. 24, 2025
  • Ticket: LPD-62689
  • What changed: A new table is added, and columns in other tables are sorted for consistency.
  • Reason: This change is necessary to persist logout requests without depending on cookies for the SLO process.

PortalK8sAgentConfiguration.java modules/apps/static/portal-k8s-agent/portal-k8s-agent-api/src/main/java/com/liferay/portal/k8s/agent/configuration/PortalK8sAgentConfiguration.java

  • Date: Sep. 24, 2025
  • Ticket: LPD-63828
  • What changed: The new debounceDelayMillis method is added, which implements a configurable property.
  • Reason: The configuration option adds support for client configurations in a cluster. The default value prevents breaking the configuration for existing users.

SystemObjectEntry.java modules/apps/object/object-api/src/main/java/com/liferay/object/system/SystemObjectEntry.java

  • Date: Sep. 25, 2025
  • Ticket: LPD-64789
  • What changed: The SystemObjectEntry class now implements the ExternalReferenceCodeModel and GroupedModel interfaces.
  • Reason: This change adds support for SystemObjectEntryInfoItemObjectProvider extending BaseInfoItemObjectProvider.

SharingEntryInterpreter.java /modules/apps/sharing/sharing-api/src/main/java/com/liferay/sharing/interpreter/SharingEntryInterpreter.java

  • Date: Sep. 25, 2025
  • Ticket: LPD-65945
  • What changed: The overloaded getTitle method without a locale parameter is removed. Instead, invoke a different overload of the getTitle method.
  • Reason: The removed method overload caused a bug with rendering localized entry titles.

ExportImportReportEntryModel.java modules/apps/export-import/export-import-report-api/src/main/java/com/liferay/exportimport/report/model/ExportImportReportEntryModel.java

  • Date: Sep. 26, 2025
  • Ticket: LPD-64970
  • What changed: The error field is renamed to errorMessage, and the corresponding getter and setter methods are renamed to reflect this.
  • Reason: This change enforces consistent naming.

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: Sep. 26, 2025
  • Ticket: LPD-65532
  • What changed: The creatorExternalReferenceCode field is removed, and the corresponding getter and setter methods are removed to reflect this. Classes such as com.liferay.headless.admin.site.dto.v1_0.SitePage do not have this field anymore.
  • Reason: This change reflects the removal of the creator external reference code field from the Admin Site Headless API entities. The creator field already includes the external reference code, so the creatorExternalReferenceCode field was redundant.

OAuthClientEntryLocalService.java modules/apps/oauth-client/oauth-client-persistence-api/src/main/java/com/liferay/oauth/client/persistence/service/OAuthClientEntryLocalService.java

  • Date: Sep. 26, 2025
  • Ticket: LPD-55735
  • What changed: The addOAuthClientEntry and updateOAuthClientEntry methods now have a new String parameter (customClaimsJSON).
  • Reason: OAuthClientEntry now has a customClaimsJson field, so these methods must change to reflect that.

FragmentEntryMenuDisplayConfiguration.java modules/apps/fragment/fragment-api/src/main/java/com/liferay/fragment/util/configuration/FragmentEntryMenuDisplayConfiguration.java

  • Date: Oct. 1, 2025
  • Ticket: LPD-64513
  • What changed: The getSiteNavigationMenuId has a new long parameter for a group ID. All method usages are updated to reflect this.
  • Reason: This change allows for getting the siteNavigationMenuId from the siteNavigationMenuExternalReferenceCode when the siteNavigationMenuId is not known, for example, when the configuration is imported via a site initializer. The group ID is necessary to fetch the navigation menu by the external reference code.

BatchEnginePortletDataHandlerTest.java modules/apps/export-import/export-import-test/src/testIntegration/java/com/liferay/exportimport/internal/data/handler/test/BatchEnginePortletDataHandlerTest.java

  • Date: Oct. 2, 2025
  • Ticket: LPD-64365
  • What changed: Various method signatures in the ExportImportDescriptor subclass are changed.
  • Reason: This change adds more capabilities for batch exports and imports. For example, getParameters(com.liferay.exportimport.kernel.lar.PortletDataContext) can now be used to add parameters depending on the PortletDataContext. The isActive(com.liferay.exportimport.kernel.lar.PortletDataContext) method can decide whether to execute batch processes, based on conditions determined by the PortletDataContext.

LayoutAdminPortletKeys.java modules/apps/layout/layout-admin-api/src/main/java/com/liferay/layout/admin/constants/LayoutAdminPortletKeys.java

  • Date: Oct. 2, 2025
  • Ticket: LPD-64365
  • What changed:The new LAYOUT_SET_LAYOUTS key is added.
  • Reason: This change supports the new LayoutSetLayoutsPortlet portlet, which provides batch export/import support for site pages.

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

  • Date: Oct. 3, 2025
  • Ticket: LPD-38587
  • What changed: The new getFDSAPIURL method is added, which calculates the API URL and optionally interpolates tokens in it. Interpolation is done with data from the underlying infrastructure, and now also from an optional set of resolved tokens.
  • Reason: This method is necessary to support on-the-fly URL interpolation in the Data Set fragment.

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

  • Date: Oct. 3, 2025
  • Ticket: LPD-38587
  • What changed: New method overloads are added for the serializeAPIURL and serializeAdditionalAPIURLParameters methods.
  • Reason: The new overloaded methods allow the renderer to serialize API URL components with or without token interpolation and to provide a set of resolved tokens for serialization. These methods are necessary to support the changes in FDSRenderer.

FormManager.java modules/apps/layout/layout-api/src/main/java/com/liferay/layout/manager/FormManager.java

  • Date: Oct. 3, 2025
  • Ticket: LPD-59269
  • What changed: The addFragmentEntryLinksLayoutStructureItem method now requires an InfoField<?> parameter instead of only a unique ID.
  • Reason: The info field’s type information is necessary in case the fragment entry key is not provided.

BaseDisplayTag.java modules/apps/frontend-data-set/frontend-data-set-taglib/src/main/java/com/liferay/frontend/data/set/taglib/servlet/taglib/BaseDisplayTag.java

  • Date: Oct. 3, 2025
  • Ticket: LPD-66897
  • What changed: The selectedItems attribute is renamed to defaultSelectedItems.
  • Reason: This change maintains the behavior in the frontend data set React component, and it enforces consistency with the name in the API.

FragmentEntryLinkLocalServiceUtil.java modules/apps/fragment/fragment-api/src/main/java/com/liferay/fragment/service/FragmentEntryLinkLocalServiceUtil.java

  • Date: Oct. 8, 2025
  • Ticket: LPD-66496
  • What changed: The updateClassModel(long plid) method now has a new long parameter for a user ID.
  • Reason: This change reduces the usage of GuestOrUserUtil in *LocalServiceImpl classes.

LayoutPageTemplateEntryLocalServiceUtil.java modules/apps/layout/layout-page-template-api/src/main/java/com/liferay/layout/page/template/service/LayoutPageTemplateEntryLocalServiceUtil.java

  • Date: Oct. 8, 2025
  • Ticket: LPD-66496
  • What changed: The updateLayoutPageTemplateEntry(long, long, long) method has a new long parameter for a user ID.
  • Reason: This change reduces the usage of GuestOrUserUtil in *LocalServiceImpl classes.

AccountEntryWrapper.java modules/apps/account/account-api/src/main/java/com/liferay/account/model/AccountEntryWrapper.java

  • Date: Oct. 9, 2025
  • Ticket: LPD-67845
  • What changed: The getEmailAddresses, getListTypeAddresses(long[] listTypeIds), getPhones, and getWebsites methods no longer throw PortalException.
  • Reason: The underlying code has been changed to address potential performance issues.

AccountEntry.java modules/apps/account/account-api/src/main/java/com/liferay/account/model/AccountEntry.java

  • Date: Oct. 9, 2025
  • Ticket: LPD-67845
  • What changed: The getEmailAddresses, getListTypeAddresses(long[] listTypeIds), getPhones, and getWebsites methods no longer throw PortalException.
  • Reason: The underlying code has been changed to address potential performance issues.

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

  • Date: Oct. 10, 2025
  • Ticket: LPD-65996
  • What changed: The Row and Column page element definitions are changed to Grid and Module page element definitions, respectively.
  • Reason: This change is necessary to correctly model grid page elements for the new content page headless APIs.

TemplateContextHelper.java modules/apps/portal-template/portal-template-engine-api/src/main/java/com/liferay/portal/template/engine/TemplateContextHelper.java

  • Date: Oct. 14, 2025
  • Ticket: LPD-61382
  • What changed: Various Expando-related service variables are removed from the populateCommonHelperUtilities method. Instead, unblock serviceLocator and use it to retrieve services manually.
  • Reason: This change reduces the exposure of sensitive methods via serviceLocator.

InMemoryOnlyConfigurationThreadLocal.java modules/apps/static/portal-configuration/portal-configuration-persistence-api/src/main/java/com/liferay/portal/configuration/persistence/InMemoryOnlyConfigurationThreadLocal.java

  • Date: Oct. 16, 2025
  • Ticket: LPD-67024
  • What changed: The set method is removed, in favor of the new overloaded setWithSafeClosable method.
  • Reason: The set method did not properly handle the thread-local Boolean values, which can be true, false, or unset.

ObjectLayoutLocalServiceImpl.java modules/apps/object/object-service/src/main/java/com/liferay/object/service/impl/ObjectLayoutLocalServiceImpl.java

  • Date: Oct. 16, 2025
  • Ticket: LPD-68036
  • What changed: The code now throws an ObjectLayoutBoxTypeException instead of an ObjectLayoutBoxCategorizationTypeException.
  • Reason: The renamed type of exception is now usable for both categorization and SEO.

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

  • Date: Oct. 17, 2025
  • Ticket: LPD-67745
  • What changed: In the PageSettings schema, NavigationSettings is changed to SitePageNavigationSettings. Additionally, queryString is moved from PageSettings to SitePageNavigationSettings.
  • Reason: This change improves the structure of navigation setting fields.

SystemObjectDefinitionManager.java modules/apps/object/object-api/src/main/java/com/liferay/object/system/SystemObjectDefinitionManager.java

  • Date: Oct. 21, 2025
  • Ticket: LPD-66189
  • What changed: The addBaseModel(User, Map<String, Object>) method has a new boolean parameter for checkPermissions. This parameter distinguishes between user-initiated and system-initiated calls.
  • Reason: This change is necessary to properly handle permission checks. When the call is made by a user, permissions must be validated. When it is executed by the system, permission checks are skipped to avoid unnecessary restrictions.

BatchEngineImportStrategy.java modules/apps/batch-engine/batch-engine-api/src/main/java/com/liferay/batch/engine/strategy/BatchEngineImportStrategy.java

  • Date: Oct. 23, 2025
  • Ticket: LPD-68544
  • What changed: The BatchEngineImportStrategy interface is removed.
  • Reason: The BatchEngineImportStrategy interface is no longer needed. The logic is better placed in BatchEngineImportTaskExecutorImpl.

BatchEngineTaskItemDelegate.java modules/apps/batch-engine/batch-engine-api/src/main/java/com/liferay/batch/engine/BatchEngineTaskItemDelegate.java

  • Date: Oct. 23, 2025
  • Ticket: LPD-68544
  • What changed: The setBatchEngineImportStrategy method is removed. The new setImportUnsafeBiConsumer method is added to replace it.
  • Reason: We do not have BatchEngineImportStrategy; we directly set the consumer which knows how to import the items.

FragmentEntryLinkModel.java modules/apps/fragment/fragment-api/src/main/java/com/liferay/fragment/model/FragmentEntryLinkModel.java

  • Date: Oct. 24, 2025
  • Ticket: LPD-63444
  • What changed: Getter and setter methods are removed for the fragment entry ID and original fragment entry link ID. Instead, get the fragment entry link using the fragment entry link external reference code, using the group ID instead of the fragment entry ID.
  • Reason: The fragmentEntryId and originalFragmentEntryLinkId columns are removed to allow lazy referencing of fragment entries.

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

  • Date: Oct. 27, 2025
  • Ticket: LPD-66355
  • What changed: The Scope element’s reference is changed to point to the same file.
  • Reason: This change enforces coding standards and reuse of code.

ReportEntryResource.java modules/apps/export-import/export-import-rest-api/src/main/java/com/liferay/exportimport/rest/resource/v1_0/ReportEntryResource.java

  • Date: Oct. 28, 2025
  • Ticket: LPD-56153
  • What changed: The getImportProcessErrorsPage method is renamed to getImportProcessReportEntriesPage.
  • Reason: This matches the change in the API endpoint from /import-processes/[importProcessId]/errors to /import-processes/[importProcessId]/report-entries. This change makes the endpoint compatible with batch imports.

CommerceOrderConfiguration.java modules/apps/commerce/commerce-api/src/main/java/com/liferay/commerce/configuration/CommerceOrderConfiguration.java

  • Date: Oct. 29, 2025
  • Ticket: LPD-68534
  • What changed: The openOrdersVisibilityScope and placedOrdersVisibilityScope configuration fields are added.
  • Reason: This change allows for handling the user visibility scope of orders in a channel.

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

  • Date: Oct. 30, 2025
  • Ticket: LPD-67397
  • What changed: The getItemClassName method is renamed to getModelClassName, the getItemModelName method is renamed to getModelName, and the getLabel method is renamed to getLabelLanguageKey. Additionally, the new getResourceClassName and isApplicableExternalReferenceCode methods are added.
  • Reason: The method name changes are to enforce naming standards. The getResourceClassName method is used to control and count staged models. The isApplicableExternalReferenceCode method filters the external reference codes corresponding to each resource.

rest-openapi.yaml modules/apps/headless/headless-asset-library/headless-asset-library-impl/rest-openapi.yaml

  • Date: Oct. 31, 2025
  • Ticket: LPD-66000
  • What changed: All resources are renamed to match external reference codes instead of resource IDs.
  • Reason: This change aligns the API’s schemas with best practices.

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

  • Date: Nov. 1, 2025
  • Ticket: LPD-70345
  • What changed: The CategoryFragmentConfigurationFieldValue schema is modified to manage fragment instance configuration values.
  • Reason: This change is necessary to handle the fragment instance configuration values.

ObjectDefinitionResourcePermissionUtil.java modules/apps/object/object-api/src/main/java/com/liferay/object/definition/security/permission/resource/util/ObjectDefinitionResourcePermissionUtil.java

  • Date: Nov. 2, 2025
  • Ticket: LPD-61657
  • What changed: The populateResourceActions(ObjectActionLocalService, List<ObjectAction>, ObjectDefinition, PortletLocalService, ResourceActions) method has new List<ObjectField> and ObjectFieldLocalService parameters. The removeResourceActions(ObjectActionLocalService, ObjectDefinition, ResourceActions) method also has a new ObjectFieldLocalService parameter.
  • Reason: This change is necessary to manage object attachment download permissions.

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

  • Date: Nov. 2, 2025
  • Ticket: LPD-61657
  • What changed: The getAttachmentDownloadURL(DLURLHelper, FileEntry, long, String, ThemeDisplay) method has new ObjectEntry, ObjectEntryService, ObjectField, and PermissionChecker parameters.
  • Reason: This change adds the object entry’s external reference code to the download URL, so the download permission can be checked on request. The ObjectEntryService and PermissionChecker parameters are also necessary to ensure the URL is only returned with proper download permissions.

Changes in portal-impl Classes

MailServiceImpl.java portal-impl/src/com/liferay/mail/service/impl/MailServiceImpl.java

  • Date: Aug. 22, 2025
  • Ticket: LPD-58844
  • What changed: The MailServiceImpl implementation logic is moved into the mail-messaging-impl module as a component.
  • Reason: This change is made to move mail-related logic into modules.

PropsValues.java portal-impl/src/com/liferay/portal/util/PropsValues.java

  • Date: Sep. 19, 2025
  • Ticket: LPD-66041
  • What changed: All properties are moved to portal-kernel/src/com/liferay/portal/kernel/util/PropsValues.java. PropsValues.FEATURE_FLAGS_JSON is in-lined to its only usage. See the changes for portal-kernel/src/com/liferay/portal/kernel/util/PropsValues.java for property changes after this change.
  • Reason: This change is part of merging portal-impl into portal-kernel.

RouteImpl.java portal-impl/src/com/liferay/portlet/RouteImpl.java

  • Date: Oct. 10, 2025
  • Ticket: LPD-68254
  • What changed: The RouteImpl class is removed.
  • Reason: RouteImpl’s implementation is moved into Route.

LayoutServiceImpl.java portal-impl/src/com/liferay/portal/service/impl/LayoutLocalServiceImpl.java and portal-impl/src/com/liferay/portal/service/impl/LayoutServiceImpl.java

  • Date: Oct. 29, 2025
  • Ticket: LPD-66054
  • What changed: The updateLayout method is renamed to updateTypeSettings. Use updateTypeSettings(Layout layout, String typeSettings) or updateTypeSettings(long groupId, boolean privateLayout, long layoutId) instead.
  • Reason: This change enforces consistent naming.

Changes in portal-kernel Classes

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

  • Date: Jul. 28, 2025
  • Ticket: LPD-60063
  • What changed: The sourcePrototypeLayoutUuid field is removed, in favor of the new layoutSetPrototypeLayoutERC field. Get the layoutSetPrototype layout using an external reference code and group ID instead of the UUID.
  • Reason: This change adds support for lazy referencing of the site template layout.

ConsentCookieType.java portal-kernel/src/com/liferay/portal/kernel/cookies/ConsentCookieType.java

  • Date: Aug. 20, 2025
  • Ticket: LPD-60002
  • What changed: The ConsentCookieType constructor now has a new boolean parameter for hideFromEndUser. The new isHideFromEndUser method is also added.
  • Reason: This change allows for non-strict cookie type preferences to be hidden from end users.

PortalUtil.java portal-kernel/src/com/liferay/portal/kernel/util/PortalUtil.java

  • Date: Aug. 22, 2025
  • Ticket: LPD-58844
  • What changed: The getMailId method is removed. The implementation logic is moved into the mail-messaging-impl module.
  • Reason: This change is made to move mail-related logic into modules.

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

  • Date: Sep. 10, 2025
  • Ticket: LPD-61503
  • What changed: The cleanUp method’s targetColumnName parameter is now a String[] type instead of String.
  • Reason: This change adds support for adding one or many columns.

DLAppLocalServiceUtil.java portal-kernel/src/com/liferay/document/library/kernel/service/DLAppLocalServiceUtil.java

  • Date: Sep. 14, 2025
  • Ticket: LPD-61435
  • What changed: The new fetchFileEntry(long fileEntryId) method is added.
  • Reason: This change adds support for external reference codes in the info framework implementation.

DLAppLocalServiceWrapper.java portal-kernel/src/com/liferay/document/library/kernel/service/DLAppLocalServiceWrapper.java

  • Date: Sep. 14, 2025
  • Ticket: LPD-61435
  • What changed: The new fetchFileEntry(long fileEntryId) method is added.
  • Reason: This change adds support for external reference codes in the info framework implementation.

DLAppLocalService.java portal-kernel/src/com/liferay/document/library/kernel/service/DLAppLocalService.java

  • Date: Sep. 14, 2025
  • Ticket: LPD-61435
  • What changed: The new fetchFileEntry(long fileEntryId) method is added.
  • Reason: This change adds support for external reference codes in the info framework implementation.

DLFileEntryServiceUtil.java portal-kernel/src/com/liferay/document/library/kernel/service/DLFileEntryServiceUtil.java

  • Date: Sep. 14, 2025
  • Ticket: LPD-61435
  • What changed: The new fetchFileEntry(long fileEntryId) method is added.
  • Reason: This change adds support for external reference codes in the info framework implementation.

DLFileEntryServiceWrapper.java portal-kernel/src/com/liferay/document/library/kernel/service/DLFileEntryServiceWrapper.java

  • Date: Sep. 14, 2025
  • Ticket: LPD-61435
  • What changed: The new fetchFileEntry(long fileEntryId) method is added.
  • Reason: This change adds support for external reference codes in the info framework implementation.

DLFileEntryService.java portal-kernel/src/com/liferay/document/library/kernel/service/DLFileEntryService.java

  • Date: Sep. 14, 2025
  • Ticket: LPD-61435
  • What changed: The new fetchFileEntry(long fileEntryId) method is added.
  • Reason: This change adds support for external reference codes in the info framework implementation.

PropsKeys.java portal-kernel/src/com/liferay/portal/kernel/util/PropsKeys.java

  • Date: Sep. 23, 2025
  • Ticket: LPD-58844
  • What changed: Various mail-related properties are removed.
  • Reason: Mail-related properties have been migrated to OSGi configurations. The related portal properties are no longer needed.

ConnectionPoolMetrics.java portal-kernel/src/com/liferay/portal/kernel/dao/jdbc/pool/metrics/ConnectionPoolMetrics.java

  • Date: Sep. 23, 2025
  • Ticket: LPD-66446
  • What changed: The ConnectionPoolMetrics interface is removed.
  • Reason: This interface was only used by a test class, which is now also removed.

PropsValues.java portal-kernel/src/com/liferay/portal/kernel/util/PropsValues.java

  • Date: Sep. 23, 2025
  • Ticket: LPD-58844
  • What changed: Various mail-related properties are removed.
  • Reason: Mail-related properties have been migrated to OSGi configurations. The related portal properties are no longer needed.

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

  • Date: Sep. 26, 2025
  • Ticket: LPD-64248
  • What changed: The getPortletDataHandlerInstance method has a new long parameter for a company ID.
  • Reason: This change allows for BatchEnginePortletDataHandler instances to be enabled and disabled with a company-scoped feature flag.

PropsKeys.java portal-kernel/src/com/liferay/portal/kernel/util/PropsKeys.java

  • Date: Sep. 30, 2025
  • Ticket: LPD-67002
  • What changed: The PERMISSIONS_CHECKER value is removed. Instead, leverage PermissionCheckerWrapperFactory’s permission checker wrapping. A PermissionCheckerWrapperFactory implementation can be registered as an OSGi service from any module, so at runtime it can wrap a PermissionChecker instance.
  • Reason: Permission checker implementation switching only supports the shielded container shipped permission checker implementation. This has limitations for usage. It requires putting the implementation into a shielded container classpath (which is no longer supported because portal ext is no longer supported), and the implementation can not reference any module classes.

PropsValues.java portal-kernel/src/com/liferay/portal/kernel/util/PropsValues.java

  • Date: Sep. 30, 2025
  • Ticket: LPD-67002
  • What changed: The PERMISSIONS_CHECKER property is removed.
  • Reason: Permission checker implementation switching only supports the shielded container shipped permission checker implementation. This has limitations for usage. It requires putting the implementation into a shielded container classpath (which is no longer supported because portal ext is no longer supported), and the implementation can not reference any module classes.

DBPartition.java portal-kernel/src/com/liferay/portal/kernel/db/partition/DBPartition.java

  • Date: Oct. 6, 2025
  • Ticket: LPD-63411
  • What changed: The isPartitionEnabled method is removed. Instead, replace all usages with the DATABASE_PARTITION_ENABLED property in PropsValues.
  • Reason: This method is no longer needed because of the DATABASE_PARTITION_ENABLED property.

DataSourceFactory.java portal-kernel/src/com/liferay/portal/kernel/dao/jdbc/DataSourceFactory.java

  • Date: Oct. 6, 2025
  • Ticket: LPD-67617
  • What changed: The DataSourceFactory class is removed.
  • Reason: The implementation logic is merged into DataSourceFactoryUtil.

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

  • Date: Oct. 8, 2025
  • Ticket: LPD-64053
  • What changed: The styleBookEntryId field is removed, in favor of the new styleBookEntryERC field. Methods related to these fields are updated accordingly.
  • Reason: This change adds support for lazy referencing of a layout’s style book.

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

  • Date: Oct. 9, 2025
  • Ticket: LPD-68139
  • What changed: The init(User, RoleContributor[]) method is removed.
  • Reason: The RoleContributor collecting logic is now in the PermissionCheckerImpl constructor.

PermissionCheckerWrapper.java portal-kernel/src/com/liferay/portal/kernel/security/permission/wrapper/PermissionCheckerWrapper.java

  • Date: Oct. 9, 2025
  • Ticket: LPD-68139
  • What changed: The PermissionChecker field is now protected.
  • Reason: This change allows PermissionCheckerWrapper to directly invoke on the delegate PermissionChecker rather than using super.

PropsKeys.java portal-kernel/src/com/liferay/portal/kernel/util/PropsKeys.java

  • Date: Oct. 9, 2025
  • Ticket: LPD-67167
  • What changed: The mail.mx.update property is renamed to company.mx.update.
  • Reason: This property is only used by CompanyLocalServiceImpl to control whether to update the current company’s mail domain.

PropsValues.java portal-kernel/src/com/liferay/portal/kernel/util/PropsValues.java

  • Date: Oct. 9, 2025
  • Ticket: LPD-67167
  • What changed: The mail.mx.update property is renamed to company.mx.update.
  • Reason: This property is only used by CompanyLocalServiceImpl to control whether to update the current company’s mail domain.

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

  • Date: Oct. 10, 2025
  • Ticket: LPD-68254
  • What changed: Route now includes the implementation logic from the removed RouteImpl class.
  • Reason: This change simplifies the Route implementation.

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

  • Date: Oct. 10, 2025
  • Ticket: LPD-68254
  • What changed: Various setter methods are merged into setFriendlyURLRoutes(String) and init(Portlet).
  • Reason: This change adds support for postponing binding FriendlyURLMapper to a target Portlet.

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

  • Date: Oct. 10, 2025
  • Ticket: LPD-68254
  • What changed: Various setter methods are merged into setFriendlyURLRoutes(String) and init(Portlet).
  • Reason: This change adds support for postponing binding FriendlyURLMapper to a target Portlet.

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

  • Date: Oct. 10, 2025
  • Ticket: LPD-68254
  • What changed: The getFriendlyURLMapperTracker method is removed.
  • Reason: The method implementation is no longer needed. FriendlyURLMapper and Portlet binding logic is moved to PortletImpl#getFriendlyURLMapperInstance.

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

  • Date: Oct. 14, 2025
  • Ticket: LPD-68474
  • What changed: The abstract getTableAndPrimaryKeyColumnNames method is removed. Additionally, the new getTableNames method is added. Instead, if you must manually specify a primary key, now you can also override the new getPrimaryKeyColumnName(String tableName) method and specify the primary key with it.
  • Reason: Instead of specifying both the table name and the primary key, now the developer only must specify the table name and the upgrade process to get the primary key from the database table.

ZipFileUtil.java portal-kernel/src/com/liferay/portal/kernel/zip/ZipFileUtil.java

  • Date: Oct. 16, 2025
  • Ticket: LPD-67024
  • What changed: The toJarFile(Class<T>, String) and toZipFile(Class<T>, String, String) methods are removed.
  • Reason: These methods are no longer used.

DBInspector.java portal-kernel/src/com/liferay/portal/kernel/dao/db/DBInspector.java

  • Date: Oct. 23, 2025
  • Ticket: LPD-66152
  • What changed: The hasTable(String, boolean) method is removed. Instead, use hasTable(String tableName).
  • Reason: This method implementation is no longer needed.

Changes in portal-test Classes

JDBCConnectionLeakDetectionClassTestRule.java portal-test/src/com/liferay/portal/test/rule/JDBCConnectionLeakDetectionClassTestRule.java

  • Date: Sep. 23, 2025
  • Ticket: LPD-66446
  • What changed: The JDBCConnectionLeakDetectionClassTestRule class is removed.
  • Reason: This test rule is no longer used.