liferay-batch-client-extension

Creates and debugs Liferay Batch Client Extensions that import data via the Headless Batch Engine.

Updated Jul 24, 2026
One-click install
npx skills add https://github.com/gweone/agent-plugins --skill liferay-batch-client-extension-gweone
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: liferay-batch-client-extension
Source: https://github.com/gweone/agent-plugins/tree/main/plugin/sharpps-liferay/skills/liferay-batch-client-extension
Command: npx skills add https://github.com/gweone/agent-plugins --skill liferay-batch-client-extension-gweone

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Importing Object Definitions, Object Entries, Workflow Definitions, Roles, and other resources into Liferay — especially into system sites like Guest where Site Initializers are blocked — requires correctly configuring Batch Client Extensions, a process with silent failure modes (missing assemble: block, wrong siteId targeting) that produce zero errors and no imported data. ## Core Features & Use Cases - Batch CX authoring: Provides the minimal client-extension.yaml (including the mandatory assemble: block), OAuth scope configuration, and the *.batch-engine-data.json file format with className, createStrategy, and taskItemDelegateName conventions. - Site targeting: Documents the verified siteId parameter mechanism (group key, numeric group ID, or external reference code like L_GUEST) for scoping imports to a specific site, including the Guest-site workaround for blocked Site Initializers. - Support matrix and debugging: Distinguishes proven resource types (Objects, List Types, Workflows, SXP Blueprints, Document Data Definition Types) from untested ones (Documents, Pages, Web Content bodies), plus deployment verification via bundle headers and BatchEngineImportTaskExecutorImpl log lines. - Use Case: You need to seed Object Entries into the Guest site where a Site Initializer throws RequiredGroupException. Build a batch CX with "siteId": "L_GUEST", deploy it, and confirm the import by querying dateModified on the live entries. ## Quick Start Create a Liferay batch client extension that imports my Object Definitions and Object Entries into the Guest site, with the correct client-extension.yaml and batch-engine-data.json files.

Frequently Asked Questions about liferay-batch-client-extension

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a Liferay batch client extension?

Define a `type: batch` entry in client-extension.yaml with an `oAuthApplicationHeadlessServer`, add the mandatory `assemble:` block mapping the `batch/` folder, and place `*.batch-engine-data.json` files under `batch/`. Each JSON file declares a `className` and an `items` array of DTOs.

How do I target a specific site in a Liferay batch import?

Add a `"siteId"` key inside the batch file's `configuration.parameters` object. It accepts a group key (e.g. "Guest"), a numeric group ID, or an external reference code like "L_GUEST", resolved by GroupUtil.getGroupId in the Vulcan batch adaptor.

Can a batch client extension import data into the Liferay Guest site?

Yes. Unlike Site Initializers, which are blocked on Guest by RequiredGroupException, batch client extensions only look up the group ID to scope REST calls and never modify the Group entity, so imports into Guest, Global, or Control Panel work.

Why does my Liferay batch client extension deploy with no errors but import nothing?

The most common cause is a missing `assemble:` block in client-extension.yaml, which leaves the `batch/` folder out of the dist zip and the `Liferay-Client-Extension-Batch` header out of the manifest. Verify with `unzip -l` on the zip and the `headers` command in the OSGi console.

What resource types can Liferay batch engine import?

Proven types include Object Definitions, Object Folders, Object Relationships, Object Entries (with attachments), List Type Definitions, Workflow Definitions, Roles, User Accounts, SXP Blueprints, and Document Data Definition Types. Documents, KB Articles, and Pages are wired but unverified; Web Content bodies currently fail to populate.

Batch client extension vs site initializer in Liferay — which should I use?

Use a Site Initializer for ordinary non-system sites since it covers more resource types like pages, documents, and web content. Use a batch client extension when targeting system sites like Guest, or for resource types the Site Initializer cannot create, such as Document Data Definition Types.