Explore product-specific spaces to ask questions, share insights, and learn best practices.
Recently active
I'm working on enforcing asset governance in AEM 6.5.23 AMS, specifically:- Blocking uploads based on MIME-type folder rules- Enforcing naming standards aligned with CloudFront CDN requirements- Suggesting correct names to authors via frontend validationI'm using a custom ClientLib to validate uploads in the Touch UI and show alerts when assets are uploaded to the wrong folder or have invalid names.Now, I want to extend this governance to **asset moves**:- How can I ensure authors move assets only to valid folders?- What’s the best way to **preserve and update references** (pages, components, metadata) when assets are moved?- Are there recommended workflows or tools to automate reference updates and avoid broken links?Any insights, patterns, or tools you’ve used successfully would be greatly appreciated!
Hi Team,One of our customer are planning to create a custom template for adaptive forms, could anyone provide any suggestions on how and what paths can be used for implementing this?All site pages related custom templates will be available under /conf/<tenant>/<site>. The default templates that are shown under adaptive forms are available under /conf/ReferenceEditableTemplates/settings/wcm/templates.Also, does any paths specifically are needed to achieve this requirement.Thanks & regards,Aishwarya Karthikeyan
Hi Their, Good day.Need to implement a search block for my site which is being built on AEM Edge Delivery Service (universal editor based). Please provide me useful link/videos/page resources explaining about extending the OOTB search block on EDS, how does it function, what are the best practices, how a search API endpoint is established which can be consumer by the search block. Thanks,Tapas
Test Automation on AEMaaCS (part 2) by @daniel-strmecki Introduction In the first part of our test automation blog series, we explored why test automation is essential for AEM as a Cloud Service (AEMaaCS), where continuous delivery and shared code ownership simply make manual testing inefficient. We covered the four pillars of a robust testing strategy: Unit tests to catch backend bugs early UI tests to protect the end user and authoring experience Lighthouse tests to ensure great frontend performance and SEO Backend performance tests to validate scalability With these foundations in place, in the second part, we'll focus on automating test execution and reporting, turning strategy into action. First, we'll discuss which tooling options are available for writing and executing different types of tests in AEMaaCS. Then, we'll check which automation options are available in Cloud Manager. Finally, we'll demonstrate how to get this type of automati
Hello all,Working on a campaign that essentially does the following: Tracks website page views related to products and assigns a score of +1 for each visit to a corresponding field.Using Triggers, if a Lead hits a threshold put them into a Program related to that product.The Lead can only be in one Program at a time, but scoring continues until they leave the initial Program and can qualify again.Where I am looking for advice is after the Lead leaves the initial Program. We're wanting to basically move them into the next qualifying Program but since Marketo cannot directly compare Score fields on the Smart List side I am looking for the best way to be able to compare and select the highest score if there are multiple fields above the threshold. I've seen some solutions around using additional fields to append the score and product and update to the higher scoring field, but everything I've seen is a multi-step process so was curious if there was a more efficient way?
Creating AEM Service Users Using Sling Repo Initializer by Jonathan Saurez Overview Learn how to create AEM Service Users using Sling Repository Initializer (SRI), an efficient and automated approach compatible with AEM 6.5.4+ and AEM as a Cloud Service. This method simplifies user creation and permission assignment, ensuring consistency across environments. Read more Q&A Please use this thread to ask questions relating to this article
Email Integration with OAuth SMTP by Ashwini SatheOverviewAEM as a Cloud Service offers OAuth 2 support for its integrated Mail Service to allow organisations to adhere to secure email requirements. AEM’s DefaultMailService supports both Basic and OAuth 2 authentication. Basic authentication is easy to achieve but might not support modern security requirements. OAuth 2 is more secure than basic authentication.OAuth 2 support is available in AEM for multiple email providers like gmail, outlook etc. Here we will be mainly focusing on Microsoft Office 365 Outlook.Before we start with the setup, we need to consider below requirementsIs client SMTP public/internet or private/intranet? — If it is public, then we have to enable flexible egress in advanced networking on AEM as a Cloud Service. If it is private, then dedicated egress needs to be enabled and the dedicated IP needs to be whitelisted.Which SMTP port? — SMTP on ports 25/587/468 needs to be enabled by
How to Programmatically Send Notifications to Users in AEMby NeerajI have always wondered how we could notify users after executing background logic using AEM Sling Jobs. Unlike workflows with built-in notification mechanisms, there didn’t seem to be a direct way to inform users once a job was completed. This led me to explore different options, and that’s when I came across the TaskManager API.So just for the context: AEM includes an Inbox feature that enables users to receive notifications for assigned tasks. While workflows automatically trigger these notifications, we can use TaskManager API to send these notifications programmatically Full ArticleRead the full article with implementation on https://medium.com/@neerajchaudhary856/how-to-programmatically-send-notifications-to-users-in-aem-c198673a89bf Q&APlease use this thread to ask questions relating to this article
Can Caching of Sling Models Optimize Performance? Dear AEM Community,I'd like to share my recently published article exploring an important optimization technique for AEM development: caching in Sling Models. Article OverviewI examine how properly implemented caching can significantly improve AEM applications' response times and resource efficiency. The article covers:- A developer-friendly explanation of how cacheable Sling Models work- Concrete performance benefits with real-world implications- Critical pitfalls to avoid, including heap space exhaustion and memory retention issues- Best practices for implementation with code examples- Practical recommendations for monitoring and optimizing performance Key InsightsThe article provides guidance on when to use the cache=true annotation parameter, how to manage references carefully to prevent memory leaks, and techniques to measure the performance impact of your caching strategy.I've included code samples demonstrating bot
AEM and PIM systems integration by@tethich OverviewWhen it comes to showcasing products on the website it is always a challenging thing to achieve. On top of this, having the website hosted on Adobe Experience Manager (AEM) makes no exception when it comes to extra challenges. Au contraire, we might face additional particularities that we need to address and pay attention to.Let's dive in together in couple of system architectures solutions, explore how involved services interact and communicate which each other, and how data can be ingested, enhanced and consumed. Key aspects- Usual context and need within the client's digital ecosystem- Thinking process to navigate through roadblocks and setbacks- Architecture overview and couple of real-life architectures designs- System services specializations, responsibilities and integrations Full articleAccess this link to read the full article: https://tethich.com/blog/aem/aem-and-pim-systems-integrationQ&APlease use th
Revisiting a Natural ConclusionIt's not uncommon to get a request to migrate all of your production content to a lower environment. Almost all of the use cases are some variation of: "we need to have a full set of content in non-production to do regression testing." This is a natural conclusion to reach to ensure that all of the content is working as expected. While the intention is good, it's not the best approach. There are a few reasons to explore that can help lead to a better path.Validation at Scale is a Tall Order - Even the most dedicated testing and validation teams can't validate all content. Keeping the tests in order to match production requires a lot of effort that isn't realistic to achieve.Resource Efficiency Matters - The migration of production content will use considerable resources in non-production. It's like filling a model home with furnishings when the house won't ever be used.Syncing can Steal the Spotlight - Instead of having resources bringing value to other p
AEM Cloud Service — Composite Multifield in Content Fragments Editor(New Editor by Albin Issac Overview In this post, we’ll explore how to enable multifield support in the new CF Editor — a common requirement in many implementations. While one approach is to use a reference Content Fragment Model, having a true multifield is often more intuitive and flexible. Read more here - https://medium.com/tech-learnings/aem-cloud-service-composite-multifield-in-content-fragments-editor-new-editor-8021bf11f8b6?sk=9c680ac41b3771481cfc6a7545a8c66a Q&A Please use this thread to ask questions relating to this article
Reuse Common Dialog Parts in AEM Components by Mahedi Sabuj Overview One of the recurring challenges in AEM development? 𝗗𝘂𝗽𝗹𝗶𝗰𝗮𝘁𝗶𝗻𝗴 𝗱𝗶𝗮𝗹𝗼𝗴 𝗳𝗶𝗲𝗹𝗱𝘀 like text color, background color, or alt text across multiple components. It’s repetitive and error-prone. 𝗧𝗵𝗲 𝘀𝗺𝗮𝗿𝘁𝗲𝗿 𝘄𝗮𝘆: Create 𝗿𝗲𝘂𝘀𝗮𝗯𝗹𝗲 𝗱𝗶𝗮𝗹𝗼𝗴 𝗳𝗿𝗮𝗴𝗺𝗲𝗻𝘁𝘀 that can be included across different components. In this article, I dive into: How to reuse a common dialog 𝘢𝘴 𝘪𝘴 using 𝚐𝚛𝚊𝚗𝚒𝚝𝚎/𝚞𝚒/𝚌𝚘𝚖𝚙𝚘𝚗𝚎𝚗𝚝𝚜/𝚌𝚘𝚛𝚊𝚕/𝚏𝚘𝚞𝚗𝚍𝚊𝚝𝚒𝚘𝚗/𝚒𝚗𝚌𝚕𝚞𝚍𝚎 How to 𝗲𝘅𝘁𝗲𝗻𝗱 𝗼𝗿 𝗼𝘃𝗲𝗿𝗿𝗶𝗱𝗲 dialog properties using 𝚜𝚕𝚒𝚗𝚐:𝚛𝚎𝚜𝚘𝚞𝚛𝚌𝚎𝚂𝚞𝚙𝚎𝚛𝚃𝚢𝚙𝚎 — adding flexibility without losing reusability. For example, a 𝗰𝗼𝗹𝗼𝗿 𝗽𝗶𝗰𝗸𝗲𝗿 𝗱𝗶𝗮𝗹𝗼𝗴 𝗳𝗿𝗮𝗴𝗺𝗲𝗻𝘁 can be reused in any component, ensuring consistency and making updates a breeze. Even better, by extending these dialogs, you can customize fields while keeping a clean, maintaina
How to Fix Image Presets Not Syncing from AEM to Dynamic Media by Aanchal Sikka Overview If you’re working with AEM and using Dynamic Media for image delivery, you might run into an issue where your Image Presets aren’t syncing or publishing correctly. This can be especially frustrating when you’re trying to maintain consistent image styling across your site. Don’t worry—this guide walks you through a few proven steps to troubleshoot and resolve the issue. Q&A Please use this thread to ask questions relating to this article
Mastering Sling Filters in AEM By Neeraj Chaudhary Imagine you’re entering a building (your AEM website), and there’s a security guard at the entrance. Before you walk in, the guard can:Check your ID (authentication)Tell you to go to a different entrance (redirect)Make a note of who entered (logging)Ask you to wear a mask (set headers)A Sling Filter works just like that security guard. It checks and sometimes modifies the request before it reaches your actual AEM page or component. It can also update the response before it’s returned to the user.In short: Sling Filters sit in the middle of every request and response, letting you add custom logic like checking, blocking, redirecting, or modifying content.In this blog, we’ll explore Sling Filters, how they work, their real-world use cases, and how to implement them efficiently. Full ArticleRead the full article at https://medium.com/@neerajchaudhary856/mastering-sling-filters-in-aem-
Hi All,We have a use case where-in we are exposing a custom form on AEM Publish - This is sitting behind an IDP (Okta) so only authenticated users can fill the form.The form is used to modify content fragments, create content fragments (if necessary) and so on - basically CRUD operations on Content Fragments. AFAIK we will not do this on Publish because the cloud containers are dynamic and syncing to Publishers doesn't make sense. Also, reverse replication in AEMaaCS is not available to that's not an option either. There is an approach to use Adobe IO runtime action to basically have a function pass the payload from the form to AEM Author and then have the servlet execute CRUD operations on CFs before replicating and publishing it to Publishers. Query 1 - Is this approach the best possible way?Query 2 - Setting up a runtime action is not exactly straight forward - I tried following Adobe's documentation on the same- Adobe I/O Runtime Action and AEM EventsCreating Ac
I have merged the Commerce Starter Kit with custom Admin UI code. When I run the aio app build, it is completed successfully, but when I run the aio app deploy, I get the following error:Deploying web assets for 'commerce/backend-ui/2' Error: missing files in /home/user/Documents/App-Builder/Publishapp(testing)/testApp1/dist/commerce-backend-ui-2/web-prod, maybe you forgot to build your UI ?The strange part is: if I zip this same project (without node_modules) and share it with another developer in my team, they only do npm install and aio app deploy, and it works perfectly on their machine.What could be causing this “missing dist folder” issue only on my system, even though the code and steps are the same?
Hello there - we setup the self service log forwarding (https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/implementing/developing/log-forwarding#https) using https and so far its been working well but the logs are fairly large and sometimes causing issues with our API that receives them. Is there a way, on the AEM config side, to select which logs are being passed? I know we can limit the aem and/or cdn logs only but we want to get more granular.i.e. aemaccessaemerroraemrequestaemdispatcheraemhttpdaccessaemhttpderrorCan I set only the aemerror log from publisher or only the aemaccess log from author? Thanks,
HiI have the following question: Is it possible to ingest data into an Experience Event schema using Data Distiller in Adobe Experience Platform, and have those records act as triggers for a Journey in Adobe Journey Optimizer? My scenario would be:- Generate/transform data using Data Distiller (Query Service).- Write the results into a dataset based on an Experience Event schema enabled for profile.- Use those events as triggers in an AJO Journey (similar to realtime ingested events). I'd like to confirm if events generated by Data Distiller can be considered as “unitary events” for Journey Orchestration, or if the only supported method is real-time or batch ingestion from external sources. Thanks.
I have an EDS website with content edited in Google Drive. Could I edit the content of this website with Universal Editor instead of editing the Google Docx file?I looked for a tutorial or a step-by-step guide to use Universal Editor but there is none of this. Could you please help?
Hi Adobe Community,I'm encountering an issue while building my AEM project using the AEM SDK (cloud version). I followed all the steps as per the documentation, but the build keeps failing at the ui.frontend module.The error log shows: javascriptCopyEditError [ERR_REQUIRE_ESM]: require() of ES Module ...\node_modules\vargs\index.mjs not supported. Instead change the require of ...\vargs\index.mjs to a dynamic import() which is available in all CommonJS modules. It seems to be related to ES Modules not being compatible with require() in some part of the ui.frontend build, specifically during the execution of npm run prod.Here’s what I’ve tried so far:Running the build again using mvn -PautoInstallSinglePackage clean installUpdating node and npm versionsRemoving node_modules and reinstallingEnsuring compatibility with the AEM SDK versionDespite all this, the error persists. The rest of the modules build successfully; only the ui.frontend build fails.Can anyone pleas
Hi everyone,I have a issue when open content fragment as steps below,When clicking on a Content Fragment in /aem/start.html, the application open a new tab, but an error is displayed initially. However, after refreshing the page, the Content Fragment data loads correctly.Upon inspecting the browser console, a CORS (Cross-Origin Resource Sharing) error is observed. It's unclear why this issue is occurring specifically in the NON-PROD environment, as it doesn't appear in other environments.Please let me know if you’ve encountered a similar issue or have any insights on how to resolve it.cq-aem-headless-ui-admin?appId=aem-cf-admin&repo=author-pxxx-xxxx.adobeaemcloud.com&cq-aem-hea…:1 Access to fetch at 'https://author-xxxxx-xxxxx.adobeaemcloud.com/etc.clientlibs/toggles.json' from origin 'https://experience.adobe.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Hi everyone,I have a few path- and resource-based servlets.For path-based servlets, the URL starts like: http://localhost:4502/bin/test/v1/<identifier> Is exposing /bin to end users considered a problem? If yes, why so, since /bin/test/v1 is not a valid content path in AEM?In my case, I want to mask /bin/test/v1/<identifier> with a proxy. This proxy will be called from the client side, and I plan to add Apache rewrite rules to map the proxy URL back to the actual servlet. Is this the best way? For resource-based servlets, the URL starts like: http://localhost:4502/content/test/.../<page>.selector.extension I am masking these too with a proxy. Clients will call the proxy, and I’ll redirect it to the servlet API.My main question: Is writing Apache rewrite rules the best solution here, or would it be better to use something like Sling resource mapping? Thanks in advance!
Hi everyone, I'm working on a project using the aem-boilerplate-commerce in Edge Delivery Services and need to generate a sitemap-index.xml that references other sitemaps like categorias-sitemap.xml, productos-sitemap.xml, etc. Here’s an example of what I’m trying to achieve: <?xml version="1.0" encoding="UTF-8"?> <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <sitemap> <loc>https://mydomain.com/sitemap-content.xml</loc> </sitemap> <sitemap> <loc>https://mydomain.com/categorias-sitemap.xml</loc> </sitemap> <sitemap> <loc>https://mydomain.com/productos-sitemap.xml</loc> </sitemap> <sitemap> <loc>https://mydomain.com/content-sitemap.xml</loc> </sitemap> </sitemapindex> In addition to serving this index, I’d also like to ask for suggestions on how to generate the content of each individual sitemap — especi
Is TypeScript supported for the App builder? Developing complicated actions with pure JS can get a bit hard to maintain - does Adobe provide any samples how to work with Adobe IO with TypeScript? Thanks ! 🙂
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.