Liferay Portal 7.4 GA98 and Liferay Commerce 4.0 GA98 Release

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

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

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

Bundles and other download options

If you are used to binary releases, you can find the Liferay Portal 7.4 GA98 and Liferay Commerce 4.0 GA98 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  lat est 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 Ausing 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.properties file:

liferay.workspace.product = portal-7.4-ga98

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

Features

Business Process Management

Visualization of Object Model Structures

​​​​​​​​​Now, users are able to visually understand the structure of their objects and how they connect with with each other to result in the platform model.

https://liferay.atlassian.net/browse/LPS-148856​​​​​​​

Support Read-only Fields in Objects Framework
​​​​​​​

This feature adds read-only support for all object fields types, making sure users are not able to update those fields from both the UI or APIs, only the system can through default values or actions for example.

Users can configure their fields between 3 options, read-only true, false, or conditional.

  • Read-only false: normal fields that support input from users through the UI or API.

  • Read-only true: fields that do not support inputs from users through the UI or API, only can be updated through the system, as actions and default value for example.

    • Read-only fields must be supported in views and layouts, in the layouts those read-only fields must be not editable.

  • Read-only conditional: fields that by definition are read-only false, but that will through exceptions in case the condition is true and the user can’t update that field. In this case, in the UI, the logic should run before the field is loaded, in the headless API, this validation is only made when the user sends the request.

    • The condition is built using expression builder.

https://liferay.atlassian.net/browse/LPS-172213

Support Translations for Objects

This feature empowers users to create content use cases on top of objects framework, allowing admins to enable localization for objects' entries text fields

https://liferay.atlassian.net/browse/LPS-148853

Save Object Entries in Draft Mode to Finish the Submission Later

Now, users are able to fill out object entries in parts, allowing them to save data as draft and return at their convenience to complete.

https://liferay.atlassian.net/browse/LPS-181663
https://liferay.atlassian.net/browse/LPS-191474

Define the Output field of Objects Validations

Evolving the user experience when object validations fail specifying information end-users need to update.


https://liferay.atlassian.net/browse/LPS-182586
​​​​​​​https://liferay.atlassian.net/browse/LPS-182311

Send E-mail Notifications Separately or with in One Single Notification With Multiple E-mails in Copy

This feature allows admin users to configure whether to send one email with everyone in copy or many emails individually to each email address

https://liferay.atlassian.net/browse/LPS-187695

Defining Computed Fields
​​​​​​​

Enabling this feature will allow users to dynamically populate fields using expressions with information created from data filled and provided by other fields.

https://liferay.atlassian.net/browse/LPS-148850

Experience Building

Easier performance debugging with new tool to prevent performance issues in content pages

Now the users can easily identify components that may cause performance issues in their Pages.

We have added a new tab on the Page Audit to show the users the back-end render times of the different components, as well as warnings to help identify specific components configurations that may lead to performance issues. Those warnings also appear on the Edit mode, so the user is aware of possible issues during the page creation.

https://liferay.atlassian.net/browse/LPS-187284
https://liferay.atlassian.net/browse/LPS-187285

Prevent page edition conflicts with the possibility to manage concurrent edition in Pages

Now we prevent content creators from generating page conflicts and errors by automatically locking pages when they are opened in Edit Mode, not allowing other users edit it at the same time. Beside that, a recurrent process reviews all locked pages to unblock them automatically if no activity is registered. Administrators can also unlock them manually if it’s needed.

https://liferay.atlassian.net/browse/LPS-180328

Improved Import Process for Fragments and Page Templates

The old import modal for Fragments and Page Templates is substituted by a new special import page, a new page with the import outcomes is added with the results of the process and last, but not least, the user is provided more import options for a better management of the already existing files: Overwrite Existing Entries, Overwrite Existing Items, Keep Both. A Warnings label is added as well to the fragments that were imported with warnings and that could cause malfunctions.

https://liferay.atlassian.net/browse/LPS-174939

Better management of Web Content Featured Image
​​​​​​​

Now users can select any image from the Liferay repository directly from the Web Content edition page, creating a better experience and allowing create a structure of featured images if it’s necessary.

https://liferay.atlassian.net/browse/LPS-180855

Content Publishing

Improve Review Changes experience
​​​​​​​

In the portal, Site Administrators are able to create different User Experiences for Pages. Publications can publish these Experiences. However it can be confusing for Publication Reviewers that they can not review changes introduced in all the Experiences, which are going to be published. Here we added the ability to Publication Reviewers to view changes added in all the Experiences which are going to be published.

