Liferay Portal 7.4 GA120 and Liferay Commerce 4.0 GA120 Release

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

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

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

Bundles and other download options

If you are used to binary releases, you can find the Liferay Portal 7.4 GA120 and Liferay Commerce 4.0 GA120 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-ga120

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

Features

Commerce

Date Times as Options 

Feature Status: Release

Users can now select Date Times as a product option type, configuring purchase options for products based on date, times, time zones, and durations, allowing for the sale of time slots.

Documentation: Using Product Options

Stripe Payment Method Client Extension

Feature Status: GA

Ability to allow payments using the Stripe payment method via client extension. The client extension is also available on the Marketplace.

Documentation: Using the Stripe Client Extension

Generative AI for Commerce Product

Feature Status: Release

Users can activate the content creation prompt with a single click by leveraging AI capabilities directly within the CKEditor for seamless and efficient content generation. Requires a valid OpenAI API key.

Documentation: Generating Product Descriptions using AI

Account Contacts

Feature Status: Release

Users now can view and manage contacts directly related to accounts like phone numbers, emails, websites, addresses.

Now there is a new Contact Tab in Account details page with 2 internals tabs:

  1. Addresses

  2. Contact Information


 


 

Now the users with “Accounts > Account Entry: Manage Addresses” permission should be able to manage their contacts with all these actions:

  • Add

  • edit

  • remove

  • mark as primary

here below an example of managing phone number:

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

Users without “Accounts > Account Entry: Manage Addresses” permission should be able to only view the existing phone number entries

​​​​​​​Documentation: Contacts

Mapping Individual Product Specifications

Feature Status: Release

​​​​​​​Users can map each product specification individually on a content page and they can choose which specification to render and in what order using display page templates.

Documentation: Specifications

TradeCentric Connector for 7.4

Feature Status: GA

Provided a new version of the TradeCentric(formerly PunchOut2Go) Connector for 7.4. The connector is available on the Marketplace.

Documentation: TradeCentric (formerly PunchOut2Go)

Content Management

Translation Status for Web Content Fields

Feature Status: Release

We've implemented a new translation status feature in the web content editor, labeled "Translating," which provides information about the number of translated fields and those still requiring translation. This feature helps users quickly identify areas needing translation. Additionally, all translatable fields, including metadata, are now conveniently displayed on the left side of the screen, reducing the likelihood of overlooking them.

​​​​​​​

 

Documentation: Translating Web Content

Manage Web Content permissions in bulk

Feature Status: Release

Users now have the convenient capability to adjust permissions for multiple web contents in bulk.

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


​​​​​​

Documentation: Assigning Permissions to Web Content Articles

Manage permissions and scheduling when publishing content

Feature Status: Release

During the publishing process, users can both define and manage permissions, as well as schedule publication dates for their web content. When creating content for the first time, users will have the opportunity to conveniently review and manage permissions. Furthermore, when editing previously created content, users can also adjust permissions directly from the editor view. Additionally, users can easily select the desired publication date for their content during the publishing process.

​​​​​​​
 

Documentation: Adding a Basic Web Content Article

Easily identify private content

Feature Status: GA

Users can readily spot content that is not visible to Guest users through an icon, whether it's in list or table view or within the web content editor. Additionally, this feature is accessible in the item selector, empowering users to discern which content is not viewable by Guest users.

​​​​​​​
 

Documentation: Adding a Basic Web Content Article

AI image generation in DAM

Feature Status: Release

Users can set the openAI API key to enable DALL-E to create images. Once the openAI API key is set, the users are able to generate AI images based on a prompt when adding a new document. Additionally, this feature is also available when the users want to select an already existing image.

Documentation: Generating Images Using AI ​​​​​​​

Calendar events​​​​​​​

Feature Status: GA

Users can access to the event’s details when selecting a calendar event and be redirected to the already existing detail page of that particular event. Users can map a Calendar Event’s specific URL, along with some other fields, in order to use it in emails so that the recipient can click it and be redirected to the Event’s details.

Documentation: Mapping Calendar Event Fields to Display Page Templates

Improved Web Content “Mine” and “Recent” Filters

Feature Status: Release

Users are now able to easily identify the content they have created and any recent content they've generated. This enhancement will streamline and optimize their workflow.

Documentation: Filtering and Sorting Web Content Articles

Make URLs configurable for Asset types

​​​​​​​Feature Status: Beta

 

​​​​​​​

 

 

 

Users can easily configure the friendly URLs for the different asset types, updating URL separators. In addition to that, they are able to set categories within a blog’s friendly URL so the users can easily identify by the URL what is the main topic of the page they are visiting.

Documentation:

Site Management & Publications

Out of Date Publications Improvements

Feature Status: GA

When publications go out of date, they are completely useless and all changes made to them can not be leveraged in any capacity. In LXC the situation is even more dire as customers do not have control of when Liferay will be updated. This can cause an extremely large amount of changes to become useless.

