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.

Feature
Deployment Approach
Capability
Portlet Level Configuration
Portlet Level Configuration With the configuration framework, you can set your application's configuration for different levels of scope. Where Instance and Site-scoped configurations use...
Published Date: Nov 22, 2024 10:50 PM
Hiding the Configuration UI
Hiding the Configuration UI Liferay generates a configuration UI automatically after a configuration interface deploys. But you may have certain use cases where you want to hide the UI. For...
Published Date: Nov 22, 2024 10:50 PM
Setting and Accessing Configurations
Setting and Accessing Configurations You can use Liferay's configuration framework to add a settings UI for a MVC Portlet. See the Example Portlet Then, follow these steps: Download and unzip...
Published Date: May 9, 2024 6:53 PM
Job Scheduler Framework
Job Scheduler Framework
Published Date: May 9, 2024 6:53 PM
Dependency Injection
Dependency Injection
Published Date: May 9, 2024 6:53 PM
Job Scheduler UI Reference
Job Scheduler UI Reference Liferay Self-Hosted Liferay PaaS Job Scheduler Triggers View, create, and manage Job Scheduler Tasks. The Job Scheduler Triggers tab lists all tasks added to the...
Published Date: Nov 22, 2024 10:50 PM
Creating a New Job Scheduler Task Executor
Creating a New Job Scheduler Task Executor Liferay Self-Hosted Liferay PaaS Each Job Scheduler Task is created by implementing the DispatchTaskExecutor interface and can execute any logic. While...
Published Date: May 9, 2024 6:53 PM
Understanding the Job Scheduler Framework
Understanding the Job Scheduler Framework Liferay Self-Hosted Liferay PaaS Liferay Job Scheduler is a flexible framework built on top of Liferay's Scheduler Engine. You can use it to add, execute,...
Published Date: Nov 22, 2024 10:50 PM
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....
Published Date: Dec 3, 2024 3:11 PM
Using Job Scheduler
Using Job Scheduler Liferay Self-Hosted Liferay PaaS Job Scheduler is a flexible framework built on Liferay's scheduler engine for running and scheduling business logic. This framework uses the...
Published Date: May 9, 2024 6:53 PM
Message Bus
Message Bus The Message Bus provides a loosely coupled way to exchange messages. A class sending a message invokes the Message Bus to send the message to a destination, while other classes...
Published Date: May 9, 2024 6:53 PM
Listening for Messages
Listening for Messages You can listen for messages sent to any registered Message Bus destination, whether it's built-in to DXP/Portal, defined by third-parties, or created by you. Messages sent to...
Published Date: May 9, 2024 6:53 PM
Tuning Messaging Performance
Tuning Messaging Performance Messaging performance is tuned at the destinations. Performance depends on the destination type, the amount of processing the message listeners require, and the thread...
Published Date: May 9, 2024 6:53 PM
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...
Published Date: Jan 18, 2025 2:48 AM
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...
Published Date: Jan 18, 2025 2:48 AM
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...
Published Date: Jan 18, 2025 2:48 AM
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...
Published Date: Jan 18, 2025 2:48 AM
Portlets
Portlets Liferay DXP started off as a portal server for Java-based web applications called portlets (see JSR 168, JSR-286, and JSR-362). Portlets process requests and generate responses like any...
Published Date: May 9, 2024 6:53 PM
Portlet Descriptor to OSGi Service Property Map
Portlet Descriptor to OSGi Service Property Map Here's a map of portlet XML descriptor values to OSGi service properties for publishing OSGi Portlets. The properties centralize and simplify portlet...
Published Date: May 9, 2024 6:53 PM
Portlet IDs
Portlet IDs Below is a listing of the portlet IDs for the default portlets in Liferay DXP. You can use these IDs to embed portlets in your theme's sitemap. Collaboration PortletID...
Published Date: May 9, 2024 6:53 PM
Portlet 3.0 API Opt In
Portlet 3.0 API Opt In A portlet must specify version 3.0 to opt in to the Portlet 3.0 API. The 3.0 Portlet API version can be specified in the following ways. Standard Portlet @PortletApplication...
Published Date: May 9, 2024 6:53 PM
Asset Framework
Asset Framework The asset framework is behind many of Liferay's most powerful features. It provides tools for displaying and interacting with any type of content and data. For example, if you build...
Published Date: May 9, 2024 6:52 PM
Enabling Assets
Enabling Assets Many of Liferay's applications (e.g. Blogs, Documents and Media, Message Boards, etc.) are asset-enabled out of the box. You can publish assets with the Asset Publisher widget or...
Published Date: May 9, 2024 6:52 PM
Servlets
Servlets
Published Date: May 9, 2024 6:54 PM
Cache
Cache
Published Date: May 9, 2024 6:52 PM
Data Frameworks
Data Frameworks
Published Date: May 9, 2024 6:52 PM
Accessing Custom Fields With Expandos
Accessing Custom Fields With Expandos When you need additional fields in your application, you can always add them in your service model definition and re-run Service Builder. This adds new columns...
Published Date: May 9, 2024 6:52 PM
Data Scopes
Data Scopes
Published Date: May 9, 2024 6:52 PM
Expando
Expando Accessing Custom Fields with Expando
Published Date: May 9, 2024 6:52 PM
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....
Published Date: May 9, 2024 6:52 PM
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...
Published Date: Jan 11, 2025 4:12 PM
Using Domain-Specific Language Queries
Using Domain-Specific Language Queries Liferay 7.4+ DSL Query is an acronym for Domain-Specific Language Query. The foundation is based upon using a domain-specific language for the...
Published Date: Jan 18, 2025 2:47 AM
Implementing an Item Selector
Implementing an Item Selector Item selectors are pop-up dialogs for selecting assets, such as documents, videos, or users. By configuring the item selector's criteria and defining its usage, you...
Published Date: May 9, 2024 6:52 PM
Using Custom SQL Queries
Using Custom SQL Queries Service Builder creates finder methods that retrieve entities by their attributes (their column values). When you add a column as a parameter for the finder in your...
Published Date: Sep 6, 2024 3:37 PM
Using Dynamic Query
Using Dynamic Query Liferay's Dynamic Query API wraps Hibernate's Criteria API. It helps you think in terms of objects and member variables instead of tables and columns. Complex queries can be...
Published Date: Jan 18, 2025 2:47 AM
Business Logic with Service Builder
Business Logic with Service Builder Once you've generated model, persistence, and service code with Service Builder, you can begin adding business logic. Entities generated by Service Builder...
Published Date: May 9, 2024 6:52 PM
Defining Entities
Defining Entities Entities are the heart and soul of a service. They represent the map between the model objects in Java and your database fields and tables. Service Builder automatically maps your...
Published Date: May 9, 2024 6:52 PM
Configuring Global Service Options
Configuring Global Service Options A service's global options apply to all its entities. Here are the options: Dependency Injector Package path Multiversion concurrency control Namespace...
Published Date: May 9, 2024 6:52 PM
Adding Model Hints
Adding Model Hints Once you've used Service Builder to define model entities, you may want to refine how users enter that data. Model hints specify entity data restrictions and other formatting....
Published Date: May 9, 2024 6:52 PM
Defining Entity Columns
Defining Entity Columns An entity's columns represent its attributes. These attributes map table fields to Java object fields. Here you'll examine the sample project from Understanding and...
Published Date: May 9, 2024 6:52 PM
Promotions Reference
Promotions Reference FieldDescription NameName of the promotion CatalogCatalog attached to the promotion. The promotion does not apply to products outside the selected Catalog. CurrencyCurrency...
Published Date: May 9, 2024 6:46 PM
Creating a Promotion
Creating a Promotion The example below creates a promotion that reduces the price of all products in the catalog by 20% on the 4th of July. All accounts, account groups, channels, and order types...
Published Date: May 9, 2024 6:46 PM
Introduction to Product Groups
Introduction to Product Groups Product groups are static groups of products you can use for targeted discounts or pricing. Product groups are ideal in two scenarios: If you have products that...
Published Date: May 9, 2024 6:46 PM
Introduction to Promotions
Introduction to Promotions You can create Promotions in Liferay to offer promotional pricing to all customers or a set of customers. A promotion shows the difference between a product's list price...
Published Date: May 9, 2024 6:46 PM
Using the Base Promotion List
Using the Base Promotion List When you create a new catalog, a new Base Promotion List is created automatically. You cannot control the eligibility or add any price modifiers for a base promotion...
Published Date: May 9, 2024 6:46 PM
Using Discount Levels
Using Discount Levels You can create discount levels to apply multiple discounts to products and orders. Commerce applies these discounts consecutively according to their rank. For example, if you...
Published Date: May 9, 2024 6:46 PM
Setting a Product's Base Price
Setting a Product's Base Price When you create an SKU, it doesn't have a base price. A price entry for the SKU is created automatically in the catalog's base price list, but you must change it to...
Published Date: May 9, 2024 6:46 PM
Setting a Product's Base Price for Commerce 2.1 and Earlier Versions
Setting a Product's Base Price for Commerce 2.1 and Earlier Versions When you create an SKU, it doesn't have a base price. A price entry for the SKU is created automatically in the catalog's base...
Published Date: May 17, 2025 3:54 PM
Product Management
Product Management With Liferay's product management capabilities, you can manage multiple product catalogs, create products of different types with multiple SKUs, create and manage product...
Published Date: May 9, 2024 6:46 PM
Catalogs
Catalogs A catalog contains all the information about the products you're selling. Before starting a store, you must create at least one catalog and add products to it. Catalogs are scoped to an...
Published Date: May 9, 2024 6:46 PM
Configuring a Product Placeholder Image for Commerce 2.1 and Earlier Versions
Configuring a Product Placeholder Image for Commerce 2.1 and Earlier Versions Products in a catalog that do not have an associated product image use a placeholder image until one is configured. The...
Published Date: Jun 27, 2025 6:41 PM
Configuring a Product Placeholder Image
Configuring a Product Placeholder Image Products in a catalog that do not have an associated product image use a placeholder image until one is configured. The default placeholder image is defined...
Published Date: May 9, 2024 6:46 PM
Configuring Catalog Permissions
Configuring Catalog Permissions Catalog permissions determine which users can see and modify catalogs and their related products. Admin users have these permissions by default, but you can add...
Published Date: May 9, 2024 6:46 PM
Creating a Grouped Product
Creating a Grouped Product A grouped product consists of two or more products from a catalog that are sold together as a pre-defined set, either for customer convenience or to offer a special...
Published Date: Jun 27, 2025 6:41 PM
Creating a Simple Product
Creating a Simple Product A simple product is any physical product for which inventory is tracked. Products are added to a catalog and include a name and description. Products can be further...
Published Date: May 9, 2024 6:46 PM
Product Types
Product Types Liferay provides four product types out-of-the-box: Simple, Grouped, Virtual, and Diagram. Simple product: Any physical product for which inventory is tracked. Grouped product: Two...
Published Date: May 9, 2024 6:46 PM
Creating a Simple Product for Commerce 2.1 and Earlier Versions
Creating a Simple Product for Commerce 2.1 and Earlier Versions A simple product is any physical product for which inventory is tracked. Products are added to a catalog and include a name and...
Published Date: Jun 27, 2025 6:41 PM
Creating a New Catalog
Creating a New Catalog Open the Global Menu (Applications Menu icon) and navigate to Commerce → Catalogs. Navigate to the Catalogs application. Click Add (Add icon) and enter this data: ...
Published Date: May 9, 2024 6:46 PM
Creating and Managing Products
Creating and Managing Products Learn how you can use the different product types available out-of-the-box with Liferay and enrich the storefront experience for customers. You can leverage built-in...
Published Date: May 9, 2024 6:46 PM
Creating a Grouped Product for Commerce 2.1 and Earlier Versions
Creating a Grouped Product for Commerce 2.1 and Earlier Versions A grouped product consists of two or more products from a catalog that are sold together as a pre-defined set, either for customer...
Published Date: Jun 27, 2025 6:41 PM