Liferay Portal 7.4 CE GA1 Release

We are pleased to announce the release of Liferay Portal 7.4 CE GA1!

 

Announcing Liferay Portal 7.4 CE GA1

Liferay Portal 7.4 CE GA1 marks the first major release in the 7.4 release cycle.  Although released later than  hoped, Liferay Portal 7.4 CE GA1 continues following the rolling release cycle announced last year for 7.3.  Liferay Portal 7.4 CE GA1 contains many exciting new features across almost every aspect of the platform with many new features being based on feedback received from our community. 

Please see below for instructions on getting started as well as a comprehensive list of all of the great new features found in the release.

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 CE GA1:

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

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 CE GA1 and Liferay Commerce 4.0  release on the download page.  If you need additional files (for example, the source code, or dependency libraries), visit the release page.

Dependency Management

If you are developing on top of Liferay Platform using Liferay Workspace, you will only need to define a single dependency artifact by adding the following line to each modules build.gradle file:

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

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-ga1

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

Liferay Portal Features

Experience Management

Experiences Flexibility

Personalization is one of the most powerful means marketers have when it comes to engaging their audience. Adapting content to the target segment of content has become a standard, but the effort involved is not always profitable.

To facilitate and speed up the reuse of experiences, now you can duplicate any experience on a page, and thus take advantage of any given content or fragment combination that you had already worked on.

Besides this, now you can create experiences without defining the audience in the first place, or to target “Anyone”. Just create the new experience and keep the proposed value for “Audience” -- “Anyone”. It will be created below the default one and so it won’t be active until the moment that you move it up in the list. This new feature allows several teams to work on different experiences for the same page without having them “activated” until they’re ready for publication.

More accurate content audits

As content audits involve analyzing contents by crossing two vocabularies, there’s an opportunity to also spot all that content that hasn’t been correctly categorized. That’s why we’ve got content that is categorized only with one audited vocabulary represented in the Content Audit Tool too. You’ll easily locate it through the “No vocabulary Specified” legends, and see the number of pieces of content with the grey bars.

We’ve also made it easier to select the vocabularies to audit and to flip axes: you’ll find the buttons right in the  Content Audit Tool area.

And last but not least, now you can filter the list of content by clicking on a particular bar in the graph, so the matching filters will be applied.

We know it will never get funny but… have a happier content audit!

Integration with external video services
 

LPS-107020

Video is becoming more and more important at the time of creating great experiences and now Liferay makes it easier to use all your corporate videos to create content. This feature allows you to create shortcuts to videos stored in the most popular video services (Youtube, Vimeo, Facebook and Twitch) that will become part of your document library. In combinations with our tagging and categorization capabilities, it will help users search for the videos and reuse them in different pages or content.

Additionally, a Java API is provided to allow developers to include other video providers.

   
Manage document title and filename independently for exposing more human readable names 
 

LPS-116505

It is very common to store documents in the document library that are meant to be accessible to external users and for them, the filename might not be enough to understand clearly what is the purpose of the document. In order to help you associate documents with a more meaningful name, we have decoupled the filename from the title and now Liferay manages both fields independently.

Native support for Adaptive Media in Content Pages and DPTs
 

LPS-112796

Automatic selection of image resolution and size for any image added to a Content Page, and Display Pages based on the Viewport Width.

Adaptive media currently allows to define image resolutions to fit automatically a given device screen size (viewport). Hence if a user is visualizing a web page from a Mobile or a Desktop the image size and resolution will be adapted automatically.

With Adaptive Media for content pages, content creators will now be able to benefit from its power without any extra effort, it will be supported natively in Pages. Once an image is added to a content page, the application works behind the scenes to deliver an adapted image appropriate to the device in use. The image resolution and image size are provided as well to provide a way to control them. If the content creator wants to take the lead and take control over the chosen resolution he/she can also do it and pick manually the adequate resolution.

Note that Adaptive Media is supported for all types of images in particular background images as shown below.


Forms-builder Experience for Web Content Structures and Document Types

Improved experience for editing content structures and creating reusable FieldSets

Define a FieldSet once and reuse it in other structures
A FieldSet is a group of fields that can be reused several times inside and outside the web content structure used for creating it. Once created it can still be edited and modified. A typical example would be a fieldset made of a “Title”, a “Picture” and “Description”. Let's say now you would like to reuse this group in another web content structure then you could just reuse it as it will be visible straight from the web content structure editor.

