Vivek Sachdeva


Content Migration in AEM using SlingPostServlet

A very basic migration flow looks as follows: In this scenario, you have a CMS(that could be Sitecore, Drupal, Wordpress or any other CMS) which has source content that needs to be migrated to AEM. To achieve this, we typically need to do following things: Get content from source CMS in any format(XML, CSV, etc) Process this...



AEM : Robust Sling Eventing using Sling Jobs

So far we have used OSGi Event Admin for event publishing that uses publisher subscriber model. Though it works really well, there is a downside in using this: - No guarantee of delivery As soon as an event is published, job of the publisher is done. No matter whether any subscriber has worked on it or not, the event just dies...



Vanity URL : Moving from AEM 5.6 to 6.0

Adding vanity URL to pages/nodes, is a great way to get user friendly URLs. All you need to add is “sling:vanityPath” property to the node. For example, "" doesn't seem to be a very user friendly URL. If you want this page to have a simple and concise URL like "", you can...



Debugging Javascript on Android using Chrome

Nowadays almost all applications that we develop are made mobile friendly and a lot of times, everything works perfectly on desktop browsers but not on mobile. Even if we know it is some javascript that is not working as expected, it becomes quite difficult to narrow down on what is causing problem. As we cannot check console there, I...



Custom Transport Handler in CQ5/AEM

While integrating ElasticSearch with AEM, I used custom replication agent, for indexing data to  ElasticSearch server, as replication agent manages a queue in case replication is not successful and tries it again(after specified time). But the problem I faced was that on successful indexing(insertion/updation), ElasticSearch return...


Big Data

Integrating ElasticSearch with AEM

In adaptTo() 2014, I delivered a talk on "Integrating ElasticSearch with AEM". It started with a brief introduction about ElasticSearch, its working and flexibilty when it comes to huge amount of data. Here is a brief review of topics covered after that: How data is analyzed and indexed on the server Integration approaches with AEM...



Day 3 @ adaptTo() 2014 | Grand Finale

After an eventful second day where we had a hackathon in the end to try all the stuff, something interesting was needed for Final Day and that is exactly what we had. Six sessions were scheduled for the day: Dynamic Components using Single-Page-Application Concepts by Andon Sikavica, Bojana Popovska OSGi Asynchronous Services:...



Day 2 @ adaptTo() 2014

A quick recap of Day 2 sessions:Modern Day Operations with Apache Sling by Bertrand DelacretazSling DevOps and clusterGit driven Sling SetupThe Lazy AEM Developer by Feike VisserJSP and Sightly comparisonFeatures of SightlyWrite less code that does more.Mobile App Development with Apache Cordova and AEM by Bruce LefebvreSling IDE...



Day 1 @ adaptTo() 2014 – What a start!!

One of the most famous Apache Sling Tech Meetup started today. As it is meant for people using slick and some part of it, the meetup started with a Rookie session by Sebastian Schlick. The session was mainly meant for attendees who wanted to know about basics of Sling. For others interested ones, AEM certification conducted by Adobe at...



adaptTo() 2014 – Precap

adaptTo() is the premier event for AEM enthusiasts in Berlin. The conference features some exclusive technical sessions about the latest industry innovations and developments on AEM. This three day meetup will commence on September 22 this year. I will be taking a session on "Integrating ElasticSearch with AEM". The session will...



Register Groovy class as Component/Service in CQ

Being a CQ5 developer, I have to register components and services almost everyday. Knowing how powerful Groovy is, I wanted to replace all Java code with Groovy. First step towards it was being able to compile Groovy. I got it to work with the help of this blog. Although I was facing following problem even after this: - I was not...



Change Static Dialog to Dynamic without re-authoring existing content

Almost all the time, we have fields of a component's dialog fixed and any change in it requires change in code. I had a use case in which all the fields had to be populated dynamically from a node that had information in its child nodes. Some challenges that I faced was: - The component was used in lot of places and any change...