Capability

Development and Tooling

Liferay offers a comprehensive toolkit to extend or customize your digital experience. Build applications quickly with low-code/no-code features like Objects, or leverage developer tools like Liferay Workspace and Blade CLI for further customizations.

For users on PaaS or running Self-Hosted, Liferay also offers tools deploying customizations.

Category
Category
Fragment Specific Tags and Attributes Reference for Liferay 7.3 and Earlier Versions
Fragment Specific Tags and Attributes Reference for Liferay 7.3 and Earlier Versions Along with standard HTML, CSS, and JavaScript, you can use Liferay-specific tags and attributes to define...
Command Line Gogo Shell
Command Line Gogo Shell If you're in a development environment, you can interact with the module framework locally from the command line. Gogo shell should only be run from the command line in...
Using an OSGi Service
Using an OSGi Service Liferay APIs are readily available as OSGi services. You can access a service by creating a field of that service type and annotating the field with @Reference, like this: ...
Using the Gogo Shell
Using the Gogo Shell The Gogo shell provides a way to interact with the module framework. Among other things, you can Dynamically install/uninstall bundles (modules) Examine package...
Gogo Shell Commands
Gogo Shell Commands The Gogo shell executes Felix Gogo basic commands and Liferay commands. The Gogo shell is accessible in the Control Panel (recommended) and from the command line. Here are some...
Logs
Logs The OSGi Log Service Extender enables bundles to provide OSGi logging configuration using embedded properties files META-INF/osgi-logging.properties or META-INF/osgi-logging-ext.properties....
Using Upgrade Processes in Earlier Versions
Using Upgrade Processes in Earlier Versions Liferay DXP 7.4 U10/Portal 7.4 GA14 and Below Follow these steps to create an upgrade process for your module: Open your module's bnd.bnd file, and...
User Account API Basics
User Account API Basics You can add and manage users from the Control Panel, but you can also use Liferay's REST APIs. You can call these services to add, edit, delete users. Start with adding a...
Advanced Queries
Advanced Queries Service Builder doesn't limit you to elements in service.xml. If simple finders aren't sufficient for getting data out of your application, there are three other ways to make the...
Using Asynchronous Messaging
Using Asynchronous Messaging Message Bus's asynchronous option provides fire and forget behavior; send a message and continue processing without waiting for a response. An asynchronous message is...
Working with Client Extensions
Working with Client Extensions Liferay Self-Hosted Liferay SaaS Liferay PaaS Liferay 7.4 Using client extensions, you can extend Liferay without deploying OSGi modules. Just like traditional...
Aggregating Resource Bundles
Aggregating Resource Bundles When working with a module that shares localized messages, the bnd header must specify the resource bundles you want to associate with the module. Liferay provides a...
Customizing Liferay's Look and Feel
Customizing Liferay's Look and Feel One of the easiest ways to get started developing on Liferay's platform is to modify its look and feel. You can change everything from its favicon to its entire...
Fundamentals
Fundamentals Liferay development projects consist primarily of simple .jar files. These contain a few extra configuration files that make them OSGi modules, but they're easily understandable by...
React Component Utilities Reference
React Component Utilities Reference Several useful tools are available to help you build high-performance components and applications in Liferay DXP using React: frontend-js-react-web module ...
Listening for Registration Events
Listening for Registration Events Liferay DXP 2023.Q3/Portal GA92 and Below The messaging API supports listening for destination and message listener registration events. Here are some reasons to...
Using Default Synchronous Messaging in Previous Versions
Using Default Synchronous Messaging in Previous Versions Synchronous messaging was removed and is no longer supported for Liferay DXP 7.4 U49/Liferay Portal 7.4 GA49 and above. In default...
Using Direct Synchronous Messaging in Previous Versions
Using Direct Synchronous Messaging in Previous Versions Synchronous messaging was removed and is no longer supported for Liferay DXP 7.4 U49/Liferay Portal 7.4 GA49 and above. Direct synchronous...
Using Objects with SugarCRM
Using Objects with SugarCRM [Release Feature](../../../../security-and-administration/administration/configuring-liferay/feature-flags.md#release-feature-flags) You can create objects that map to...
Using a Frontend Data Set Filter Client Extension
Using a Frontend Data Set Filter Client Extension Liferay DXP 2024.Q2+/Portal GA120+ Frontend data set filter client extensions define JavaScript functions for creating customizable filter...
Customizing Localization
Customizing Localization Liferay ships with 55 translations, making it ideal for deployments all over the world. Sometimes, however, you must modify a translation or provide a new one. Here you can...
Adding a Language
Adding a Language Liferay ships with over 50 languages out-of-the-box. Translation is complete for many of these languages, and some are still in the translation process. Each language has its own...
Traditional Java-Based Development
Traditional Java-Based Development Liferay is a complex open-source platform built on several key technologies and architectural principles. Liferay is written mostly in Java and built on the OSGi...
Extending Liferay
Extending Liferay Liferay DXP/Portal is highly customizable. Its modular architecture contains components you can extend and override dynamically using APIs.
Client Extension Reference
Client Extension Reference Liferay Self-Hosted Liferay SaaS Liferay PaaS Liferay 7.4 You can find code examples for all types of client extensions in liferay-portal Frontend Client Extensions ...
Generating Translations Automatically
Generating Translations Automatically Liferay DXP supports 50 languages out-of-the-box. Each locale has its own language properties file containing keys for its language. When you create an...
Using a Frontend Data Set Cell Renderer Client Extension
Using a Frontend Data Set Cell Renderer Client Extension Liferay 7.4+ You can use Frontend Data Set (FDS) cell renderer client extensions to customize the display for your data set. Use this type...
Enabling Glowroot on PaaS
Enabling Glowroot on PaaS Liferay DXP 2023.Q4+/Portal GA100+ Glowroot is included with Liferay in the /opt/liferay/glowroot folder. If you're running Liferay in a clustered environment, enable...
JavaScript Import Map Entry YAML Configuration Reference
JavaScript Import Map Entry YAML Configuration Reference Usage Details This client-extension.yaml file defines a JavaScript import map entry client extension: assemble: - from: build/static ...
Bundling Resources in a JavaScript Import Map Entry Client Extension
Bundling Resources in a JavaScript Import Map Entry Client Extension Liferay DXP 2023.Q1+/Portal GA92+ JavaScript import map entry client extensions make JavaScript code or resources available to...
Frontend Data Set Cell Renderer YAML Reference
Frontend Data Set Cell Renderer YAML Reference You can define a Frontend Data Set cell renderer client extension with a client-extension.yaml file. Usage Details The client-extension.yaml file...
Accounts API Basics
Accounts API Basics Liferay DXP/Portal 7.4+ You can manage accounts from the Applications menu or use Liferay's REST APIs. Call these services to create and manage accounts. Adding an Account ...
Language Client Extensions
Language Client Extensions Liferay DXP 2025.Q1+/Portal GA132+ A language client extension adds new language keys or overrides existing keys and their translations. For example, you can translate...
Account Groups API Basics
Account Groups API Basics Liferay DXP/Portal 7.4+ You can manage account groups from the Applications menu or use Liferay's REST APIs. Call these services to create and manage account groups. ...
Workflow Definition Link API Basics
Workflow Definition Link API Basics Liferay DXP 2025.Q1+/Portal GA132+ You can manage workflow definition links from the Liferay UI or using Liferay's REST APIs. In Liferay, the Control Panel →...
Using a CAPTCHA Client Extension
Using a CAPTCHA Client Extension Liferay DXP 2025.Q3+ Currently, this feature is behind a release feature flag (LPD-36464). CAPTCHA challenges are used on websites to verify a human user is...
Using Object Inheritance
Using Object Inheritance [Release Feature (LPD-34594)](../../../../security-and-administration/administration/configuring-liferay/feature-flags.md#release-feature-flags) Liferay DXP...
CAPTCHA YAML Configuration Reference
CAPTCHA YAML Configuration Reference You can define a CAPTCHA client extension with a client-extension.yaml file. Usage Details This client-extnesion.yaml file defines a CAPTCHA client extension: ...
Connecting Service Builder to an External Database
Connecting Service Builder to an External Database Service builder creates the necessary tables for the service in the lportal database with all other data used by Liferay. If you want to store the...
Configuring service.properties
Configuring service.properties Service Builder generates a service.properties file in your *-service module's src/main/resources folder. Liferay uses this file's properties to alter your service's...