Liferay Portal 7.4 GA45 and Liferay Commerce 4.0 GA45 Release

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

Caption

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 GA45:

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

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 GA45 and Liferay Commerce 4.0 GA45 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 gradle.property file:

liferay.workspace.product = portal-7.4-ga45

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

Features

Objects

Users now can download their object entries attachments directly from the portlets

Users to have access to the object entry files quickly, without needing to go to the entry details

https://issues.liferay.com/browse/LPS-162245

Experience Building

Reorder Fragment Sets available in the Page Editor

Now users can reorder the fragment sets they have available for page building however they want, so that they can place their most used fragment sets on top and have a much better and faster page building experience.

https://issues.liferay.com/browse/LPS-158737

Mark most used fragments as Favorites in the Page Editor

Users can now mark the fragments and widgets they use more often as Favorites, so that they can access them faster and have a better page building experience.


 

https://issues.liferay.com/browse/LPS-158737

Build forms with fragments on a page and map them to custom Liferay Objects

With this feature, users are able to create fully customizable forms on Content Pages, then map them to Liferay custom Objects. This way they can set up their custom applications and style the look and feel of their pages with a single set of tools: the page editor and the fragments. At the same time, they can provide a seamless and consistent experience for their users as they go through the different screens of their applications, increasing both engagement and conversion.

Customers can also develop their own form components to be used in the Page editor.


 

https://issues.liferay.com/browse/LPS-150277
​​​​​​​https://issues.liferay.com/browse/LPS-149720
https://issues.liferay.com/browse/LPS-157738

Application Security

Having OAuth Authorization Server metadata and OAuth client info properly implemented when using Liferay as OpenId connect client as an Instance Administrator

This new feature provide a portlet UI and service to add/update/remove OAuth Clients (only for OIDC at the moment.)

https://issues.liferay.com/browse/LPS-139642

Liferay as OAuth Authorization Server to be able to issue access token in JWT format as an Instance Administrator

This feature allows portal to issue access token in JWT.

JWT access token is widely used in varies of scenario to reduce network traffic and simplify development, so developers needs this for resource accessing. LXC for example.

https://issues.liferay.com/browse/LPS-157790

Search

Improved out-of-the-box Logging of Reindex Actions

Administrators can track the start and the end of reindex actions (full reindex, single type reindex and spell-check dictionaries reindex) for each Virtual Instance (i.e., Company) in the system. The new log entries are present by default, identified by company, with no adjustment to the logging settings of the system.

Log entries like those below are printed when performing reindex actions on a system with two Virtual Instances:

Reindex all search indexes:

2022-09-23 17:54:26.037 INFO  [liferay/background_task-2][ReindexPortalBackgroundTaskExecutor:57] Start reindexing company 0
2022-09-23 17:54:35.446 INFO  [liferay/background_task-2][ReindexPortalBackgroundTaskExecutor:76] Finished reindexing company 0
2022-09-23 17:54:35.446 INFO  [liferay/background_task-2][ReindexPortalBackgroundTaskExecutor:57] Start reindexing company 20097
2022-09-23 17:54:43.658 INFO  [liferay/background_task-2][ReindexPortalBackgroundTaskExecutor:76] Finished reindexing company 20097
2022-09-23 17:54:43.659 INFO  [liferay/background_task-2][ReindexPortalBackgroundTaskExecutor:57] Start reindexing company 43612
2022-09-23 17:54:50.914 INFO  [liferay/background_task-2][ReindexPortalBackgroundTaskExecutor:76] Finished reindexing company 43612

Reindex a single model (e.g., AccountEntry):

12022-09-23 17:54:55.343 INFO [liferay/background_task-3][ReindexSingleIndexerBackgroundTaskExecutor:125] Start reindexing company 20097 for class name com.liferay.account.model.AccountEntry 22022-09-23 17:54:55.384 INFO [liferay/background_task-3][ReindexSingleIndexerBackgroundTaskExecutor:150] Finished reindexing company 20097 for class name com.liferay.account.model.AccountEntry 32022-09-23 17:54:55.385 INFO [liferay/background_task-3][ReindexSingleIndexerBackgroundTaskExecutor:125] Start reindexing company 43612 for class name com.liferay.account.model.AccountEntry 42022-09-23 17:54:55.394 INFO [liferay/background_task-3][ReindexSingleIndexerBackgroundTaskExecutor:150] Finished reindexing company 43612 for class name com.liferay.account.model.AccountEntry 5

