Liferay Portal 7.4 GA4 and Liferay Commerce 4.0 GA4 Release

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

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 GA4 and Liferay Commerce 4.0 GA4 run the following:

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

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

Bundles and other download options

For a binary release, please find the Liferay Portal 7.4 GA4 and Liferay Commerce 4.0 GA4 release on the download page.  For 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-ga4

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

Liferay Commerce Features

Different Pricing and Discounts Based on the Order Types

Sellers can now change their pricing and discounts depending on the order conditions, for example because an order is marked as urgent vs. a stock order.

Optimized Product Images for Specific Devices

Performance in a digital commerce context is important. One way to optimize the page load speed is to change the quality of a picture depending on the device it will ultimately be rendered on. Product images are now automatically resized and delivered to the user depending on their device. Powered by Liferay Adaptive Media.

Liferay Portal Features

Experience Management

Display Items Related to One Specific Item with Related Item Collections

Related item collections allow page creators to display items related to a blog or a category, choosing among several possible relation types. LPS-124037

Pagination, search and filtering for Collection Displays

Now it is possible to break lists up into smaller groups, so both performance and user experience are improved. We are providing end users with the ability to perform certain operations over the collections such as filtering, search and seeing applied filters too. Privileged users (page creators, site admins, etc) can also pre-filter collection providers so that they can re-use the same collection multiple times by letting users to configure them with some predefined parameters. LPS-131189, LPS-105045, LPS-126003

Show/Hide Fragments Based on Viewport

Page creators can show/hide a fragment or group of fragments based on the viewport so that they can create responsive designs without having to modify the theme. LPS-136281

Create Templates for All Type of Information Items

Now more types of information items (blog entries, documents, assets) can use templates so they are displayed similarly. LPS-126008​​​​​​​

Expiration dates for documents 

Now content managers can set expiration dates as well as review dates to documents in order to control until which date the document is valid or the terms of the license for use of images, so they are unpublished and not available to use once the dates are reached. They will get notifications once the review or the expiration dates are reached so they can update the document, renew the license and so on. LPS-112376

Map multiple fields for SEO and OpenGraph tags in Display pages

Now marketers can combine multiple fields and free text to define the rule to fill the SEO and OpenGraph tags for Display Page Templates, allowing them to control how they are filled for multiple pages from a centralized place. LPS-98735

Translation features for inline content of content pages

In 7.3 we introduced several features to accelerate the process for translating web content articles. Now content managers can use them to translate the inline content of content pages. 

  • Export and import the inline content in xliff format to work with translation agencies. 

  • Side by side UI to help translators perform their task faster and in a more efficient way.

  • Auto-translation integration to accelerate the process and get to market faster.

Documents Now Visible in the Content Dashboard

Documents are now visible and searchable from the Content Dashboard, allowing users to search for any kind of files, video shortcuts or images across sites and Asset Libraries. As we’ve included documents in the Content Dashboard, new types of filters, as the asset type or the MIME Type are needed. Both are accessible from the Filter and Order dropdown in the Content Dashboard. LPS-119965, LPS-130698, LPS-133650​​​​​​​  

Digital Operations

Objects

The Objects Module allows users to model data through the interface with no need of custom code, create customized entities that are seamless with native ones. Users can scope the data to be only accessed by the context that it should, defining where it will be deployed and displayed. Model the data by adding fields and defining its layouts to be used to add data. The following topics depict the features and possibilities of using Objects:

  • Objects relationships: Users are now able to relate entities by creating object relationships. Adapting to the context of the use case, define one-to-many or many-to-many relationships between objects entries and define how they are displayed in the custom layouts.

  • Layouts: Users are able to create customized layouts for their applications, in that way, they can provide for their customers a unique experience of adding data.

  • Actions: Create actions (currently only webhooks) that will be triggered by specific events as, when adding, updating and deleting entries. In that way, automate your process and avoid human mistakes.

  • Picklists: Define a predefined list of options to use while modeling data in Liferay Objects. Users can manage lists and use it across multiple different objects, in that way, they can guarantee consistency and avoid mistakes while modeling their data.

  • Gather data inside of the user context: In order to provide users the ability to gather more accurate data from their customers and employees, Liferay Objects is also integrated with Liferay Forms, using the established already know capabilities of Forms to gather more accurate data and adding to pages through Forms Widgets.

  • Display data to create experiences with Liferay Objects: By publishing an Object, they are also integrated with the Iinfo Framework, allowing users to create experiences with its application data. Besides being able to display specific entries in pages, a Collection Provider will also be automatically created for each object, allowing users to create full flexible experiences using Fragments.

  • Objects APIs: By creating a custom object, DXP automatically generates a new Rest API with a set of end points. This provides a full headless experience with no code necessary to create the APIs.

  • Objects integration with DXP native frameworks: In order to provide the seamless experience with native capabilities from the portal, Liferay Objects is fully integrated with DXP’s frameworks, being integrated with Workflow, headless, permissions, Blueprints, Search, Forms, Fragments, Search, Assets, and Info Framework.