The changes in this epic prevent publications from going out of date unless there is an issue with the publication after an upgrade. Also these changes allow publications users to move changes from an out of date publication to another publication. This allows users to salvage changes after an upgrade.

​​​​​​​Documentation: Managing Out-of-date Publications ​​​​​​​

Change-tracked entity modification protection

Feature Status: GA

​​​​​​​This feature prevents portal from being unusable when a change-tracked entity being modified in a publication is removed from production. If an entity is being modified in a publication, it cannot be removed from production. If a deleted entity in a publication is being modified in another publication, the publication with the deletion cannot be published.

Documentation: Deletion Modification and Modification Deletion Conflicts

Improve performance of Timeline and Conflict checking icons

Feature Status: Release

We are constantly working on improving performance of Publications. We have implemented improvement for Timeline and Conflict checking icons.

Documentation: Publications Usability Improvements in 2024.q2

Improve revert changes performance for huge datasets

Feature Status: GA

We have found a way to significantly boost the performance of reverting changes , when the DB has huge amount of records. This way the usability of Publications further increases.

Documentation: Publications Usability Improvements in 2024.q2

Notify and provide additional context to editors when a publication has failed to publish

Feature Status: Release

​​​​​​​We have also realized that publishing a scheduled publication can be really painful, if a conflict appears between the scheduled publication and Production before or during publishing. We have added a functionality to provide more information inside Liferay notifications when this situation occurs.

Documentation: Conflicts on Scheduled Publications

Page Management

Preview Page Drafts Permission

Feature Status: Release    

Create a reviewer role that has read-only (and no update) permissions that would review the draft of a content page, or the pages that are submitted through a workflow and are still pending approval and publication.


 

Documentation: Updating Page Permissions

Manage Permissions of Different Group of Pages

Feature Status: Release

Page Creator now can efficiently manage permissions for their website, distinguishing between public and restricted pages. Key functionalities, such as unique designs and restricted access, are incorporated seamlessly.

Requirements include easy identification of page visibility, bulk permission management, and configuration options for both individual pages and entire branches.

​​​​​​​Documentation: Updating Page Permissions

Customizing XML Sitemap Indexing

Feature Status: Release

Provide the option at Instance and Site settings to the XML sitemap to allow customers to customize the inclusion or exclusion of content according to the SEO technical requirements.

When the User reaches Control Panel → Instance Settings, a new menu item (SEO), under Platform, will be shown. Accessing this menu, the user will be able to include/exclude different content.

​​​​​​​
 

Documentation:

Platform Experience & Search

Modify the Default Token Definition with the Theme CSS Client Extension

Feature Status: GA

​​​​​​​Introduce an enhancement to Theme CSS Client Extensions (CX) in Liferay DXP that allows developers to integrate a frontend-token-definition.json file directly into their Theme CSS CX. This update simplifies theme customization by enabling direct management of style tokens, enhancing efficiency, and ensuring consistency across projects.

Documentation:

Configure Script Tag Attributes with the JS Client Extension

Feature Status: GA

Enhanced Script Loading Options for JS Client Extensions

Feature Overview
We're introducing advanced script loading options for JavaScript Client Extensions in Liferay, providing developers more control over how JavaScript is applied to pages. This update allows the specification of async and defer attributes directly in the extension's configuration, optimizing the loading process and improving page performance.
Benefits for Customers

  • Improved Page Load Performance: By setting async or defer attributes, scripts can be loaded non-blocking, enhancing page responsiveness.

  • Enhanced Control: Developers can preset these attributes in the YAML configuration or through the UI, ensuring scripts behave consistently across all pages without further adjustment.

  • Streamlined Configuration: Once set, these attributes are locked at the extension level, eliminating discrepancies and simplifying script management.

 

Allow developers to specify additional attributes to the <script> tag when deploying in with the JS Client Extension.

Example usage in client-extension.yaml:

scriptElementAttributes: async: true data-attribute: "value" data-senna-track: "permanent"
fetchpriority: "low"

Or, developers can configure the attributes via the create Client Extension UI too:

​​​​​​​
 

When configuring a JS CX on a page and async/defer Boolean attributes are present in the CX (set in the yaml / defined through the UI), the following behaviors apply in regards to the Load type options:

  1. The attribute set in the CX will be used and the ability to change it when applying it on a page will be disabled.

  2. When both attributes are set in the CX, async will be applied.

  3. When async or defer is set to false in the CS, the related option will be removed from the Load selector. (e.g. if defer: false the load options available for the user will be default and async).


 

Documentation: Using a JavaScript Client Extension

Downloading Documents and Media Files Directly from the Search Results

Feature Status: GA

When the user has DOWNLOAD permission on a file, then the Documents and Media File result features a download link in the Search Results widget in all out-of-the-box widget display styles.