https://liferay.atlassian.net/browse/LPS-187182

Provide on-demand user access to review changes in Publications
​​​​​​​

Sometimes the changes added to a publications needs to be reviewed someone, who is not a member of the site. The goal here was to make unauthenticated users able to review changes within a publication. For this we implemented a mechanism to generate a code, which can be used to access the Review Changes screen of a certain publication. Also this link could be easily invalidated/generated anytime by authenticated Publication Reviewers.

https://liferay.atlassian.net/browse/LPS-187429

Allow users to move changes between Publications
​​​​​​​
​​​​​​​

The goal here was to make the users able to move changes between publications. This is needed because sometimes users do not want to publish an entire publication, but also do not want to revert the changes which will not be published actually. With this feature users can move changes from one publication to another, creating subsets of changes, and publish them separately. For readers with technical knowledge: this is similar to cherry-picking a commit in git from one branch to another.

https://liferay.atlassian.net/browse/LPS-177995

Improve the feedback provided to users when a conflict happens during Publications
​​​​​​​

We have received multiple requests about users having difficulties resolving conflicts during a Publication process. We listened for these requests, and decided to improve the quality of feedback provided to users about conflicts. Making the resolution of these conflicts easier.

https://liferay.atlassian.net/browse/LPS-188751

Make it easy to determine whether an application will save into a publication
​​​​​​​

Some applications do not support Publications. That situation can be really confusing when users try to use one of these applications, while inside a publication, and expect it to work together with Publications. We are aiming to make the user experience of portal during publication as smooth as possible, so we decided to add a mechanism which provides the users with information if they start using one of these apps.

https://liferay.atlassian.net/browse/LPS-147671

Improve performance when reviewing changes in a publication

Improving performance is one of the main elements in our product strategy. Here we worked on improving the performance of Review Changes screen. We have already improved performance of other screens, and in the future we keep improving the performance of the screens.

https://liferay.atlassian.net/browse/LPS-185308

Platform

Concurrent and Sync Reindex Execution Modes with High Availability

Starting with U98, two new reindex execution modes become available as Beta:

  • Concurrent

  • Sync

when Liferay is operating with Elasticsearch as the search engine.

The new reindex modes can come in handy in different scenarios providing better alternatives for administrators to operate and maintain search data in Liferay with high-availability.

​​​​​​​​​​​​​​
 

Frontend Infrastructure

Define default sorting for dataset views
​​​​​​​

Now admins can define the default sorting for a dataset view. You can select the field to sort by when users access the page with the data set view as well as the direction (ascending or descending). It is possible to add more than one field. In this case, results will be sorted following the order of the fields, so it will start sorting based on the first field, for elements with the same value for that field, it will continue sorting them based on the second field and so on.



In order to use this feature enable “Data Set Manager” in the beta section of the Feature Flags menu.

https://liferay.atlassian.net/browse/LPS-180202

Multi-language support for dataset views configuration

Admins now can define views and select fields that are localized, so users will access the corresponding translation when visiting the page. Additionally, the names of the columns and filters are also localizable.



In order to use this feature it is needed to enable “Translation Support for Object Entries” in the Feature Flags menu before enabling “Data Set Manager” in the beta section of the Feature Flags menu.

https://liferay.atlassian.net/browse/LPS-176962

Manage filters for dataset views

Admins can define filters to make them available for end users visiting pages with the dataset fragment. There are 3 types of filters available:

  • Date filters: compatible with fields of type date. Admins can provide a name to the filter as well as provide a “From” and “To” dates to be pre-applied if needed.

  • Selection filters: This filter allows admins to configure a picklist as the source of the options for the filter.

  • Client extension: This new client extension enables admins and developers to fully customize the filter experience and add new types of filters depending on their needs.

​​​​​​​
 

In order to use this feature enable “Data Set Manager” in the beta section of the Feature Flags menu.

https://liferay.atlassian.net/browse/LPS-176808
​​​​​​​https://liferay.atlassian.net/browse/LPS-187522

Manage link item actions for dataset views
​​​​​​​

Apart from exposing information in tables, with the Data Set Manager now admins will be able to define actions linked to each of the elements of the data set. For each action:

  • Admins can provide a localized label

  • Choose the icon to be used

  • Provide the URL to redirect the user to. In case you need to parametrize it so each row has a different URL, you can do it by adding it between brackets as part of the URL, for example myURL/{id}/editPage will look for “id” in the Headless response and substitute for the corresponding value in the URL.

  • With “Headless Action Key” admins can associate an action to a headless endpoint, which take permissions into account, so the action will only be shown to the user if the corresponding headless action is present in the response. For example, you can link an “edit” action to the “update” Headless Key.

  • Provide an optional Confirmation Message if needed.