Reindex the spell-check dictionaries

 
12022-09-23 18:03:18.736 INFO [http-nio-8080-exec-1][BaseSpellCheckIndexWriter:278] Start indexing dictionary com/liferay/portal/search/dependencies/spellchecker/en_US.txt for company 0 22022-09-23 18:03:25.004 INFO [http-nio-8080-exec-1][BaseSpellCheckIndexWriter:301] Finished indexing dictionary com/liferay/portal/search/dependencies/spellchecker/en_US.txt for company 0 32022-09-23 18:03:25.006 INFO [http-nio-8080-exec-1][BaseSpellCheckIndexWriter:278] Start indexing dictionary com/liferay/portal/search/dependencies/spellchecker/es_ES.txt for company 0 42022-09-23 18:03:27.922 INFO [http-nio-8080-exec-1][BaseSpellCheckIndexWriter:301] Finished indexing dictionary com/liferay/portal/search/dependencies/spellchecker/es_ES.txt for company 0 52022-09-23 18:03:27.925 INFO [http-nio-8080-exec-1][BaseSpellCheckIndexWriter:278] Start indexing dictionary com/liferay/portal/search/dependencies/spellchecker/en_US.txt for company 20097 62022-09-23 18:03:34.106 INFO [http-nio-8080-exec-1][BaseSpellCheckIndexWriter:301] Finished indexing dictionary com/liferay/portal/search/dependencies/spellchecker/en_US.txt for company 20097 72022-09-23 18:03:34.107 INFO [http-nio-8080-exec-1][BaseSpellCheckIndexWriter:278] Start indexing dictionary com/liferay/portal/search/dependencies/spellchecker/es_ES.txt for company 20097 82022-09-23 18:03:37.209 INFO [http-nio-8080-exec-1][BaseSpellCheckIndexWriter:301] Finished indexing dictionary com/liferay/portal/search/dependencies/spellchecker/es_ES.txt for company 20097 92022-09-23 18:03:37.214 INFO [http-nio-8080-exec-1][BaseSpellCheckIndexWriter:278] Start indexing dictionary com/liferay/portal/search/dependencies/spellchecker/en_US.txt for company 43612 102022-09-23 18:03:43.596 INFO [http-nio-8080-exec-1][BaseSpellCheckIndexWriter:301] Finished indexing dictionary com/liferay/portal/search/dependencies/spellchecker/en_US.txt for company 43612 112022-09-23 18:03:43.597 INFO [http-nio-8080-exec-1][BaseSpellCheckIndexWriter:278] Start indexing dictionary com/liferay/portal/search/dependencies/spellchecker/es_ES.txt for company 43612 122022-09-23 18:03:47.373 INFO

https://issues.liferay.com/browse/LPS-161460

New Template Context Variables are available for the Search Results Widget

We have added a few new Template Context Variables to the Search Results widget so now they can be used when creating a custom widget template:

  1. Modified Date: display the modified date.

  2. Modified User Name: display the name of the user who last modified the document.

  3. Modified User Portrait: display the string of the user's portrait URL who last modified the document.

  4. Creator User Portrait: display the string of the creator user's portrait URL.

  5. Publish Date: display the publish date.

https://issues.liferay.com/browse/LPS-157872

TunnelServlet became configurable to not hide exception data from clients

The ticket LPS-119049 hid all exception data leaking from the TunnelServlet. However, many features, like remote staging actually used the exceptions to show descriptive error messages to the users about the issues they receive when doing remote staging operations: activating/deactivating remote staging or starting a remote publish process.

Some issues, like LPS-126729 could be worked around without sending the exception data back, but some others required the actual data to show the correct error message.

So from now you can set this parameter in the portal-ext.properties file to hide/show the exceptions thrown in the methods called through the TunnelServlet (default value is false, this means that the exceptions will be shown by default):

tunnel.servlet.hide.exception.data=true

The default value originally intended to be true, but it has been changed. See Brian’s comment on the PR: Lps 154557 fix 2 by shuyangzhou · Pull Request #121080 · brianchandotcom/liferay-portal

https://issues.liferay.com/browse/LPS-154557

Having clearer configuration description and better function help texts as a Site Template administrator

This Story doesn't contain technical changes, only the UI changed.

The UI changes are described in the Story.

https://issues.liferay.com/browse/LPS-156640

Documentation

All documentation for Liferay Portal and Liferay Commerce can now be found on our documentation site: learn.liferay.com.  For more information on upgrading to Liferay Portal 7.4 GA45 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 GA45 and Liferay Commerce 4.0 GA45 were tested extensively for use with the following Application/Database Servers: 

Application Server

  • Tomcat 9.0

  • Wildfly 18.0, 23.0

Database

  • MySQL 5.7, 8.0

  • MariaDB 10.2, 10.4, 10.6

  • PostgreSQL 12.x, 13.x, 14.x

JDK

  • 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