Explore product-specific spaces to ask questions, share insights, and learn best practices.
Recently active
AEM | Custom XMP Metadata Writeback by Suman Shekhar Jana Abstract The XMP writeback feature lets you propagate the metadata changes to all or specific renditions of the asset. The feature writes back only those metadata properties that use registered namespaces. In this blog, we will discuss briefly the OOTB feature available in AEM in the first section. In the second section, we’ll discuss a possible use case of customization and how we can customize it. And finally, in the third section, some approaches & implementation methods that an AEM/Java developer must avoid during development which shall help understand the reason for using the approach discussed in the second section. Section A: OOTB XMP Metadata Writeback We have the XMP writeback feature readily available in AEM for use with OOTB DAM Metadata Writeback workflow which comes with a set of predefined parameters. There also exists a launcher to trigger this workflow. Read Full Blog AEM | Custom XMP Metadata Writeback Q
AEM Effective Pagination with Query Builder API by Sourcedcode Abstract There are many ways to implement pagination for AEM content. Effectively choosing the right solution will indeed Bu decrease development time, and promote a performant experience to your end users. AEM has multiple search API’s like xPath, JCR SQL2, Node JCR, Query Builder, etc… But in my opinion, the Query Builder API would be the most effective decision when building a solution with pagination. In AEM, the Query Builder API has emerged as the preferred solution for creating pagination experiences. In this article, we will explore why the Query Builder API stands out as the go-to choice for pagination in AEM. 1. Understanding Pagination in AEM What is pagination? In general, pagination is a process that divides large sets of content into smaller, more manageable sections, commonly referred to as “pages”; but however, with AEM, anything can be paginated. By doing so, users can navigate through content easily, wit
Creating a custom component in AEM by Mircea Dumitrescu Abstract Adobe Experience Manager (AEM) is a content management system that allows developers to create, manage, and deliver digital experiences across different channels. In AEM, developers can create custom components to fulfill any specific business requirement. A custom component is a modular unit which is created to perform a specific task in a webpage. Creating a custom component involves the following steps: Create the component folder and files A component in AEM is represented by a node in the repository, which is essentially a folder with a predefined structure. Let’s say we are creating a “Card” component, which will consist of an image, a title, and a description. We will also provide the option for the content author to choose between a light and dark theme. Navigate to the directory where you want to create your custom component (for example, “/apps/myapp/card”). Create a new folder for your component (for exam
I'm trying to modify the dialog (content.xml) for our navigation Experience Fragment, but I made a change and reverted it, but get this error now:Cannot serve request to in /libs/granite/ui/components/coral/foundation/form/field/field.jspException:java.lang.NullPointerException at com.adobe.granite.ui.components.impl.BaseComponentHelper.include(BaseComponentHelper.java:519) at com.adobe.granite.ui.components.ComponentHelper.include(ComponentHelper.java:675) at com.adobe.granite.ui.components.ComponentHelper.include(ComponentHelper.java:652) at com.adobe.granite.ui.components.ComponentHelper.include(ComponentHelper.java:610) at org.apache.jsp.libs.granite.ui.components.coral.foundation.form.multifield.render_jsp.include(render_jsp.java:59) at org.apache.jsp.libs.granite.ui.components.coral.foundation.form.multifield.render_jsp._jspService(render_jsp.java:318) at org.apache.sling.scripting.jsp.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServl
Hello all! Currently we have developed a custom TextTransformer that replaces some constants in the html. We have noticed that this transformer is not working when personalization is applied to the page and it's loading a variation (The master variation is working ok) We are using context hub for personalization. Any hint how to solve this? Thank you.
Content pages are blank after upgrading the AEM instance to AEM service pack 6.5.15
In our project (AEMaaCS SPA Editor) we see that empty divs are getting generated for all the components. OOTB and custom. I tried installing the WKND project, and the issue is reproducible in WKND as well for all components. Any ideas on why this is added or how to fix this?
Hello Guys, I wanna know the method to customize the actions when invalid error occurred in widget js code, anyone knows?
I am working with AEM 6.2 local instance. Here the Configuration Browser is missing. Can someone guide me on how to enable it so that I can create Editable templates? I would really appreciate it if someone helps me.
Though sometimes overlooked, this out-of-the-box Dashboard provides a great jumping off point to begin to discover gaps in your data and ensuring that you are maximizing your use of Adobe Marketo Engage. To navigate to the Dashboard, click on the Database tab in the upper left-hand corner of your instance. You will immediately see the Dashboard appear. The green area of the graph represents how many records in your instance are considered Marketable, shown in the example below as 90.9% of the database with roughly 14.3M records. If you hover over the graph, Marketo will show you the total amount of records and which ones are Marketable. By taking the number of Marketable records and dividing it by your total amount of records in your instance, you can find what I call your % “Non-Marketable." It is best practice to have a minimum of 80% of your database considered Marketable. The following characteristics can make a record fall into the “Non-Marketable” bucket:
If I had the chops to go full Phillip Marlowe on this I would.... It was a day like any other. I was going through my cases when this dame shows up in my queue, telling me her company name has been changed in Marketo but there's no record of a change in the activity log. The story sounded screwy. There should be a Data Value Change record at the least, but there was nothing. "Please," she said, "You have to help me! This keeps happening and I can't figure out why!" She was a smart cookie, I could tell, but she was in over her head. "I'll take the case," I told her, "and I'll get to the bottom of it." Sorry, that's about as much of a Raymond Chandler impersonation as I am capable of, and it wasn't actually a mystery, because I knew why this was happening, it was just really hard to explain it to the customer. So I did what I always do when I have something to explain - I reached for a wild analogy and went with it. So then, the analogy..
So, your organization is considering or has decided it is time to move onward and upward to a new marketing automation tool - Adobe Marketo Engage - from Hubspot. Congratulations! This is an exciting transition. However, we all know that moving marketing automation “house” can be stressful. If you are considering or currently are making this switch, Adobe Professional Services are here to help with some useful tips and tricks on the process. Preparing for Your Move As a former-MOPs-manager-turned-Adobe-Marketo-Business-Consultant, I have been a part of my fair share of migrations and “swaps” to new tools and have been heavily vested in using HubSpot and Adobe Marketo Engage. While there are differences between these two platforms, I found it much less overwhelming throughout the process to think of this change with the analogy of moving houses. What do I mean by that? It’s going to get worse before it gets better, so hang in there! It’s a great opportunity
While programmatically manipulating content (e.g. emails, landing pages, forms, etc.) via the Marketo REST API is one of the less-common use cases that we see in Consulting, it can be a life saver in some circumstances. I recently needed to add an additional field to every form in a customer’s instance and, given the volume of forms, this would have been a huge and labor-intensive task if done manually through the UI. I'll start with this super-basic form: Adding the field itself via the API is fairly straightforward, though it does, of course, vary based on the type of field and other specific parameters like visibility rules and such. Posting the following adds a Mobile Phone to the form: fieldId=MobilePhone&fieldWidth=432&label=Mobile Phone This adds the field just fine, as seen below: While this might be fine on its own, you'll notice that the new field has been added to the end of the form. There's currently
Hello, I have a problem with my withholding tax formula. What's happening is that it seems to be sorting the amount of withholding tax, and all those not liable for withholding tax are placed at the bottom part, which distorts the breakdown of the computation.it supposed to be like this.But the output become like this.This is the default script under Withholding Tax Rowthis my Data Binding under withholding tax field"$.PaymentAdvice.PaymentExplanation.Item[*].WithholdingTaxAmount"This the default script & Data Binding under Payment Amount"$.PaymentAdvice.PaymentExplanation.Item[*].NetAmount"
Hello Guys,I am trying to fetch auto suggestions with a specified custom index and getting null results.I really appreciate your thoughts on it.SELECT [rep:suggest()] FROM [cq:Page] WHERE SUGGEST('tes') OPTION(INDEX NAME [testindex]) Tried lot of select queries but anything with specific index name giving 0 results but with OTB cqPageLucene giving results. <testindexjcr:primaryType="oak:QueryIndexDefinition"async="[async,nrt]"compatVersion="{Long}2"evaluatePathRestrictions="{Boolean}true"excludedPaths="[/var,/etc/replication,/etc/workflow/instances,/jcr:system]"includedPaths="[/content/test]"queryPaths="/content/test"reindex="{Boolean}false"reindexCount="{Long}17"seed="{Long}-3675128066810099332"type="lucene"><aggregates jcr:primaryType="nt:unstructured"><cq:Page jcr:primaryType="nt:unstructured"><include0jcr:primaryType="nt:unstructured"path="jcr:content"relativeNode="{Boolean}true"/></cq:Page><nt:file jcr:primaryType="nt:unstructured"><
As a former lead digital strategist and MOPs team member, one of the things that kept me up at night was quantifying operational efficiencies. Sure, I could tell you the CPL of my Summer Product Marketing Campaign and even tell you about the ROI on that particular ad we placed in the Industry Trade Magazine, but if you asked me what the value of the time (soft costs) and resources it was taking us to streamline our operational Smart Campaigns or forms, that sent me (any marketing operations manager) into a small panic. Especially since we often need to send that information ASAP for leadership buy in. Sound familiar? First things first, take a deep breath! I am going to help you get out of that panic mode and into a confident results driven MOPs. Now, you may say “hold on, I can’t quantify intangibles!” Well, I am here to tell you everything is measurable. Yes, you can measure everything. So, let’s break it down. It requires a little bit of brainstorming, collaboration, a
Adobe Analytics Labs provides users with forecast time-series data within line visualizations. Time series forecasting analysis shows how data changes over time and can identify the direction in which the data changes. This prototype will automatically populate a line visualization and corresponding Freeform table to model the time-series data, as shown below: While the time-series analysis helps analyze data trends across a specific report suite, it provides insights for a wide range of dimension values, such as Page Name, Entry Page, Marketing Channel, and Campaign Name values. How to Build Time-Series for Page Data Set the date range to a few weeks from the current date to understand how the data will change over time. This example sets the date range for the next seven weeks. Search for the “Page” variable on the left-hand side in the time series prototype. Select the Page you’d like to forecast. Drag and drop the Page Name value at the top of the panel, as
I have a requirement to read data from a csv in AEM DAM environment. The data will then be processed using Python/Databricks and stored elsewhere.Is there an API or equivalent process to read this data using Python?
Hello Team, Welcome to the Adobe Target Community Mentorship program! This is the featured Community Discussion thread for your Adobe Target Community Mentor, Pratheep Arun Raj (@pratheeparunraj), who will be here to guide and support you and your peers with your Adobe Target questions as you prepare for the Adobe Target Business Practitioner Professional Certification (Exam ID: AD0-E408), through to the end of the program. A little bit about your Adobe Target Community Mentor, Pratheep Arun Raj: Enterprise Architect (NextRow Digital) with 12+ years of experience in MIS, Analytics, Personalization and Customer Data Platform | Brand Ambassador, User Group Leader, Community Advisor in Adobe | Founder and Author of Terryn Winter Analytics (Blog Portal) | Holder of 8 Adobe Certifications across Adobe Analytics, Adobe Target, and Adobe Audience Manager. Aspirants mapped to Mentor, Pratheep Arun (@pratheep
Hey there, Please can someone change my experience community name to test97 Many thanks
Hi Campaigners, Check out these simple and effective tips and tricks blog posts by our Campaign Community Advisor, @Marcel_Szimonisz, about Fast select field in query builder Column must appear in GROUP BY clause Troubleshooting web applications Please feel free to reach out in case you have any questions through the below comment section.
Hi Team,Has anyone set up the frontend pipeline in cloud manager?I know the docs are available and it is easy but we have a submodule repo “common” as well under the main repo which doesn't have ui.frontend.So when I run the pipeline, it tries to find the package.json under common as well which actually is not available.But we want the pipeline to read ui.frontend which is in the main repo only.In the code location option I am putting - /ui.frontend Thank you
Hello Team, Welcome to the Adobe Target Community Mentorship program! This is the featured Community Discussion thread for your Adobe Target Community Mentor, Rajneesh Gautaum ( @rajneesh_gautam_), who will be here to guide and support you and your peers with your Adobe Target questions as you prepare for the Adobe Target Business Practitioner Professional Certification (Exam ID: AD0-E408), through to the end of the program. A little bit about your Adobe Target Community Mentor, Rajneesh Gautaum: I am an experienced digital marketing professional dedicated to help create intelligent solutions to solve business challenges through innovative use of data. Leveraging my deep digital marketing experience and knowledge across owned and paid media, I help business and brands to fathom data intelligence by building customer-centric experiences and using analytical thinking as a strategic asset. Passionate about training and coaching high
Use this thread to ask any questions related to the soon to be released "Getting started with Real-Time CDP for Admins" course on Experience League. Experts are monitoring this thread to ensure your questions are answered.
AEM Cloud Service - Run Assets Bulk Import Using PostMan by Sreekanth Choudry Nalabotu Abstract Kickoff Bulk Import from AEM @Reference private SlingRequestProcessor slingRequestProcessor; @Reference private RequestResponseFactory requestResponseFactory; private static final String IMPORT_JOB_URL = "/conf/global/settings/dam/import/bulk-import-config-name.importJob.json"; private void runBulkImport(final ResourceResolver resolver){ final Map<String, Object> requestParams = new ConcurrentHashMap<>(); requestParams.put("operation", "run"); final HttpServletRequest request = requestResponseFactory.createRequest("POST", IMPORT_JOB_URL, requestParams); final ByteArrayOutputStream bos = new ByteArrayOutputStream(); final HttpServletResponse response = this.requestResponseFactory.createResponse(bos); try { slingRequestProcessor.processRequest(request, response, resolver); } catch (ServletException | IOException e) { logger.error("Error while running bulk import ", e); } } R
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.