Propagate FieldSet modifications to all structures
Any change done to a FieldSet can be propagated seamlessly. You now want to add a “Summary” field to the fieldset made of a “Title”, a “Picture” and “Description” and used in several web content structures. The user only needs to add it to the fieldset and it can be propagated to all the Web Content Structures using it.

Web Content Structure editor usability
The previous Web Content Structure Editor had the inconvenience of making it difficult for users to drag and drop fields for building the structure, in particular when the structure was really long. We have enhanced the usability of the web content structure editor by leveraging the new design from the form builder. The new web content structure editor allows users to drag and drop structure fields and fieldsets, and is also more generally intuitive to use.

Localizable editables and fragments configurations

Localize images’ description and editable links for a full multi-language experience 

LPS-114124

With this feature we have added support to have “Images” and “External Links” fully localizable so that users can have different links and different image descriptions for each language.

Previous to having that feature implemented, adding a fragment to a page in the default language and then creating an external link, or a link to a downloadable document for the other languages, the links were getting updated for all the languages. Sometimes this is useful (for example for untranslated links), but oftentimes it is not as we may need different links based on the locale. It was also necessary to allow the same for image descriptions.

Define specific fragment configurations as suitable for localization

LPS-124167

With this feature Marketers can configure a fragment and keep the configuration for a given locale.

Currently if you add a fragment to a page in the default language and then change the configuration of that fragment in a different language, it updates the corresponding fragment configs for all languages. Sometimes this is expected, but oftentimes it is not as we may need different config values based on the locale.

Let say you have a heading H1 that you would like to use for English and you would like to use H2 for Spanish, then a developer could just make the config field value configurable by locale by setting the field “localizable”: true, and content editors will be able to set the appropriate heading configuration for each locale. Note that this is just an example of usage, any type of configuration could become localizable in particular style configurations.

 Other Enhancements

Digital Operations

See in which language each Forms response was submitted
 

LPS-122472

Previously, when creating localizable Forms with multiple different languages, it was not possible to identify through the UI the language applied by users during the submission of each Forms response. We have fixed this on 7.4 and now it's possible to see in which language each response was submitted, allowing Forms admins to easily understand what languages are being used the most by submitters, what languages are not being used by the Forms target audience and in which language each submission was probably written in. These information are available through the "View Entries" page of each Form.

File upload for guests in Forms
 

LPS-122760

As much requested, we improved the Upload Field Type to allow guest users to submit files in Forms. To set an Upload Field to allow guest submissions, the user only needs to select the option to ''Allow Guest Users to Send Files''.

The configuration that defines the behavior of the upload fields for guest users can be set in the Global Menu > Control Panel > System Settings > Content and Data > Forms, there the user will find the Forms settings in the site scope, where all configurable options will be, as you can see in:

All the settings will start with the default values as you can see above.

Customize the label of Forms submit button

LPS-116866

If you don't feel comfortable with the out-of-the-box labels of Forms submit button, now it's possible to customize it through the interface and define the best label to adapt to each form context. This option is available in the Personalization tab of the Form Settings and you can define a label for each language supported by the Form.

Platform Improvements

Headless Delivery APIs

Exposing site pages and experiences APIs 

LPS-98650

We continue to enhance our headless APIs and the latest addition to the headless delivery API is allowing developers to access the information of the pages published. Access either the page definition of the fragments included in a page or the HTML of the content of the page so you can embed it easily in your application. Find all the information about the endpoints with the API explorer.

Access the available languages of sites and asset libraries

LPS-124381

We have included an API to access the available languages configured at site or asset library level, so developers can request this information to build language selectors for their application, for example or to identify to which languages content can be created or translated.

Headless content management APIs

Access the different versions of a structured content

LPS-125608

For 7.4, we are introducing a new set of APIs to support content management use cases that will allow developers to control the whole publication process, content versioning, etc. This is the first step in that path, so now it is possible to check the different versions of a structured content, retrieve contents that are in draft or pending status, and so on.

Staging support for Asset Libraries
 

LPS-121502 and LPS-121328

Asset libraries were introduced in 7.3 to help users organize in a better way the content and assets meant to be reused across sites. Now it is possible to control when the content is available and connect your asset library with sites with local or remote staging enabled and keep the content synced.

This feature has been backported to 7.3 GA7 as well.

Site Templates enhancements

