Liferay Portal 7.4 GA27 and Liferay Commerce 4.0 GA27 Release

We are pleased to announce the release of Liferay Portal 7.4 GA27 and Liferay Commerce 4.0 GA27!


Download options

Liferay Portal and Liferay Commerce share the same Bundle and Docker image.  To get started using either Liferay Portal or Liferay Commerce, choose the best download option suited for your environment below.

Docker image

To use Liferay Portal 7.4 GA27:

docker run -it -p 8080:8080 liferay/portal:

For more information on using the official Liferay docker image see the liferay/portal repo on Docker Hub.

Bundles and other download options

If you are used to binary releases, you can find the Liferay Portal 7.4 GA27 and Liferay Commerce 4.0 GA27 release on the download page.  If you need additional files (for example, the source code, or dependency libraries), visit the release page.

Dependency Management

For development using the Liferay Platform, update Liferay Workspace to use the  latest dependencies, by adding the following line to the build.gradle file:

dependencies {
	compileOnly group: "com.liferay.portal", name: "release.portal.api"

All portal dependencies are now defined with a single declaration. When using an IDE such as Eclipse or IntelliJ all apis are immediately available in autocomplete for immediate use.  

By setting a product info key property it will be possible to update all dependencies to a new version by updating the liferay.workspace.product property in the liferay workspace projects file:

liferay.workspace.product = portal-7.4-ga27

When using an IDE such as Eclipse or IntelliJ all apis are immediately available in autocomplete for immediate use.



Convert a version of a Product back to draft Draft

Convert a version of a Product in any status back to draft Draft.

API to search Order Items based on custom fields​​​​​​​

API enhanced to allow you to search order items based on custom fields. ​​​​​​​

​​​​​​​Cart import file to support Requested delivery date

Cart import file to support Requested delivery date per line item.


​​​​​​​Display Pages

When using display page templates to render blog entries now the old friendly URLs are taken into account. Users trying to access old URLs will be redirected to the new URLs.​​​​​​​

​​​​Documents and Media

Allow selecting content from asset libraries in Media gallery and Docs&Media widgets

Now users can select in Media Gallery and Documents & media widgets folders stored in connected Asset Libraries, making it super easy to make reusable resources available to the users.​​​​​​​


One-to-Many Relationships (Custom and System Objects)

Now users can relate one Custom Objects entry to many System Objects. Also, users can add and see a relationship to a System Object (One to Many).​​​​​​​

Create Actions Using Groovy Scripts

Now power users can use a Groovy Script in Action. With this new possibility, the user can now from a trigger has a dynamic action and achieve new possibilities on this feature.


Create Default Filters in a Custom View

Now power users can define filters for custom views, showing just the desired information to the final user. Now will be available to filter just list data.


Add Validations Using Expression Builder

Now power users can create on the objects a new way to validate submitted entries. Will be possible to use Expressions Builder, a new feature based on the Forms (DDM) validations.
Will be available to select the field, the functions, and operators to create specific rules. Case this information passed with success by the expression, the entry will be saved. Case this information is not passed, the user will see the error message configured.​​​​​​


Improved language-specific sorting in search results using icu_collation_keyword type for sortable fields on Elasticsearch

This new icu_collation_keyword type allows sorting using the correct collation rules of each language for more information see:​​​​​​​​​​​​​​

If you update your existing Liferay installation, this change won't be applied until a full reindex is executed and Elasticsearch mappings are recreated.

A full reindex is not mandatory, current installations will continue to use the old mappings with no defects.

Please, refer to the ticket for more details and Breaking Changes notes on how it may impact customization.



All documentation for Liferay Portal and Liferay Commerce can now be found on our documentation site:  For more information on upgrading to Liferay Portal 7.4 GA27 see refer to the Upgrade Overview.

Compatibility Matrix

Liferay's general policy is to test Liferay Portal and Liferay Commerce  against newer major releases of operating systems, open source app servers, browsers, and open source databases (we regularly update the bundled upstream libraries to fix bugs or take advantage of new features in the open source we depend on). 

Liferay Portal 7.4 GA27 and Liferay Commerce 4.0 GA27 were tested extensively for use with the following Application/Database Servers: 

Application Server

  • Tomcat 9.0

  • Wildfly 18.0, 23.0


  • MySQL 5.7, 8.0

  • MariaDB 10.2, 10.4

  • PostgreSQL 12.x, 13.x


  • IBM J9 JDK 8

  • Oracle JDK 8

  • Oracle JDK 11

  • All Java Technical Compatibility Kit (TCK) compliant builds of Java 11 and Java 8

Search Engine Compatibility Matrix

Source Code

Source is available as a zip archive on the release page, or on its home on GitHub. If you're interested in contributing, take a look at our contribution page.

Bug Reporting

If you believe you have encountered a bug in the new release you can report your issue by following the bug reporting instructions.

Getting Support

Support is provided by our awesome community. Please visit helping a developer page for more details on how you can receive support.

Fixes and Known Issues


When build the navigation menu with page(To select the site content page), Three are many errors in js console(Chrome 102.0.5005.61):

Uncaught TypeError: Cannot read properties of undefined (reading 'has')     at TreeViewItem.js:157:1     at uh (react-dom.development.js:6014:1)     at Cm (react-dom.development.js:6014:1)     at $m (react-dom.development.js:6014:1)     at HTMLUnknownElement.m (has.js:1:1)     at Object.y (has.js:1:1)     at E (has.js:1:1)     at rg (react-dom.development.js:6014:1)     at Ay (react-dom.development.js:6014:1)     at Uy (react-dom.development.js:6014:1)