Explore product-specific spaces to ask questions, share insights, and learn best practices.
Recently active
Making AEM Groovy Without The Console by Juan Ayala Abstract Recently I was researching error handling in AEM . I found this Sling documentation page. Pretty standard stuff except for the last line. Thus to overwrite the default error handler servlet provide a servlet or script for the default extension, for example /apps/sling/servlet/errorhandler/default.groovy. A Groovy script, in the context of Sling. Was the documentation wrong? Did they want to write jsp instead of groovy ? I did some research. By the end of this post, you will be writing the following in Groovy OSGi components, that is, servlets, services, and Sling models. Scripts that Sling can resolve and execute. GString templates that Sling can resolve and render. The Background For years I have associated Groovy with the AEM Groovy Console . If you google " aem groovy script ", you will be bombarded with the Groovy Console. Now try " sling groovy script ". They are two different things. I found this document fil
How to Implement Experience Targeting in AEM using ContextHub? by Albinsblog Abstract Content personalization in short means delivering the right content to the right person in real-time. Simple experience targeting scenario, user1 requesting the content through Firefox receives Experience A and user2 requesting the content through Chrome receives Experience B. The experience can be decided based on different rules e.g gender, age location, etc, here we are seeing the simple scenario. The targeting engine is the mechanism that drives the logic for targeted content. You can use either AEM or Adobe Target as the targeting engine, AEM provides a built-in targeting engine that processes page requests and determines the content to display. AEM as a targeting engine only supports Experience Targeting but Adobe Target should be used for A/B testing. SETUP CONTEXTHUB: ContextHub is a framework for storing, manipulating, and presenting context data. The ContextHub Javascript API enables you
AEM(Adobe Experience Manager) Headless Implementation— Workflow by Albinsblog Abstract My earlier post explained the steps to enable headless content sharing through GraphQL. Refer to https://medium.com/tech-learnings/how-to-deliver-headless-content-through-graphql-api-and-content-fragments-da2b2d22df06 for more details on delivering headless content through GraphQL API and Content Fragments. In this post let us quickly see the different activities to share the headless content through GraphQL and the different roles performing those activities(this is based on my understanding, feel free to give your feedback). The different roles to enable the headless content Developer Content Architect Content Author Developer: The developer performs most of the technical configurations to enable Content Architect and Content Authors to produce headless content. Additionally, enable the GraphQL endpoint configurations that can be consumed by external applications to fetch headless content. Config
AEM Single Sign-On (SSO) using JumpCloud by Suryakand's Blog Abstract User experience begins with sign-in process. In today’s digital world we use many applications (at our workplace and outside). Remembering passwords and/or reauthenticating every time we access these applications within same provider ecosystems is not a desirable user experience. Many of us use google applications (Gmail, Google drive, YouTube etc.) and if you must sign-in again-and-again to access these applications then I am sure you’ll not be very happy. And yes, there is a chance that you may forget password as well. At your workplace you may have timesheet application, payroll application and many other. If you sign-in only once and can access all other application without having to sign-in again then you are lucky, SSO implemented at your workplace. What is Single Sign-On? Single Sign-On allows users to authenticated themselves once and auto-login to multiple applications (that talks to same identity
Advanced Concepts of AEM Headless by Adobe Docs Abstract This end-to-end tutorial continues the basic tutorial that covered the fundamentals of Adobe Experience Manager (AEM) Headless and GraphQL. The advanced tutorial illustrates in-depth aspects of working with Content Fragment Models, Content Fragments, and the AEM GraphQL API, including using AEM GraphQL in a client application. Prerequisites Complete the quick setup for AEM as a Cloud Service to configure your environment. It is highly recommended that you complete the previous basic tutorial and video series tutorials before proceeding with this advanced tutorial. Although you can complete the tutorial using a local AEM environment, this tutorial only covers the workflow for AEM as a Cloud Service. Objectives This tutorial covers the following topics: Create Content Fragment Models using validation rules and more advanced data types such as Tab Placeholders, nested fragment references, JSON objects, and Date & Time data
Goodbye Centos - AEM by Max Barrass Abstract Centos is no more! You already know that. The founder of Kurtzer, who started Centos more than 16 years ago, was shocked just as much. Centos was a great gap filler between Fedora and RHEL. You had the best of both worlds, but you could use it for development and then roll your apps straight to RHEL if you need enterprise support. What does this mean for AEM? Well, it means all of the containers essentially will need to be updated to use something else. You can’t use Centos, so the next best thing would be … Debian. Yes, Ubuntu is a good contender, but you won’t be able to run AEM Forms on it; tldr, Ubuntu does not have 32bit support. Centos is no more! You already know that. The founder of Kurtzer, who started Centos more than 16 years ago, was shocked just as much. Centos was a great gap filler between Fedora and RHEL. You had the best of both worlds, but you could use it for development and then roll your apps straight to RHEL if you n
Hello All, we have pretty strong dispatcher and CDN blockers restricting only required URL's. What we noticed that once we identify a valid content path for a site, its pretty much easy to by pass CDN and dispatcher eventually increasing the CPU Utilization. If its a planned dynamic IP flood of HTTP requests with valid URL, all such requests will reach AEM (Given an example scenario) Home Page - /content/site/country/language/home.htmlVulnerable URL - /content/site/country/language/home123.html (any number of such URL's can be formed and triggered from simple hacking tools) Has anyone come across such use case, as I feel its pretty much a key vulnerability. Recommendation from Core Engg team was to limit requests coming through CDN to a specific amount and increase AEM infra. Please share in your thoughts.. ThanksAbdul
Hello Everyone,We have a simple 3-Columns Grid component where we are using "wcm/foundation/components/parsys", directly inside those columns for adding whatever component. Our concern is that, is it safe to use "parsys" as resourceType directly or should we use "wcm/foundation/components/responsivegrid" as resourceType always?What are the disadvantage or what's going to impact in the future if using parsys directly here?Note: We are using parsys directly here because, the component itself is creating the layout and if we use responsiveGrid as resourceType then it adds it's own wrapper div and set of CSS classes which is not needed in this case. <div class="container"> <div class="row" id="${properties.id}"> <div class="col-xs-12 col-md-4"> <sly data-sly-resource="${'path1' @ resourceType='wcm/foundation/components/parsys'}"/> </div> <div class="col-xs-12 col-md-4"> <sly data-sly-resource="$
Use this thread to ask any questions related to the "Learn to use AEM Forms as a Cloud Service's document generation microservices course" on Experience League.Experts are monitoring this thread to ensure your questions are answered.
Hello there,I'm have trouble generating both Visitor ID and Session ID in Adobe Launch with the Adobe Analytics extension. I've looked at this accepted solution on https://experienceleaguecommunities.adobe.com/t5/adobe-analytics-questions/cookie-id-and-session-id/qaq-p/275902 but still do not understand how to get to the IDs. Can anyone provide a step-by-step guide? Thank you in advance!
AEM(Adobe Experience Manager) Headless Implementation— Workflow by Albinsblog Abstract My earlier post explained the steps to enable headless content sharing through GraphQL. Refer to https://medium.com/tech-learnings/how-to-deliver-headless-content-through-graphql-api-and-content-fragments-da2b2d22df06 for more details on delivering headless content through GraphQL API and Content Fragments. In this post let us quickly see the different activities to share the headless content through GraphQL and the different roles performing those activities(this is based on my understanding, feel free to give your feedback). The different roles to enable the headless content 1. Developer 2. Content Architect 3. Content Author 4. DEVELOPER: The developer performs most of the technical configurations to enable Content Architect and Content Authors to produce headless content. Additionally, enable the GraphQL endpoint configurations that can be consumed by external applications to fetch headless co
Guidance For Choosing the Best Adobe Experience Manager Solution Partner by Bounteous Abstract Your organization has recently made the strategic decision to invest in Adobe Experience Manager (AEM). It wasn't an easy journey to get here - all the internal discussions, stakeholder negotiations, and proof points, and of course finally securing the budget. Now the hard work begins - and if you haven't already chosen an implementation partner, you are likely actively looking for a partner to help you maximize the value of your investment. Who you choose is up to you. How you come to that decision is something I'd like to offer some guidance on based on my experience in aiding our clients both starting from scratch and sometimes, jumping in mid-stream to save the day. The truth is that you need to do some research and you need to ask the right questions. Here are some tips and questions to be aware of when selecting a consulting firm to implement AEM. Tip One: Define Your Goals You will
AEM - Create a JSON Web Token (JWT) by Adobe Docs Abstract JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties. JWT.io libraries were used in this sample to generate the JWT. The service credentials that you have downloaded in the previous step contains the private key in the PKCS#1 format.To extract the private key from this string we have used BouncyCastle libraries. The crypto libraires that are part of java do not support PKCS#1 format. The following code was used to generate the JWT: public String getJWTToken() { Security.addProvider(new BouncyCastleProvider()); RSAPrivateKey privateKey = null; GetServiceCredentials getCredentials = new GetServiceCredentials(); try { long now = System.currentTimeMillis(); Long expirationTime = now + TimeUnit.MINUTES.toMillis(5); // get the private key string from the service credentials String privateKeyString = getCredentials.getPRIVATE_KEY(); //The JWT signature algorithm we wil
AEM as a Cloud Service Tutorials - Create an Access Token by Adobe Docs Abstract Exchange JWT for Access Token The JWT created in the previous step is exchanged with Adobe IMS APIs for an Access Token, which can then be used to access AEM as a Cloud Service. To request an Access Token send a POST request containing the JWT, client_id, client_secret to the IMS authentication service. The following code was used to generate exchange JWT for Access Token public String getAccessToken() { String jwtToken = getJWTToken(); GetServiceCredentials getCredentials = new GetServiceCredentials(); System.out.println("Getting Access Token"); try { HttpClient httpClient = HttpClientBuilder.create().build(); HttpHost authServer = new HttpHost(getCredentials.getIMS_ENDPOINT(), 443, "https"); HttpPost authPostRequest = new HttpPost("/ims/exchange/jwt"); List < NameValuePair > nameValuePairs = new ArrayList < NameValuePair > (); nameValuePairs.add(new BasicNameValuePair("jwt_token", jwtTok
AEM as a Cloud Service Tutorials - Merge data with the XDP template by Adobe Docs Abstract Make the POST call The next step is to make an HTTP POST call to the endpoint with the necessary parameters. The template and the datafiles are provided as resource files. Properties of the generated pdf are specified via the option’s parameter in the request.The property embedFonts is used to embed custom fonts in the generated pdf.Please follow this documentation to deploy custom fonts to your Forms cloud instance. The properties are specified in the options.json resource file. Since, the end point has token based authentication we pass the Access Token in the request header. The following code was used to generate pdf by merging data with the template public class DocumentGeneration { public String SAVE_LOCATION = "c:\\aspire1"; public void mergeDataWithXdpTemplate(String postURL) { HttpPost httpPost = new HttpPost(postURL); CredentialUtilites cu = new CredentialUtilites(); String accessTok
AEM as a Cloud Service Tutorials - Installing IntelliJ community edition by Adobe Docs Abstract Installing IntelliJ Install IntelliJ community edition. You can accept the default settings while suggested during the installation. Import the AEM Project Launch IntelliJ Import the AEM project you created in the earlier step. Add the fonts module If you want to make use of custom fonts in your PDF file, you will need to push the custom fonts to the AEM Forms CS instance. Please follow the following steps Create a folder called fonts in C:\CloudManager\aem-banking-application Extract the contents of font.zip into the newly created fonts folder Included in the fonts module are some custom fonts.You can add your organization’s custom fonts to the C:\CloudManager\aem-banking-application\fonts\src\main\resources folder of the fonts module Open the C:\CloudManager\aem-banking-application\pom.xml file Add the following line fonts in the modules section of the pom.xml Save your pom.xml Refresh
AEM as a Cloud Service Tutorials - Updating cloud service project with latest archetype by Adobe Docs Abstract Migrating from old aem archetype To update your existing AEM Forms project with the latest maven archetype, you will have to manually copy your code/configurations etc., from the old project to the new project. The following steps were followed to migrate the project created using archetype 30 to archetype 33 project Create maven project using the latest archetype Open command prompt and navigate to c:\cloudmanager Create maven project using the latest archetype. Copy and paste the content of the text file in your command prompt window. You may have to change the DarchetypeVersion=33 depending on the latest version. Archetype 33 includes new AEM Forms themes. Since we are creating the new maven project in the cloudmanager folder which already has aem-banking-application project, you should change the DartifactId from aem-banking-application to something different. I have us
Hi,I'm working on a multi site project (i.e., mysite), which has sites launched in different countries and languages. Let's say we have an existing site in country A and want to create a new one for country B. The country B content team copied content nodes from content/mysite/A/en/ and added them to content/mysite/B/en/ -The site B content structure.The problem: When site B author clicks publish on one of the site B pages, it is causing publish on the original site A pages.Any idea on what could be causing this? Is there an AEM feature that needs to be turned off or it could be custom workflow or any other reasons?Thanks in advance!
Hi Everyone - In AEM 6.5.10, we have configured Asset Expiry Notification job. In the email which we are receiving, there are only 10 image paths even though, for testing, we have configured 15 images to expire. We have tested this scenario multiple times and each time images included in the email vary ( although total images do not exceed 10). I want to understand if there is any specific configuration which we missing to include more than 10 images?
We have a custom Workflow where it move the asset from one location of the dam to other. Once after the move even workflow Status is completed. Asset Status would display as "In workflow" not "New"Added purge event for workflow payload after the completion of the process. Still no go. Any idea how to get rid of "In workflow" Status?Workflow workflow = workItem.getWorkflow();String workflowId = workflow.getId();Dictionary<String, Object> properties = new Hashtable<>();properties.put("EventType", "WorkflowPurgedEvent");properties.put("WorkflowInstanceId", workflowId);properties.put("payloadPath", runPath);Event event = new Event("com/adobe/granite/workflow/event_purge", properties);eventAdmin.postEvent(event);Regards, Mrudul
I am working on replicating data to Kafka using ssl trust store . I would like to know as to what would be the best way to accomplish this .
Hello everyone,I am currently trying to prepare a report where I would be able to see the pages where first instance of an eVar occurred (so basically on which pages an eVar was set and assigned to a user). I tried segmentation with "then" clauses but I was not able to get rid of the next pages seen after this eVar was set.Any ideas?
Hi Team,I wanted to know that Is there anyway we can set the expiry date for AEM pages. I'm aware that we implement the expiry functionality with DAM assets in OSGi configuration (Adobe CQ DAM Expiry Notification). Please suggest. Regards,Raja
Hi Everyone, In our effort to reward the monthly top two users with a gift card for their participation on the Adobe Campaign Standard and/or the Adobe Campaign Community forums, we present to you the two top users in the Community for the month of January 2022 - @johnwi12 and @marcel_szimonisz. Congratulations and a big thanks to both of you for being dedicated and helpful community members of the Adobe Campaign Communities. Become a top user and win every month simply by answering questions and being helpful to other members on this community. Perhaps, YOU could be a winner next month! While we hope that this token of appreciation motivates you to give back to other members, we also hope that you already enjoy helping your Community friends with their queries, as this helps us build a better product for you. We're always open to new ideas for Adobe Campaign, and can't wait
tl;dr: Leading and trailing spaces are valid in an <a href> and the link will still work for the end user. But in a Marketo email, an accidental leading space means the link won’t be tracked. Without reading the official standards, can you describe the differences between a valid URL and a valid href? How about between the href attribute of an HTML A tag and the href IDL attribute of its Location object? My guess is there only a few people in the world who can recite these off the top — members of WHATWG or W3C. I certainly don’t know all this stuff by heart, but reading standards is fun. Anyway, all these are valid A tags that link to the same destination URL: <a href=" https://www.example.com">I am valid.</a> <a href=" https://www.example.com ">So am I.</a> <a href="https://www.example.com ">Me too.</a> <a href="https://www.example.com">And so (obviously!) am I.</a> But only the l
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.