The main focus is on performance improvements:

  1. Partial site template propagation filtered by last propagation date

  2. Propagating site templates to multiple sites in parallel

  3. Controlling when the changes from a site template are propagate through the kebab menu and at the site template configuration

  4. Controlling when the changes from a site template are propagated by one click

  5. Showing an alert about the possible consequences at switching the propagation off

Staging enhancements

The main focus is on performance improvements:

  1. Publish one single page without its parents

  2. The Asset Publisher doesn’t publish the configured content by default for performance reasons

However, there is one modification that is about getting rid of confusions with clearing distinction among Staging and Publications UI labels and phrases.

OAuth2
 

LPS-126596

Trusted applications in OAuth2: there is no manual authentication grant that the user must take as a step.

This feature is added to be able to mark as trusted OAuth2 applications to avoid the manual authorization process during the process of obtaining a token.

It is useful for different types of customers, who want to manage in which cases an authorization by the user would not be necessary. Trusted applications feature is useful for pure JS Single Page Applications that execute features from an OAuth2 application.

LPS-126597

Remember my authorization grant for a specific application/client id on a specific device.

This feature is added to be able to remember the manual authorization to an OAuth2 application from a user in a device, it will avoid the manual authorization the following times trying to request a new token from that same device.

It is useful for different types of customers, who want to manage in which cases an authorization by the user in a device would be necessary only once during the time when their session in Portal is active. Remember my authorization grant feature is useful for pure JS Single Page Applications that execute features from an OAuth2 application.

LPS-129398

Remember my authorization grant for multiple application/client id on a specific device. This is an improvement for the previous single application/client id solution.

LPS-129395

In a new column in the registered application list administrators can see if the specific app is marked as trusted or allowed to have the remember my authorization for them immediately. That helps administrators to realize them without going to their detailed page and so make it easier to handle them.

LPS-129397

Function for being able to purge all the current authorizations for a specific app from the list of the registered apps.

This feature is a usability enhancement to make it possible to revoke all authorizations with a single click at the OAuth2 application list through an entry in the list items’ kebab menu also.

It is useful for OAuth2 administrators who can revoke all access to an application in a very quick way.

Remove IE11 support
 

LPS-121721

Over the years, support for the IE11 browser has led to many workarounds, polyfills and even specific settings to build Javascript in order to overcome IE11 limitations. From 7.4 onwards, all these bits have been removed from our codebase, leading to a cleaner, more modern compiler output. IE11 has been removed from our 7.4 compatibility matrix, nevertheless, it still remains in the matrix for 7.3 and below.

Remove Flash support 
 

LPS-121730

Adobe stopped distributing and updating Flash Player after December 31, 2020 (“EOL Date”). Additionally, different browsers have already issued end of support notices or already removed support. Therefore, in Liferay 7.4, we removed all traces of Flash from our codebase. There is no feature which depends on Flash, no Flash applications (.swf) are distributed with DXP, and the mechanisms to include and serve Flash content have been removed.

Remove Soy support and update clay tags
 

LPS-122954 (and LPS-121933, LPS-121932, LPS-112468)

Soy templates support has been removed. This includes the Soy template engine and the SoyPortlet. Please note that using Soy client-side components is still possible because metal and metal-soy are still available. This means that a metal+soy component can be built and will run in the client just like before, however, metal is also on the way for deprecation.

As a consequence, all soy-supporting tags have been upgraded to work without the Soy Engine for an easier upgrade path.

Remove BS3-BS4 compat layer
 

LPS-123359

To facilitate theme upgrade from Bootstrap 3 to 4, we added a compatibility layer in the form of some CSS files in the styled, classic and admin themes, which allowed us to use Bootstrap 3 styles. This layer consumed unnecessary resources and could conflict with other styles. As a result of this removal, admin and classic themes become simpler and lighter, and all BS3 styles in the portal have been updated to use BS4.

Simplify JS Minification
 

LPS-122883

For many years, DXP has had a complex minification scheme that involves minifying resources on the fly in the server. This has caused plenty of performance and runtime issues over time and has even stalled progress because the minifiers are outdated and don't support new language features. Now, JS minification is done at build time according to the NODE_ENV variable. As a result, If it is set to production, the build process will minify all js files after building them. Otherwise it will not, leaving modules unminified. Run-time minification logic has been turned off by default, and marked as deprecated.

