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
APIs as OSGi Services
APIs as OSGi Services After you've learned what a module is and how to deploy one, you can use modules to define APIs and implement them. Liferay APIs are OSGi services, defined by Java interfaces...
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...
Architecture
Architecture The Liferay DXP/Portal architecture has three parts: Core: Bootstraps DXP and its frameworks. The Core provides a runtime environment for managing services, UI components, and...
Finding Artifacts
Finding Artifacts To use external artifacts in your project, you must configure their dependencies in your build.gradle Gradle script. Before specifying an artifact as a dependency, you must first...
Configuring Dependencies
Configuring Dependencies Liferay provides a container where modules can publish and consume functionality through their Java packages. Modules can leverage packages from other modules or...
Resolving Third Party Library Package Dependencies
Resolving Third Party Library Package Dependencies An application can rely on multiple OSGi modules. Resolving their Java package dependencies can be challenging. In a perfect world, every package...
Deploying WARs (WAB Generator)
Deploying WARs (WAB Generator) You can create applications as Java EE-style Web Application ARchive (WAR) artifacts or as Java ARchive (JAR) OSGi bundle artifacts. Bean Portlets, PortletMVC4Spring...
Specifying Dependencies
Specifying Dependencies You must satisfy all dependencies to compile and deploy a module successfully. After you find the dependency artifacts, add them as dependencies in your Gradle build file....
Semantic Versioning
Semantic Versioning Semantic Versioning is a three tiered versioning system for incrementing version numbers based on the degree of API change made in a releasable software component. It's a...
Importing Packages
Importing Packages You often find yourself in a position of needing functionality provided by another module. To access this functionality, you must import packages from other modules into your...
JARs Excluded from WABs
JARs Excluded from WABs [Liferay-generated web application bundles (WABs) are stripped of third party JARs that contain packages that Liferay exports already. Deploying the same third party...
Module Projects
Module Projects Liferay applications and customizations are OSGi modules: .jar files containing Java code and some extra configuration for publishing and consuming APIs. A module project comprises...
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 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...
Creating Video Shortcut Providers
Creating Video Shortcut Providers Liferay DXP 7.4+ By default, Liferay's external video shortcuts support YouTube, Vimeo, Facebook, and Twitch. However, you can extend this feature to support...
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 →...
Account Users and Roles APIs
Account Users and Roles APIs You can manage Account Users and Account Roles from the Applications menu, but you can also use Liferay's REST APIs. Call these services to create and manage account...
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. ...
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 ...
Adding the UAD Framework
Adding the UAD Framework You can manage and delete user data with Liferay's User Associated Data (UAD) management tool. The tool is available out-of-the-box for many of Liferay's applications (e.g....
Organizations API Basics
Organizations API Basics You can Create and Manage Organizations from the Application menu, but you can also use Liferay's REST APIs. Call these services to manage organizations. Adding an...
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...
Countries API Basics
Countries API Basics Liferay 7.4 U24+ and GA24+ Use Liferay's Rest APIs to create and manage countries. Adding a Country Then, follow these steps: Download and unzip Countries API Basics. ...
Roles API Basics
Roles API Basics You can create and manage roles from the Application menu, but you can also use Liferay's REST APIs. Call these services to manage roles. Associate a User to a Regular Role Then,...
Postal Address API Basics
Postal Address API Basics Liferay DXP/Portal 7.4+ Use Liferay's REST APIs to manage postal addresses. Add Postal Address to Account Then, follow these steps: Download and unzip Postal Address...
Regions API Basics
Regions API Basics Liferay 7.4 U24+ and GA24+ Use Liferay's REST APIs to create and manage regions. Adding a Region Then, follow these steps: Download and unzip Regions API Basics. curl...
User Groups API Basics
User Groups API Basics You can Create and Manage User Groups from the Application menu, but you can also use Liferay's REST APIs. Call these services to manage user groups. Adding a User Group ...
Creating the Role Change Request App
Creating the Role Change Request App Subscribers The Role Change Request App starts with the employee submitting a request form. Processing then proceeds to the Current Manager, then to the...
App Builder
App Builder Liferay CE/DXP 7.3 (deprecated and removed in 7.4) App Builder is a low-code application development solution for Liferay DXP. Build a data model, define the application's forms (for...
Creating a Standard Application
Creating a Standard Application To create applications based on a custom object takes four steps: create the object, create at least one form view, create at least one table view, and deploy the...
Creating a Workflow Powered Application
Creating a Workflow Powered Application Subscribers Workflow Powered Applications require data from multiple stakeholders. These process-driven applications can go through multiple stages before...
Creating the Role Change Request Object
Creating the Role Change Request Object Subscribers Consider a Human Resources application that collects employee requests to change Roles within the software engineering department: the Role...
Data Sets
Data Sets Liferay DXP 2024.Q1+/Portal GA112+ Currently, this feature is behind a release feature flag (LPS-164563). Data sets are like virtual containers that help organize and manage related...
Creating Data Sets
Creating Data Sets Liferay DXP 2024.Q1+/Portal GA112+ Currently, this feature is behind a release feature flag (LPS-164563). You can create data sets from different resources available through...
Using Data Set Actions
Using Data Set Actions Liferay DXP 2024.Q1/Portal GA112 Currently, this feature is behind a release feature flag (LPS-164563). Here are some examples for how to use data set actions and perform...
Data Set Actions
Data Set Actions Liferay DXP 2024.Q1+/Portal GA112+ Currently, this feature is behind a release feature flag (LPS-164563). While managing data set, define actions to be used in the data set...
Portal Developer Properties
Portal Developer Properties There are Portal Properties that facilitate development. Liferay's portal-developer.properties file includes all of them. The portal-developer.properties file is enabled...
7.2 Breaking Changes
7.2 Breaking Changes This document presents a chronological list of changes that break existing functionality, APIs, or contracts with third party Liferay developers or users. We try our best to...
7.4 Breaking Changes
7.4 Breaking Changes Breaking changes break or significantly alter existing functionality or code structure. Here are all of the breaking changes for Liferay 7.4, starting with the latest quarterly...
Contributing to Liferay Development
Contributing to Liferay Development The first thing to do in learning to fix bugs or contributing a feature is to become familiar with how to build the system. The Liferay Portal build system now...
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...
Using a CAPTCHA Client Extension
Using a CAPTCHA Client Extension Liferay DXP 2025.Q3+ CAPTCHA challenges are used on websites to verify a human user is accessing it, and not a bot or malicious code attacking the site. Liferay...
Integrating Microservices
Integrating Microservices Liferay Self-Hosted Liferay SaaS Liferay PaaS Liferay 7.4 You can define microservice client extensions to run your own code in response to events in your Liferay...
Remote Applications with Headless APIs
Remote Applications with Headless APIs Available 7.4+ After creating and publishing objects, headless REST APIs are automatically generated. Here you'll see how to integrate these endpoints to...
Extending Unmodifiable System Objects
Extending Unmodifiable System Objects Liferay 7.4 U86+/GA86+ With Liferay Objects, you can extend supported system services. These services are integrated with the Objects framework as...
Using Object Data with React Charts
Using Object Data with React Charts Here you'll use Objects, Headless APIs, and custom element remote applications to create a dynamic chart for data dashboards. First, you'll set up a new DXP...
Creating Objects
Creating Objects Liferay DXP 2023.Q4+/Portal GA102+ Liferay Objects provides development capabilities in the Liferay UI. Using Objects, you can build fully integrated Liferay applications without...
Understanding Object Integrations
Understanding Object Integrations Published custom objects are integrated with Liferay's core frameworks, so you can leverage Liferay's features to build unified experiences across the platform....
Configuring a Liferay Docker Container
Configuring a Liferay Docker Container Creating and deploying containers is an important part of the modern developer workflow. Liferay Workspace makes it easy to use Docker containers both for...
Localizing Object Definitions and Entries
Localizing Object Definitions and Entries Liferay DXP 2023.Q3+/Portal GA92+ Liferay objects are integrated with the localization framework, so you can add translations for definition labels, and...
Scheduling and Subscription
Scheduling and Subscription [Beta Feature](../../../security-and-administration/administration/configuring-liferay/feature-flags.md#beta-feature-flags) (LPD-17564) Liferay DXP 2025.Q4+/Portal...
Assignee Fields
Assignee Fields Liferay DXP 2025.Q4+/Portal 2026.Q1+ Assignee fields are for selecting existing users or roles in the object entry. Assigned users can edit the entry with no manual permission...
Managing Object Entries with Data Sets
Managing Object Entries with Data Sets Data sets offer a flexible way to display object entries. When your advanced use case outgrows collections, data sets fill the gap. For example, Collections...
Client Extensions UI Reference
Client Extensions UI Reference Liferay's widget client extensions (custom element and iframe) register applications with Liferay, adding them as widgets to site pages. Additionally, you can style...
Fragment Specific Tags and Attributes Reference
Fragment Specific Tags and Attributes Reference Along with standard HTML, CSS, and JavaScript, you can use Liferay-specific tags and attributes to define editable sections, embed widgets, and more....
Micro Frontends
Micro Frontends Micro frontends extend the concept of microservices to the frontend side of development. You can build a fully-featured and powerful browser application that uses a microservice...
Using Routes with Custom Elements
Using Routes with Custom Elements Liferay 7.4+ Custom element client extensions use Liferay's frontend infrastructure to register external applications with the Liferay platform and render them as...
Service Builder
Service Builder An application without reliable business logic or persistence isn't much of an application at all. Unfortunately, writing your own persistence code often takes a great deal of time....
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...
Attachment Fields
Attachment Fields Attachment fields are for uploading files to your instance's Document Library. When uploaded, the file is linked to the entry's attachment field. Each field can only be linked to...