​​​​​​​

 

 

The Search Results widget Template Context has received a new field to obtain the download URL in custom display templates: ${entry.getAssetRendererURLDownload()}

Documentation: Result Summaries

Elasticsearch 8.13.x Compatibility

Feature Status: GA

Part of the recurring compatibility testing, Elasticsearch 8.13.x has been added to the compatibility matrix to the corresponding Liferay versions.

Note: Compatibility with newer Elasticsearch minor versions is always tested in two ways:

  1. Latest-Latest: Testing the latest Liferay version with the latest available minor version of Elasticsearch → e.g. Master/2024.Q2 + Elasticsearch 8.13

  2. Minimum-Latest: Testing the minimum Liferay version where Elasticsearch 8 compatibility was first made available with the latest minor version of Elasticsearch → DXP 7.4 U81/DXP 7.3 U31 + Elasticsearch 8.13

This way we can not only provide compatibility for the latest Liferay versions, but also backwards compatibility, allowing a broader customer base and deployments to operate their stack with an up-to-date search engine version.

As Elasticsearch is usually releases a new Minor version roughly every two months, this is a recurring process and a planed activity in each milestone in the search team.

Documentation:

Elasticsearch Client & Sidecar Updated to 7.17.18

Feature Status: GA

​​​​​​​Liferay ships with an updated Elasticsearch connector using 7.17.18 as the client version and also for the development and testing purpose Sidecar server.

Documentation: Using the Sidecar or Embedded Elasticsearch

Frontend Infrastructure

Feature Status: Beta

Allow users to define list and cards visualization modes for dataset

Until now the Data Set was always rendered as a table with one column for each mapped field. From now on, the admin user can define up to three different visualization modes for the same data: Table, List and Cards.

 

These visualization modes share the configurations about: filters, actions, sorting and pagination, however, each visualization mode can have different mapped fields decided by the admin users.

Also, a new Settings tab to select the default mode has been added.

 

Final users will face the visualization modes created by Admin Users and will be able to change between them to discover the data in the fashion they want.

 

Manage additional actions for dataset displays

Feature Status: Beta

The Data Set actions has been improved to provide new capabilities

  • Regarding the Item Actions, now there are available 4 new types of Actions on top of the Link Action: Async, Headless, Modal or SidePanel that allow Admin Users to connect items to new functionalities and use cases.

  • On top of that Creation Actions have been created that allow Admin users to create new data or direct users to a place to do so.

Documentation: Data Set View Actions

Manage complex fields in dataset views

Feature Status: Beta

Users are allowed to map fields first level of related elements or any hierarchical structure through a tree view which is searchable and expandable.

The users can map leaf fields, the common use case, but also parent fields which include all the children data to be rendered through a Client Extension.

Core Infrastructure

Modern Java Runtime Compatibility

Feature Status: GA

Java

JDK 17 LTS
Java JDK 21 LTS

As part of Liferay’s commitment to innovation, this release includes certification of the latest Java LTS releases.

All Java Technical Compatibility Kit (TCK) compliant builds of JDK 17 and 21 are supported.

Documentation:

CAPTCHA check added to Server Administration pages

Feature Status: GA

​​​​​​​The Server Administration interface provides powerful tools for controlling the server. As an added layer of security, CAPTCHA is now required for actions in Server Administration pages and the Gogo Shell page. Due to the sensitive nature of these controls, the system will still enforce CAPTCHA on these pages, even if the “Maximum Challenges” configuration is set to a negative number.

Documentation: Configuring CAPTCHA or reCAPTCHA

Business Process Management

HTML Autocomplete attribute for Forms

Feature Status: GA

The autocomplete attribute grants the user agent permission to provide automated assistance in filling out form fields. This feature can significantly speed up the form-filling process, especially for repetitive or standard information like names, addresses, and email addresses. This also allows screen readers which use standard attributes such as autocomplete to assist users navigating websites.

Incorporating the HTML autocomplete attribute into your forms is a simple yet powerful way to enhance user experience. By leveraging autocomplete suggestions, you can streamline the form-filling process, reduce errors, and ultimately create a more user-friendly environment. Experiment with different values, test across browsers, and watch as your users appreciate the improved efficiency of your forms

​​​​​​​

Documentation: Browser Autocompletion​​​​​​​

Support for SugarCRM connector for Proxy Objects

Feature Status: Beta

This feature introduces the capability to connect Liferay Objects with SugarCRM Objects, empowering users to synchronize and store their data efficiently between the two platforms. By bridging these systems, users can streamline their workflows, enhance data consistency, and leverage the robust features of both Liferay and SugarCRM.

Users can now, with low effort, connect their Liferay and SugarCRM environments, eliminating the need for manual data transfers and reducing the risk of errors. This enhancement not only simplifies data management but also enhances the overall user experience by providing a cohesive and integrated ecosystem for managing customer data.

