chrberndt/liferay-7310-workspace/integrate-external-data
- community
Checking that the SKILL.md file is still in the repository.
Back a Liferay Object with an external data source using the Object Entry Manager CET pattern. Use when the user wants to connect an object to an external REST API, database, or SaaS system rather than storing data in Liferay's own database. Maps to "Integration with External Systems and Data" in "Mastering Data Modeling with Liferay Objects".
Install
npx vskill@latest install chrberndt/liferay-7310-workspace/integrate-external-dataSKILL.md
Integrate External Data
The Object Entry Manager pattern lets Liferay Objects delegate storage and retrieval to a microservice. Object CRUD calls proxy to the external service; Liferay UI, workflows, and permissions all work transparently.
When to Invoke
- "Connect this object to our Salesforce data"
- "Back this object with an external REST API"
- "I want Liferay to display records from an external system"
- Called by
manage-objectswhenstorageType: ext-Serviceis specified
Architecture
The CET implements an HTTP server that handles five operations Liferay calls:
| Liferay Call | CET Endpoint | |
|---|---|---|
| Create entry | POST / | |
| Read entry | GET /<id> | |
| Update entry | PUT /<id> | |
| Delete entry | DELETE /<id> | |
| List entries (paged) | GET / with ?page=&pageSize=&filter= |
Workflow
Define the Object With ext-Service Storage
Use "storageType": "salesforce" for native Salesforce integration, or "storageType": "ext-Service" for the custom CET pattern. For ext-Service, proceed to Scaffold the `objectEntryManager` CET.
Scaffold the objectEntryManager CET
Call scaffold-client-extension with type objectEntryManager. The CET is a microservice that Liferay calls inbound.
Minimum client-extension.yaml entry:
Where:
baseURLis the address Liferay uses to reach the microservice (usehost.docker.internalin Docker environments)objectDefinitionRestContextPathmatches the published object's plural label
Implement the Microservice
The microservice must respond to the five endpoints above. Use any stack (Spring Boot, Node.js, Python). The request and response bodies follow the Liferay Headless delivery envelope:
Liferay sends the X-Liferay-Token header with each call for the CET to verify authenticity.
Wire OAuth
Call setup-oauth to add the companion oAuthApplicationHeadlessServer entry to client-extension.yaml. The entry manager needs scopes to call back into Liferay when it must resolve related objects or write audit entries.
Minimum scope: Liferay.Headless.Object.everything. Add Liferay.Object.Admin.REST.everything if the entry manager needs to inspect or modify the object definition itself.
Deploy
Run deploy-and-verify from the client extension root. Then start the microservice separately on the port declared in baseURL.
Verify
Check the microservice logs to confirm Liferay forwarded the calls. If entries appear empty, the microservice's list response format may not match the expected envelope (see Implement the Microservice).
Troubleshoot
| Symptom | Check | |
|---|---|---|
| 500 on entry creation | Microservice unreachable at baseURL; check network and port | |
| 401 from microservice | X-Liferay-Token validation failing; verify the token algorithm | |
| CET not linked to object | objectDefinitionRestContextPath must match exactly; redeploy after fix | |
| Empty list from Liferay | Microservice returns nonenvelope JSON; wrap in the Headless page envelope |
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryChecking.workspace-rules/skills/integrate-external-data/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/chrberndt/liferay-7310-workspace/integrate-external-data)