​​​​​​​

In order to use this feature enable “Data Set Manager” in the beta section of the Feature Flags menu.

https://liferay.atlassian.net/browse/LPS-187742

Headless

​​​​​​​API Builder: an easy way to create API applications with Low Code/No Code

We have created a new application that helps developers to build APIs based on custom Objects in a Low Code/No Code UI. This new feature allows users to define the whole structure of the API, from the endpoint’s name to the data model of the request and response schemas.

And, because the persistence layer of the API Builder is Objects, all capabilities are available at the API layer and every object has its own CRUD API application created by default.

So, from the UI or from the API, now users can create custom API Applications from scratch.



The scope of this beta feature only covers the creation of GET methods to retrieve a collection of elements.

https://liferay.atlassian.net/browse/LPS-170000
https://liferay.atlassian.net/browse/LPS-178642
https://liferay.atlassian.net/browse/LPS-184413
https://liferay.atlassian.net/browse/LPS-186757
https://liferay.atlassian.net/browse/LPS-188583

Data Migration Center: A way to Export and Import elements

With the Data Migration Center, users can export and import, in a very easy way, objects entries and objects definitions from one instance to another using JSON files. The actions executed can be consulted later in a list when you can download the files generated every time is needed.

https://liferay.atlassian.net/browse/LPS-186561

Application Security

Expanding Permission with "Invite Users"
​​​​​​​

When “Manage Users” permission is added to an Account Admin, the Admin can invite, assign and create Users. We separated the “Invite User” permission so, it can be used without providing the other permissions to the User

https://liferay.atlassian.net/browse/LPS-188798

Enhancing the inactive User handling

Before this feature when somebody wanted to activate/deactivate a User they needed to have “Delete” permission. We created two new permissions called “Activate” and “Deactivate”. Users with “Delete” permission still able to activate/deactivate Users.

We also created two new Headless-API endpoint:

/headless-admin-user/v1.0/user-accounts/by-status/${status}

Status can be either "active" or "inactive," allowing you to fetch users by their status.

/headless-admin-user/v1.0/user-accounts/by-email-address/${emailAddress}

This endpoint lets you retrieve a user by their email address, regardless of their current status.

https://liferay.atlassian.net/browse/LPS-188420

Creating the possibility to remove entries from the User invitation form

This feature addresses the inconvenience of not being able to remove specific entries from user invitation forms, enhancing the user experience for admin users who create these forms. It solves the problem of inefficient form management, allowing users to remove entries without starting over.

The feature enables users to remove entries from the invitation form by clicking a designated removal button, with a confirmation modal to prevent accidental removal.

https://liferay.atlassian.net/browse/LPS-189430

Audit Log - role actions and impersonation

We extended the Audit Log info on IMPERSONATION actions , ASSIGN/UNASSIGN events involving the role assignment of individual users and ASSIGN/UNASSIGN Role Assignment of Organizations/User Groups/Sites.

https://liferay.atlassian.net/browse/LPS-177190

Expanding the Headless Admin User API

 

We have expanded our Headless Admin User API to include POST, PUT, DELETE, and PATCH endpoints for managing postal addresses associated with user accounts. This development aims to provide more comprehensive functionality and greater flexibility for our users. Additionally, we've made crucial changes to the UserAccount schema and related methods to allow users to manage user status efficiently.

https://liferay.atlassian.net/browse/LPS-184023

Secure Access Through WebDAV
​​​​​​​

Because WebDAV appears to be the only viable solution for remote documents access/editing for the moment and there is customer demand. WebDAV supports HTTP Basic and Digest auth. The latter requires us to store insecure hashes, because of protocol specifics.

Because we cannot change that nor remove WebDAV support, we will reduce the impact of a successful attack instead.

This is achieved by creating a separate strong password for Digest auth.

We achieve the “strong” characteristic through only allowing generation of passwords, based on UUIDs. This means when the hash is produced, it will also be stronger also, though not perfect.

https://liferay.atlassian.net/browse/LPS-139719

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 GA98 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 GA98 and Liferay Commerce 4.0 GA98 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.

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 getting started for more details on how you can receive support.

Fixes and Known Issues