Forms

  • New field types:

    • Boolean: users can add boolean fields in their forms in order to limit gathering true or false answers from users (story: LPS-136362).

  • Search Location: users can use integration with Google maps in order to gather accurate locations and autofill data based on their search (story: LPS-129390).


​​​​​​​

  • Validations for date field types

    • Users now can validate date fields using the response date as a parameter to validate future, past or ranged dates (stories: LPS-129396, LPS-134212, LPS-133332).


 

  • Masks for decimal numeric fields

    • Users now can apply masks also for decimal numeric fields, this allows customers to cover use cases as currency, percentage, weight and height For more information see story: LPS-130164

Workflow

Account Role Assignments

  • A new Assignment Type has been added that allows Operations Managers to assign Task nodes to specific Account Roles. Operations Managers can do this by either Specifying the role-id or Specifying the role-type and name (Story: LPS-135888).

API that waits for the end of a workflow's parallel processing

  • A new API has been created that enables Liferay Developers to wait for the end of a workflow's parallel processing and then execute code that depends on the end of this processing (Story: LPS-129960).

User and System Management

Account Management Widget

With the advent of DXP Accounts, an all new widget now exists in Accounts > Account Management. Account Administrators can now manage the Accounts they are a member of, as well as manage their respective Details, Addresses, Members, Organizations, and Roles. LPS-97350

Headless APIs

New endpoints for managing Users, User Groups, Organizations, Roles, Accounts, Role assignment to Users, and permissions assignment to Roles. Developers can now leverage more robust out-of-the-box user and system management functionality to use with their custom implementations. LPS-96844

Platform Improvements

Application Security

  • OpenID Connect (OIDC)
    • ​​​​​​​Access token refresh:
      • ​​​​​​​When refresh token expiration time is a multiple of access token expiration time, the refresh execution will fail.
      • If an OIDC provider server sets up in such a way that only a request to refresh access token is allowed (during a short period), then Liferay as an OIDC client server will fail to refresh because there will be multiple requests from Liferay to the provider server to request one refresh.
      • With this new feature End User will not be logged out once the access token expires.
        ​​​​​​​
    • OpenID Connect authentication session managed separately from OIDC sessions:

      • This feature exists because without separating authentication sessions from OIDC session, there is unnecessary more memory usage and difficult to add features relating to OIDC session.

      • This feature adds a new internal session structure for OIDC authentication, so that attributes only needed for authentication are not stored in an OIDC login status session whose lifetime is much longer.
        ​​​​​​​

  • Deprecated / Archived features:
    • ​​​​​​​Google SSO archiving:
      • Deprecated and moved to a marketplace plugin in version 7.2 and no longer supported in 7.3.

      • Replacement: We recommend using other, supported solutions like OpenID Connect or Token Based SSO.
         

  • Digest Authentication deprecation:
    • ​​​​​​​Weak password hashes need to be stored to support digest authentication, which is a vulnerability and its support is going to be removed from the portal in favor of stronger authentication means.
    • Replacement: Recommendations will come for the following versions.
       

  • NTLM archiving:
    • ​​​​​​​Deprecated and moved to a marketplace plugin in version 7.2 and no longer supported in 7.3
    • No replacement
       

  • CAS (Central Authentication Service) archiving:
    • ​​​​​​​It's not based on open standards like for example OpenID Connect that we also support
    • Replacement: We recommend using other, supported solutions like OpenID Connect or Token Based SSO

Staging

  • Performance improvement on LAR import’s side:
    • ​​​​​​​Export/import and staging processes with lots of contents are heavy operations which can be time consuming. The goal of this development was to improve the performance at the import side. There was a specific problem with how elements were retrieved from the portlet-data.xml. The same element was looked up more than 10 times, which slowed down the process significantly, especially when the portlet-data.xml contained hundreds of elements.
      ​​​​​​​
    • The solution was to implement a cache for portlet data elements. This way elements are only retrieved once from the xml and saved to the cache to be reused later. The cache is enabled before importing portlet data starts and cleared when it is finished.