Consolidate SCSS compilation
 

LPS-122900

SASS file compilation has been added to the build process for npm-scripts, meaning that all SASS processing has been consolidated in a single, JS-based tooling, which is now used by the portal build process. In addition, the old node-sass scss processor, recently deprecated, has been replaced with the more modern dart-sass.

Data Integration

Data Integration Modules

Beginning with Liferay Portal 7.4 CE GA1 the data integration module is now available in Portal for everyone to use. Schedule integration jobs, integrate with connectors like Talend and Mulesoft, and schedule regular data syncs.

Use Dispatch Portlet to Have Insight Into All Scheduled Tasks

Build and package data and use any user-defined process such as Talend or Mulesoft to import and export data packages. Configure triggers to run jobs and have visibility into when jobs are executing next, run time, and the status of the job. With the Dispatch Portlet, you have visibility into all scheduled jobs and configured triggers.

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 CE GA1 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 CE GA1 and Liferay Commerce 4.0 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

7
Blogs

Very nice!

It is good, that guest file upload support is finally supported. That one was always a major showstopper for me.

I will certainly check out the fragment and the adaptive media options, optimizing images for usage (as a preview image) AND for mobile (these are different usecase) is really tricky. I mean, to do as much as possible automatically, but still provide a convenient and easily understandable way for editors to override it.

I also think the changes to the minifier and sass are really important. I talked with Chema Balsas(who created the relevant tickets) at Devcon a couple of years ago about this stuff. Performance, caching, cdn are major topics for some websites I manage and we had some headaches there. It is nice to see progress.

And thanks for this overview, without such a blog post I would probably only have realized in a couple of months (or never) that some of these changes were made.

Hey guys,Nice.Now the time has come to migrate the custom Themes :-PIf we deploy our custom Theme to Liferay 7.4.0 we get AutoDeployExceptions with the message: 'does not support this version of Liferay'. Is some documentation or migration guides out there?Next question: Which versions of elasticsearch we should use with Liferay 7.4.0?

I haven't tried to create a theme for 7.4 so far, so take my answer with a grain of salt.

The supported version is usually part of the theme. There are two settings, in liferay-look-and-feel.xml and in the liferay-plugin-package.properties file. I am not sure which one is relevant, maybe both, and if it is sufficient to just update them.

No idea if there are guidelines, we usually create a new theme for 7.x and then apply our changes to it. (You can create a bare 7.3 theme and compare them). That way, we don't lose anything. It can be more work than just copying in the first place, but it the outcome is better, at least in my opinion.

Liferay 7.4 uses Elasticsearch 7.9 for demo purposes, but I have already used Liferay 7.3 with Elasticsearch 7.11. So, anything 7.9+ should work.

Hey Christoph,

Thank you. You saved my life. 

The changes in liferay-plugin-package.properties and liferay-look-and-feel.xml have solved the problem.

I will try the current version of elasticsearch (7.12.1), if it fails I will return to 7.9.

Have a nice weekend. 

From an Enterprise Edition  POV ... Is IE11 support  (while still using BS4) being dropped from EE too? The dropping of the compatibility layer I can see that making a 7.3 to 7.4 upgrade painful also. Considering the struggle is real even trying to get a 7.3 upgrade working with the significant changes dropping IE and the Bootstrap Compats, I think that kills 7.4 for Enterprises.

The document title issue, I'm cautiously optimistic and remain on edge. We've got to move beyond 404 errors when users rename document titles and we've really got to end the notion that a document title is a filename.

Your company is still using Internet Explorer? Puh. Luckily, every company I know of has moved on, the latest one last year. Even Microsoft has dropped IE support for several of their services already and I think all of the O365 family will drop support by August this year.

I really can't blame Liferay for that decision. Supporting IE was hard and a pain.

Until they uninstall IE someone will use it yes. Even worse I'd be willing to bet some companies are forcing Edge into some form of compatibility mode so their business critical apps carry on working in the short term.

In terms of upgrading old software that we actually need to see happen ... CKEditor 5. Let's go, get it done. Or switch to TinyMCE.

In terms of the Bootstrap Compatibility layer, I'll get to that once I see a successful upgrade from 7.0 to 7.3. If that stuff starts getting backported to 7.3 there's no hope. Our upgrade from 6.1 to 7.0 they said that will be the last of your pain. This 7.0 to 7.2/3 has been harder than going from 6 to 7.