Documentation: Using Objects with SugarCRM

Headless

Base64 support for files management of custom objects

Feature Status: Release

For custom objects, we have add the possibility to upload and save an attachment file in only one step. As another field of the entry, users can upload directly a document to an attachment field using Base64 format.

"AttachmentField1" : { "fileBase64" : "iVBORw0KGgoAAAANSUhEUgAAAD0AAAAXCAIAAAA3N9DuAAAAA3NCSVQICAjb4U/gAAAAEHRFWH", "name" : "file.png"
}

And, to recover the values of the entry, they can do it in the same format using nested fields.

curl -X GET \ -u 'test@liferay.com:test' \ 'http://localhost:8080/o/c/mytestobjects/by-external-reference-code/users-computer-attachment-1?nestedFields=usersComputerAttachment1.fileBase64'

For sure, the previous options of uploading and downloading files of an entry are available too so the user can decide which to use in any case.

Only available for Custom Objects fields.
 
 
 
 
 
 
 
 

Documentation: Using Object APIs With Base64 Encoded Files

Manage multiple versions and endpoints with same name in GraphQL.

Feature Status: GA

Until now, in GraphQL, it was not possible to create a query (or mutation) where the user could select the version to execute. Besides that, in case more than one endpoint had the same name but in different applications, you couldn’t select which one to use.

In order to make queries and mutations unique in GraphQL, we have created a new structure using a namespace with the following format:

Path + “_” + “v” + MayorVersion + “_” + MinorVersion ( 0 by default ).

 

Users can choose between using the previous structure ( always execute the last version or the first endpoint created) or the new one ( allow to select exactly what to execute using the namespace ). Both are available.

 
query { structuredContents(siteKey: "20117") { items { title } }
}

 

 

query { headlessDelivery_v2_0 { structuredContents(siteKey: "20117") { items { title } } } }

Documentation: Consuming GraphQL APIs

Allow users to set the localization for custom objects.

Feature Status: GA

Until now, for a translatable object fields, there was no way to get the values in different languages and always returned the default one. With this change, by adding the Accept-Language header, users can get the selected values properly. This change affects to Rest API and GraphQL.

Documentation: API Headers Reference

Allow users to publish child pages without their parents

Feature Status: Release

​​​​​​​We have improved the behaviour of an existing configuration to be able to properly publish a child page in a Staging process to Live site without its parent(s). This also improves the performance of publishing changes.

Documentation: Configuring Page Publishing

Application Security

“Sign in” Utility Page creation

Feature Status: Beta

With this new feature, users can now create 'Sign in' type Utility pages, allowing for customization of the login process according to individual preferences.

Documentation: Sign In

“Forgot Password” Utility Page creation

Feature Status: Beta

​​​​​​​With this new feature, users can now create 'Forgot Password' type Utility pages, allowing for customization of the password recovery process according to individual preferences.

Documentation: Forgot Password

“Create Account” Utility Page creation

Feature Status: Beta

With this new feature, users can now create 'Create Account' type Utility pages, allowing for customization of the account creation process according to individual preferences.

Documentation: Create Account

Forgot Password and Create Account portlet creation

Feature Status: Beta

To create Sign In, Forgot Password, and Create Account utility pages, it's necessary for these three views of the Login portlet (i.e., Sign In widget) to be available as individual widgets, which can be placed on pages separately. As a result, Sign In, Forgot Password, and Create Account are now accessible as separate widgets.

It's worth noting that the Sign In widget retains its previous functionality.

Documentation: Tools

Moving between Utility pages

Feature Status: Beta

We aimed to facilitate seamless navigation between various Utility pages, whether there are multiple or just one.
The actual implementation has been completed in previous tasks, requiring only testing at this stage.

​​​​​​​​​​​​​Documentation: Types of Utility Pages

Dev Tools

Blade Support for Liferay DXP Quarterly Releases

Feature Status: GA

Blade 6.0.0 Released

Major changes:

  • Provides support for generating Liferay Workspaces using the new quarterly release versions (e.g. blade init 2024.q1.1 my-workspace)

  • Provides a new flag for all commands: --refresh-releases

This forces blade to check for new release

Blade 7.0.0 Released

This release will allow users to generate a version of Liferay Workspace (10.1.0) that uses Gradle 8, which in turn enables JDK 20+ compatibility.

Documentation: Blade CLI

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 GA120 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 GA120 and Liferay Commerce 4.0 GA120 were tested extensively for use with the following Application/Database Servers: 

Application Server

  • Tomcat 9.0

  • Wildfly 18.0, 23.0, 26.1

Database

  • MySQL 5.7, 8.0

  • MariaDB 10.2, 10.4, 10.6

  • PostgreSQL 12.x, 13.x, 14.x, 15.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