Frontend infrastructure

  • Remote applications have been enhanced to support custom elements. Now, it’s possible to create a remote application which will be rendered as a regular widget within the liferay page, rather than using a separate iframe. This type of applications rely on the definition of an HTML custom element, thus having access to all JS APIs and page styles. Both types of applications can be managed from the remote applications page. This SaaS-friendly mechanism allows to decouple the frontend development from liferay, as well as expose/integrate information/apps from other systems. LPS-139377

  • Admin Controls Isolated from Style Customizations: this new feature isolates administration only interfaces from style changes produced by themes. As a result, themes should be easier to develop as theme developers no longer need to think about how styles will impact on the administration controls. LPS-122068

  • Theme Architecture Enhancements to Expand Loading Performance: styles have been optimized to reduce the served CSS footprint. Some deprecated items have been removed, some others are now part of the styled theme, and styles used only by one module have been relocated to that module. LPS-127085

  • Improved WYSIWYG Editor: A new balloon editor has been created by leveraging native CKEditor features. This is a lighter alternative to its predecessor, Alloy Editor, reducing the complexity and maintenance. It also provides some UX improvements, preserving the user-facing features. LPS-121553

  • Translation Manager Component to Define the Available Translations: We’ve enhanced the language selector UI component so that it does not only allow to select the current language for edition, but also manage the translations of any translatable object. As a result, it will be possible to add/remove translations while editing the object. This component can be now used from applications to provide translation management features. LPS-133329

  • BS3-BS4 compatibility layer upgrade path: Theme developers who need the BS3-BS4 compat layer for themes in 7.4 can now add it to them via theme upgrade process. It’s recommended to stop using this compat layer as soon as the theme is successfully upgraded. LPS-125918 

Support external reference code in headless delivery API

For integration scenarios, it is common that users want to keep reference between systems in order to identify the elements. Now it is possible to set a unique reference that can come from another system and use it to access the content, documents, blogs, etc. with it. As it is set by the user, you can migrate content from one environment to another or from one site to another and keep the same reference so applications consuming the APIs do not need to be adapted. LPS-118011

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

Application Server

  • Tomcat 9.0

  • Wildfly 17.0

Database

  • HSQLDB 2 (only for demonstration, development, and testing)

  • MySQL 5.7, 8.0

  • MariaDB 10.2, 10.4

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

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

14
Blogs

I hava got the error message:

2021-11-07 08:42:03.958 ERROR [fileinstall-directory-watcher][LicenseManager:-1] Corrupt license file. License was not registered: {owner=docker@liferay.com, productVersion=7.0, maxHttpSessions=5, description=Trial Activation Key, licenseEntryName=Digital Enterprise Development, productEntryName=DXP Development, type=developer, version=5, accountEntryName=DXP Cloud, startDate=1634938860000, expirationDate=1642714860000}

hi, do we need new studio version for this?

hi, you shouldn't need a new studio version for the release.  Howver you might need to update the workspace version to the latest version which is 3.4.16 at this time: https://github.com/liferay/liferay-portal/tree/master/modules/sdk/gradle-plugins-workspace

hi James

in default of studio, settings.gradle as

buildscript {     dependencies {         classpath group: "biz.aQute.bnd", name: "biz.aQute.bnd", version: "5.2.0"         classpath(group: "com.liferay", name: "com.liferay.gradle.plugins.workspace", version: "3.4.12") {             exclude group: "biz.aQute.bnd", module: "biz.aQute.bnd"         }         classpath group: "net.saliman", name: "gradle-properties-plugin", version: "1.4.6"     }

 

and for new setting as follows

dependencies { classpath group: "com.liferay", name: "com.liferay.gradle.plugins.workspace", version: "3.4.16" }

should i keeps 

 classpath group: "biz.aQute.bnd"

and 

 classpath group: "net.saliman"

because i do not know what they use for.

 

Hey guys, the version number string of the docker container has now a length of 4 (7.4.3.4). Is the last number the version number of Liferay Commerce? What's your plan with liferay commerce updates? Will be there more digits in the version number string? Like: Liferay Portal 7.4.3. and Liferay Commerce 4.x.x with a version number of 7.4.3.4.x.x-gax?

Is there a plan to separate the Liferay Portal and Liferay commerce? In my book it's not a good idea to release ONE package which contains Liferay portal AND Liferay commerce.

Hi, I didn't get a chance to provide any information  about the new version scheme yet.  What I can say at the moment is it is not related to Liferay Commerce in any way but has more to deal with 7.4 being a long living release.  I will try to provide more details as soon as I can.

Thanks for a nice update. However, I have a question about Single Sign-On. You mention this regarding SSO: "Replacement: We recommend using other, supported solutions like SAML, OpenID Connect or Token Based SSO". Is SAML now a part of the Community Edition as well?

Hi, including SAML in the post was an oversite.  SAML is still only a DXP-only feature.  I have corrected the post to remove the mentions of SAML.  Sorry for the inconvenience.