<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title>uat.liferay.dev</title>
  <link rel="self" href="https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859" />
  <subtitle>uat.liferay.dev</subtitle>
  <id>https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859</id>
  <updated>2026-08-01T23:09:33Z</updated>
  <dc:date>2026-08-01T23:09:33Z</dc:date>
  <entry>
    <title>The Technicalities of Static Sites</title>
    <link rel="alternate" href="https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=124257173" />
    <author>
      <name>David Oliveira Montenegro</name>
    </author>
    <id>https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=124257173</id>
    <updated>2025-10-08T11:19:12Z</updated>
    <published>2025-10-07T12:09:00Z</published>
    <summary type="html">When building a site in Liferay, you might be used to the fully-fledged web applications with dynamic content, widgets, and templates. But sometimes, all you need is a simple static site for a small</summary>
    <dc:creator>David Oliveira Montenegro</dc:creator>
    <dc:date>2025-10-07T12:09:00Z</dc:date>
  </entry>
  <entry>
    <title>Customization is Dead! Long Live Customization!</title>
    <link rel="alternate" href="https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=124242094" />
    <author>
      <name>David H Nebinger</name>
    </author>
    <id>https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=124242094</id>
    <updated>2025-10-06T13:06:47Z</updated>
    <published>2025-10-06T12:00:00Z</published>
    <summary type="html">Liferay’s current messaging emphasizes using client extensions — a modern, upgrade-friendly way to extend the platform without touching its core. But that doesn’t mean customization is gone. In fact,</summary>
    <dc:creator>David H Nebinger</dc:creator>
    <dc:date>2025-10-06T12:00:00Z</dc:date>
  </entry>
  <entry>
    <title>Public Bug Bounty Program</title>
    <link rel="alternate" href="https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=124151846" />
    <author>
      <name>David H Nebinger</name>
    </author>
    <id>https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=124151846</id>
    <updated>2025-10-01T14:24:56Z</updated>
    <published>2025-10-01T13:37:00Z</published>
    <summary type="html">Liferay DXP’s new public bug bounty program is now live on Intigriti! By opening the program to researchers worldwide, we’re inviting the security community to help us find and fix vulnerabilities,</summary>
    <dc:creator>David H Nebinger</dc:creator>
    <dc:date>2025-10-01T13:37:00Z</dc:date>
  </entry>
  <entry>
    <title>Adding Content-Signal Support to Liferay</title>
    <link rel="alternate" href="https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=124075430" />
    <author>
      <name>David H Nebinger</name>
    </author>
    <id>https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=124075430</id>
    <updated>2025-09-26T18:25:53Z</updated>
    <published>2025-09-26T16:06:00Z</published>
    <summary type="html">Cloudflare’s Content Signals extend robots.txt to control how your content is used for search, AI input, and AI training. This post shows how to integrate Content Signals into Liferay by updating the</summary>
    <dc:creator>David H Nebinger</dc:creator>
    <dc:date>2025-09-26T16:06:00Z</dc:date>
  </entry>
  <entry>
    <title>Grouping Users in Liferay</title>
    <link rel="alternate" href="https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=124063004" />
    <author>
      <name>David H Nebinger</name>
    </author>
    <id>https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=124063004</id>
    <updated>2025-09-25T19:34:22Z</updated>
    <published>2025-09-25T18:40:00Z</published>
    <summary type="html">Liferay gives you a lot of different ways to group users—sites, organizations, accounts, user groups, teams, asset libraries, and segments. But if you’ve ever asked yourself which one should I use,</summary>
    <dc:creator>David H Nebinger</dc:creator>
    <dc:date>2025-09-25T18:40:00Z</dc:date>
  </entry>
  <entry>
    <title>Ask is dead, long live Discuss!</title>
    <link rel="alternate" href="https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123871415" />
    <author>
      <name>Ben Turner</name>
    </author>
    <id>https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123871415</id>
    <updated>2025-09-17T01:07:02Z</updated>
    <published>2025-09-16T23:23:00Z</published>
    <summary type="html">As I said a couple of weeks ago, Ask has played a hugely valuable role over the years but it's time has come. As of today I'm really excited to announce that the replacement to ask is now live -</summary>
    <dc:creator>Ben Turner</dc:creator>
    <dc:date>2025-09-16T23:23:00Z</dc:date>
  </entry>
  <entry>
    <title>Please don't litter EventListeners</title>
    <link rel="alternate" href="https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123860786" />
    <author>
      <name>Olaf Kock</name>
    </author>
    <id>https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123860786</id>
    <updated>2025-09-16T14:34:49Z</updated>
    <published>2025-09-16T14:00:00Z</published>
    <summary type="html">Javascript EventListeners are a great tool and easily introduced in a template, a fragment or any other frontend component. It's quick to write window.addEventListener("scroll", doSomething); and</summary>
    <dc:creator>Olaf Kock</dc:creator>
    <dc:date>2025-09-16T14:00:00Z</dc:date>
  </entry>
  <entry>
    <title>Liferay 2025.Q3 Release Webinar - Replay</title>
    <link rel="alternate" href="https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123845817" />
    <author>
      <name>Ben Turner</name>
    </author>
    <id>https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123845817</id>
    <updated>2025-09-16T01:29:22Z</updated>
    <published>2025-09-16T01:20:00Z</published>
    <summary type="html">Hi everyone, Thanks to everyone that was able to join either of our 2025.Q3 release webinars last week. Whether you were able to attend or not, but are interested in the content, I'm pleased to</summary>
    <dc:creator>Ben Turner</dc:creator>
    <dc:date>2025-09-16T01:20:00Z</dc:date>
  </entry>
  <entry>
    <title>Skip the Heavy Coding: Why AMIS Beats Fragments and Client Extensions</title>
    <link rel="alternate" href="https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123782171" />
    <author>
      <name>Hồ Nhật</name>
    </author>
    <id>https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123782171</id>
    <updated>2025-09-16T01:20:24Z</updated>
    <published>2025-09-13T11:20:00Z</published>
    <summary type="html">  1. Why choose AMIS instead of Form Fragments or pure Client Extension? When developing complex applications on Liferay, you can use the available Form Fragments or build a custom front-end</summary>
    <dc:creator>Hồ Nhật</dc:creator>
    <dc:date>2025-09-13T11:20:00Z</dc:date>
  </entry>
  <entry>
    <title>Liferay and Maven Central</title>
    <link rel="alternate" href="https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123744937" />
    <author>
      <name>David H Nebinger</name>
    </author>
    <id>https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123744937</id>
    <updated>2025-09-11T16:06:11Z</updated>
    <published>2025-09-11T14:39:00Z</published>
    <summary type="html">When relying solely on Maven Central for Liferay artifacts, you may encounter delays in availability and even outdated or incorrect versions due to policies outside of our control. This post explains</summary>
    <dc:creator>David H Nebinger</dc:creator>
    <dc:date>2025-09-11T14:39:00Z</dc:date>
  </entry>
  <entry>
    <title>Building Reusable Layouts in Liferay with Fragment Compositions</title>
    <link rel="alternate" href="https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123657485" />
    <author>
      <name>Sukhvinder Singh</name>
    </author>
    <id>https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123657485</id>
    <updated>2025-09-07T23:10:00Z</updated>
    <published>2025-09-06T09:34:00Z</published>
    <summary type="html">Designing consistent and scalable layouts can be time-consuming if every page needs to be built from scratch. Liferay’s Fragment Compositions solve this challenge by allowing developers and content</summary>
    <dc:creator>Sukhvinder Singh</dc:creator>
    <dc:date>2025-09-06T09:34:00Z</dc:date>
  </entry>
  <entry>
    <title>Using Liferay Camunda Inbound and Outbound Connectors</title>
    <link rel="alternate" href="https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123581022" />
    <author>
      <name>Ivica Cardic</name>
    </author>
    <id>https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123581022</id>
    <updated>2025-09-11T15:40:21Z</updated>
    <published>2025-08-29T13:00:00Z</published>
    <summary type="html">To kick off the recently announced partnership between Liferay and Camunda, we produced connectors for bringing Liferay into your Camunda business processes. By combining Liferay's digital experience</summary>
    <dc:creator>Ivica Cardic</dc:creator>
    <dc:date>2025-08-29T13:00:00Z</dc:date>
  </entry>
  <entry>
    <title>New Discussion Forums are coming soon!</title>
    <link rel="alternate" href="https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123579623" />
    <author>
      <name>Ben Turner</name>
    </author>
    <id>https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123579623</id>
    <updated>2025-08-29T01:10:27Z</updated>
    <published>2025-08-29T01:03:00Z</published>
    <summary type="html">Hi Everyone, if you read my recent post on our upcoming Q3 Release Webinars (and if you haven't yet, remember to register!) you'll remember that I said I'm taking on a much more prominent role in the</summary>
    <dc:creator>Ben Turner</dc:creator>
    <dc:date>2025-08-29T01:03:00Z</dc:date>
  </entry>
  <entry>
    <title>Search Results summary content for custom Liferay Objects records</title>
    <link rel="alternate" href="https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123571779" />
    <author>
      <name>Michael Wall</name>
    </author>
    <id>https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123571779</id>
    <updated>2025-08-26T00:40:20Z</updated>
    <published>2025-08-25T16:10:00Z</published>
    <summary type="html">Introduction If you have surfaced custom Liferay Object records in the Search Results Widget you will know that the Title of the Search Result record can be changed (Entry Display &gt; Entry Title Field)</summary>
    <dc:creator>Michael Wall</dc:creator>
    <dc:date>2025-08-25T16:10:00Z</dc:date>
  </entry>
  <entry>
    <title>Liferay 2025.Q3 Release Webinar</title>
    <link rel="alternate" href="https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123551558" />
    <author>
      <name>Ben Turner</name>
    </author>
    <id>https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123551558</id>
    <updated>2025-08-21T22:55:11Z</updated>
    <published>2025-08-21T05:38:00Z</published>
    <summary type="html">Hi everyone! Firstly, a quick introduction from me - as I've just moved into the brand-new role of Principal Evangelist. You'll be hearing a lot more from me as I really get going with this role - so</summary>
    <dc:creator>Ben Turner</dc:creator>
    <dc:date>2025-08-21T05:38:00Z</dc:date>
  </entry>
  <entry>
    <title>Migrating React Client Extensions to vite from Deprecated CRA</title>
    <link rel="alternate" href="https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123546089" />
    <author>
      <name>Sudhanshu Mishra</name>
    </author>
    <id>https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123546089</id>
    <updated>2025-08-21T05:37:04Z</updated>
    <published>2025-08-16T16:09:00Z</published>
    <summary type="html">Before moving forward, we must know, What is CRA and Vite? Why we should always use Vite over CRA? Let's have clarity to these questions first.   1. CRA (Create React App) What it is: CRA is a</summary>
    <dc:creator>Sudhanshu Mishra</dc:creator>
    <dc:date>2025-08-16T16:09:00Z</dc:date>
  </entry>
  <entry>
    <title>Securing Headless API Calls in Liferay DXP</title>
    <link rel="alternate" href="https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123545700" />
    <author>
      <name>YOGESH CHANDRA</name>
    </author>
    <id>https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123545700</id>
    <updated>2025-08-16T14:27:24Z</updated>
    <published>2025-08-16T07:06:00Z</published>
    <summary type="html">Calling Liferay DXP Headless APIs (REST or GraphQL) from the frontend using Fragments, Custom Elements, or Client Extensions is easy and powerful. But there’s a hidden danger: credentials are often</summary>
    <dc:creator>YOGESH CHANDRA</dc:creator>
    <dc:date>2025-08-16T07:06:00Z</dc:date>
  </entry>
  <entry>
    <title>Jakarta Upgrade Preview</title>
    <link rel="alternate" href="https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123545217" />
    <author>
      <name>David H Nebinger</name>
    </author>
    <id>https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123545217</id>
    <updated>2025-09-02T16:21:01Z</updated>
    <published>2025-08-15T13:55:00Z</published>
    <summary type="html">Upgrading to Jakarta in Liferay isn’t just about swapping javax for jakarta—it’s a complex process with tooling, pitfalls, and hidden gotchas. In this post, I walk through the new upgrade tools, share</summary>
    <dc:creator>David H Nebinger</dc:creator>
    <dc:date>2025-08-15T13:55:00Z</dc:date>
  </entry>
  <entry>
    <title>How To Upgrade Service Builder Modules</title>
    <link rel="alternate" href="https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123537569" />
    <author>
      <name>David H Nebinger</name>
    </author>
    <id>https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123537569</id>
    <updated>2025-08-08T19:16:02Z</updated>
    <published>2025-08-08T17:13:00Z</published>
    <summary type="html">Upgrading Liferay is easy… said no developer ever. Especially when it comes to Service Builder modules, where invisible platform changes can break your services in subtle (and not-so-subtle) ways. You</summary>
    <dc:creator>David H Nebinger</dc:creator>
    <dc:date>2025-08-08T17:13:00Z</dc:date>
  </entry>
  <entry>
    <title>Liferay PaaS and RabbitMQ with Objects, CX and custom services</title>
    <link rel="alternate" href="https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123535710" />
    <author>
      <name>Michael Wall</name>
    </author>
    <id>https://uat.liferay.dev/c/blogs/find_entry?p_l_id=119785859&amp;entryId=123535710</id>
    <updated>2025-08-08T11:02:56Z</updated>
    <published>2025-08-07T17:06:00Z</published>
    <summary type="html">Introduction This blog post is to introduce a full end to end proof of content (POC) to integrate Liferay DXP with RabbitMQ for asynchronous message processing using custom services and Client</summary>
    <dc:creator>Michael Wall</dc:creator>
    <dc:date>2025-08-07T17:06:00Z</dc:date>
  </entry>
</feed>
