Explore product-specific spaces to ask questions, share insights, and learn best practices.
Recently active
While using R=301 redirect the paramaters on the urls are not getting removed!E.g www.xyz.com/content/we-retail/us/en/technology#web => www.xyz.com/content/we-retail/us/en/science#web Rule used ^/content/we-retail/us/en/technology/#india$ /content/we-retail/us/en/science.html [NC,R=301,L] Cannot use the flag QSD as i am on version 2.2 The redirection is sucess but #web persists!Anyone knows how to fix this?
Hi,I want to have a image that i uploaded in the page properties of the child pages in parent pageBelow is my code snippet: List<ExistingPagesModel> pagesList = new ArrayList<>(); Resource parentResource = resourceResolver.getResource("/content/x/us/en/home/test"); if (parentResource != null) { Iterator<Resource> childResources = parentResource.listChildren(); log.info("childResources: {}"); while (childResources.hasNext()) { Resource childResource = childResources.next(); log.info("Processing child resource: {}", childResource.getPath()); // Get property values from child resource  
AEM Touch UI page property field validation by Debal DasI have used Coral 3 — Granite UI NumberField as resourceType to achieve this functionality and JCR property structure associated with that Touch UI field has been shown below - It has helped to stop entering values like -1, 0 , 1.9 , 5.6 and 7.999 but still authors were able to input 1.0 , 2.0 , 7.0 , 12.0.Then I came to know about content structure : validation, that I can use to restrict authors to input values like 1.0 , 2.0 , 7.0 , 12.0To understand the implementation of validation , I have referred two great documents and I will share those links at end of this blog.Let me share the implementation steps associated with validation -Created a client-library folder with categories: demo.integer.validator and written a JS to set the validation so that author can’t make input like 1.0 , 2.0 , 7.0 , 12.0 via NumberField - (function ($, w
OverviewHello AEM Enthusiasts,Today, I want to shine a light on a subtle yet significant oversight that we, as AEM developers, often commit - an unwavering trust in the resolver.getResource() API.It's common practice to retrieve resources using this API and proceed on the assumption that if it's not null, it's valid. But here's the catch: resolver.getResource() can return a NonExistingResource object even when the actual resource doesn't exist in the repository!Consider this scenario: You're developing a component that fetches an image resource. Here's a snippet we've all written at some point:Resource imageResource = resolver.getResource(imagePath); if (imageResource != null) { // Proceed with using imageResource }Looks familiar, right? But what if imagePath is incorrect or the resource has been moved? The API doesn't return null; instead, it gives us a NonExistingResource that passes our null check and leads to unexpected behaviour or down the line.So what should we do? Simple -
Benefits of SlingSafeMethodsServlet with Code Examples by Brian Ka Sing Li Overview A robust security strategy is pivotal to safeguarding applications. As an AEM developer, we must really understand the SlingSafeMethodsServlet, an invaluable feature within the Apache Sling framework. This article explores the core concepts, practical benefits, and the heightened security it brings to servlet development. The org.apache.sling.api.servlets.SlingSafeMethodsServlet is an extension of the trusted HttpServlet in Apache Sling, introduces a focused approach to reinforcing security by limiting HTTP methods to read-only operations. This deep dive into its functionality unveils the foundation upon which secure servlets can be built
AEM 6.5.5 Not Indexing Problem *Fixed* by Brian Ka Sing @sourcedcode.com Overview In the course of establishing a new multitenant website, we opted to re-use the search mechanism for both site1 and site2. However, following the deployment of our code to the cloud QA environment, a significant hurdle surfaced: site2’s search consistently failed to produce results. This revelation made us to invest considerable effort in a detailed debugging journey. Follow this step-by-step guide below as we transparently outline each phase of our process to resolve this issue.Click here to review the entire blog -> https://sourcedcode.com/blog/aem/aem-6-5-5-not-indexing-problem-fixed
Hi, generatePDFOutputBatch function producing output documents double the amount of input map. Please find the scenario below sample code snippet. I am sending two templates with xml data and expecting two PDF documents as output, but it's produce 4 documents. I am bit confused, Any help please. Thanks. input Maps:Map templates = new LinkedHashMap();Map data = new LinkedHashMap(); templates.put("xyz", "xyz.xdp");templates.put("abc", "abc.xdp"); data.put("xyz", new Document(xml1))data.put("abc", new Document(xml2)) BatchOptions bo = new BatchOptions();bo.setGenerateManyFiles(true); ret = outputService.generatePDFOutputBatch(templates, data, option, bo); Output:I am getting double the amount of documents in output like below metadata enties. <?xml version="1.0" encoding="UTF-8"?><!-- Created with Liquid Technologies Online Tools 1.0 (https://www.liquid-technologies.com) --><printBatchMetaData><batchId /><recordMetaDa
Hello All! One of our awesome Tier 3 Support Engineers, Chance Bjarnson, will host a customer Office Hours Webinar on December 6th @ 9am MST. The topic will be Proof Approval Reports. We’d love to have you & your teams join! Here’s the registration link & outline for the session.https://event.on24.com/wcc/r/4408319/4D0FBE892A1FB414B4FAA59C5EC26F29Proof Approval ReportsProof Approval Historical RecordTextmode for Proof Approval ReportsCommon PitfallsTroubleshooting StepsLive demo
Adobe Campaign now supports OAuth for authentication in the External API workflow activity. This new capability opens up the ability for this activity to communicate with systems requiring OAuth support. For more information refer to the detailed documentation: External API In case you have any questions, please feel free to post them below or reach out through the community Q and A section. In case you have any ideas and/or suggestions regarding the Campaign Standard product, then kindly submit them here.
I would love to chat with others that have used Workfront specifically for Construction projects. The timelines for these projects always seem to be a moving target and are dependent on permits and outside factors, so I would like to learn from others that have used the software to help improve their process.
Hi, We need to shorten some DAM PDF url in our website. E.g. if PDF Path is: /content/dam/cms/myproject/resources/documents/mydoc.pdf, on page, whether is a href or img src, It should display like /Documents/mydoc.pdf Added rule as below in Sling Resource Resolver Factory: ^/content/dam/cms/myproject/resources/documents/</Documents/ When I try to check if it maps to right url, it looks all good. However, It does not shorten PDF urls on the Pages, whereas all rewrite rules for Pages work fine. 1) Do we need to write custom sling rewriter to handle this scenario? OR 2) Something is missing out here? FYI:@arunpatidar @ AvinashGupta01 @kautuk_sahni ,
Welcome New Workfront Admins! I imagine you have at least one question about Workfront and aren’t sure who to reach out to or where to go. Lucky for you, the Adobe Workfront Customer Success team is here to help! We can point you in the right direction, provide resources and recommendations, and ensure that your Workfront journey starts off on the right foot. Designed for beginner system administrators, this 3-part event series is not only a learning opportunity, but also a platform for you to ask questions, engage with other brand-new admins, and start expanding your Workfront network. We encourage you to register and attend all 3 sessions, if possible. If the dates and times don’t work for your schedule, no worries, we’ll be repeating these quarterly along with offering additional opportunities to learn and network. Be sure to check the Events page on Experience League for all upcoming events. September 19 at 8am PT / 11am ET - Admin 101: Getting Star
Enhancing Efficiency and Reliability by Sling jobs by Aanchal Sikka Overview Sling Jobs in AEM serve as a valuable mechanism for handling asynchronous and background tasks. These jobs are particularly beneficial for managing long-running or resource-intensive operations without disrupting the web application’s request-response cycle. They enhance the standard OSGi EventAdmin eventing mechanism by guaranteeing at least once processing, which is essential for use cases like sending notifications, post-processing content, and managing workflow steps. For details, refer to: https://techrevel.blog/2023/11/06/enhancing-efficiency-and-reliability-by-sling-jobs/ Q&A Please use this thread to ask questions relating to this article
@kdatta @arunpatidar @anchal @aanchalsikka
Seamless Integration of Vue.js in AEM Project by Sady_Rifat Overview In the rapidly evolving landscape of web development, technologies like AngularJS and jQuery have become outdated, urging the industry to transition towards more modern stacks. Enter VueJS, a cutting-edge framework that offers the best of both worlds. By seamlessly integrating VueJS into AEM projects, developers can harness the power of a modern, robust framework while continuing to benefit from the efficiency of HTL. This article serves as a comprehensive guide, demonstrating how VueJS can be integrated effectively by a non-SPA approach within AEM projects. Read Full Blog There are four parts in this series: Part 1: Overview Part 2: VUE 3 Setup Part 3: Create a Component Part 4: State Management Q&A Please use this thread to ask questions relating to this article and feel free to give any suggestions or corrections.
Our Adobe Digital Experience Communities are the heartbeat that connect, engage and empower our users to create game-changing digital experiences leveraging Adobe solutions. The Community Advisor program is a prestigious year-long initiative that recognizes outstanding users of Adobe Experience Cloud products. Community Advisors are distinguished as thought leaders and experts in their field, consistently demonstrating their expertise through active engagement, providing valuable insights, and setting an example for others. By fostering a thriving and supportive community, the program encourages peer-to-peer learning and offers a platform where users can freely exchange knowledge, receive assistance and contribute to the collective growth of the community. What are the program benefits? Quarterly calls with the Adobe product teams Vouchers for Adobe Experience Cloud certifications Opportunity to participate in beta testing and early adopter programs Opportunity to inf
I have an experiencefragment component that has a checkbox. I want to show this checkbox by default in the editor dialog box and hide it only when this experiencefragment component is used in a structure for a specific template. The problem is that I cannot disable this checkbox using the config provided here. This is the template structure:<root jcr:primaryType="nt:unstructured" sling:resourceType="xxx/components/structure/container"> <header jcr:primaryType="nt:unstructured" sling:resourceType="xxx/components/structure/header/feader" editable="{Boolean}true"/> <staging jcr:primaryType="nt:unstructured" sling:resourceType="xxx/components/content/experiencefragment" editable="{Boolean}true" cq:showOnCreate="{Boolean}false"/> <main This is the experiencefragment component _cq_dialog<logout jcr:primaryType="nt:unstructured" sling:resourc
Each month, the Adobe Workfront Customer Success team hosts FREE, interactive workshops on various topics for System Administrators. This month includes a NEW event type - Industry Circle - which will rotate industries on a regular basis. If you want to LEARN best practices, ASK questions and collectively brainstorm solutions, or CONNECT with other system administrators to build your network, sign up for one or all of the following events: January 5 at 9:00 a.m. PT – Connect: Admin Chat for Marketing & Creative January 8 at 6:00 a.m. PT - Connect: Workfront Collective [formerly Strategic Admin Chat] January 11 at 7:00 a.m. PT - [Product Release Webinar] What's new in Workfront 24.1? January 17 at 8:00 a.m. PT - Admin 101: Getting Started with Workfront January 24 at 8:00 a.m. PT – Learn: Adobe Workfront 24.1 Release Round Up February 8 at 9:00 a.m. PT – NEW! Industry Circle: Higher Educ
Step 1: Create a global map for storing your keys. Create a map and add the keyref element to it. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN" "technicalContent/dtd/map.dtd"> <map id="map.ditamap_ffbdbf06-8658-4311-ad84-1c631bba904f"> <title>global-keys-map</title> <keydef keys="adobe"> <topicmeta> <linktext>Adobe Systems</linktext> </topicmeta> </keydef> <keydef keys="AEM"> <topicmeta> <linktext>Adobe Experience Manager</linktext> </topicmeta> </keydef> </map> Here we have defined two definitions, as shown above, provided a keyref as “AEM” for the “Adobe Experience Manager” text. Step 2: Add this global key map to your publication map. Now add this map to your publication map <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE map PUBLIC "-//O
We would like to have a single location (AEM) for our content. We want to author in DITA and then export/convert the DITA to markdown for use in our GitHub documentation. Also, we would like to import some of our markdown docs into AEM and convert them to DITA so that we no longer need to manage the content in two source systems and use two different markup languages.
Hi AllI am working on a use case to create private folder programmatically but in my local sdk when I am trying to get Authorizable object it is always coming nullBelow is the code snippet UserManager userManager = resolver.adaptTo(UserManager.class)userManager.getAuthorizarble( “admin”): resolver is comong from service user. Service user had admin permission
Hello Adobe experts, I cannot receive Chinese query parameter in Servlet because of charset issues, but after I set Apache Sling Request Parameter Handling OSGi configuration, nothing changes, why? Any other places required configured? Can you give me some advises? Thanks
Hi,on the template, I defined a Carousel component with the nested teasers at structure for the teasers defined a policy.I allowed heading element as h1, h2 and default heading element as h1 in the policy. Both teasers are with same policy, when I created a new page I am getting carousel with nested teaser, also unable to delete those teasers this is expected behaviour.But on the existing page I am getting teasers in carousel but first teaser am not able to delete but 2nd is able to delete. Here the expected behaviour is both teasers author not allowed to delete.Also the style tab and heading element under text tab are visible for first teaser but not for 2nd teaser.Why its behaving like this whatever changes we have in editable template must reflect on page.Two teasers' behaviour should be same.Currently working on aem 6.5.16.0Can anyone help me
Hi Community Members,I wanted to setup PostgreSQL as DataSource for AEM Forms. I have configured "Apache Sling Connection Pooled DataSource" for Postgres with below details:Postgres is now available as DataSource during create new Form Model however getting an error message "Error in fetching DataSource". Can anyone please guide me how to complete the setup?
I have JSON service exposed to other system from AEM ex: https:domainname/content/portal/services/apidata.getMenuData.jsonThis is achieved as below. The data which needs to shared in JSON is configured in webpage say "/content/portal/menuconfig.html" via dialogue.There is service component with "getMenuData.json.jsp" to read data from "/content/portal/menuconfig.html" getMenuData.json.jsp code looks as below : getMenuData.json.jsp : String xPathQuery = "/jcr:root/content/portal/menuconfig/jcr:content/body/menuconfigurarions"; Session session = resourceResolver.adaptTo(Session.class); QueryManager qm = session.getWorkspace().getQueryManager(); Query q = qm.createQuery(xPathQuery, "xpath"); QueryResult result = q.execute(); NodeIterator nIt = result.getNodes(); Property prop = null; while(nIt.hasNext()) {
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.