Ensure Service User – An ACS AEM Commons Utility


Prior to AEM 6.2, developers used administrative resource resolver to access JCR programmatically. 

Problem Statement: 

Let us assume that a developer needs to access the resource from content path programmatically. Before AEM 6.2, administrative resource resolver was one of the ways to achieve the same. In addition to providing access to the content path(s), administrative resource resolver provides access to the complete repository thereby making the application prone to making undesired changes (e.g. nodes under /libs, /apps etc.). 

Since AEM 6.2, administrative resource resolver has been deprecated by Adobe and to address the above issue Adobe introduced “Service User”.  

Service User: 

A service user is a JCR user with no set password and limited privileges necessary to perform a specific task. No password requirement means that it will not be possible to login with a service user. 

JCR is accessed using service users instead of the administrative resource resolver. 

Below are two plus points about Service User. 

  • A service user per bundle with a limited set of permissions. 
  • Does not have password so no one can login. 

Problems With Service User: 

  • Manual activity on every server. 
  • Assign permission on every server. 
  • Management of these permissions is prone to error. 

Again, there is lot of manual work for developers to set up service user in different environments. 

To overcome this problem, ACS Common provides a different way to bootstrap AEM projects with different functionality, a set of reusable components and AEM development kit.  

Here, we are going to discuss great utilities of ACS common named “Ensure Service User”.  


Ensure Authorizable or Ensure Service User: 

Ensure Service User is provided by ACS commons. Here is some points about Ensure Service User. 

  • Create once and use everywhere. 
  • Define service user and their ACL in OSGi configuration. 
  • Less error prone and easy to maintain. 
  • You can manage the group and hierarchies for service user. 
  • Available since version v3.8.0. 


How to use: 

Here step by step procedure are described to use “Ensure Service User”. 

  1. Create an OSGi configuration for service user using factory configuration 


Here please note followings points: 

Principal Name: 

Principal name is name of your service user. It can be just principal name or principal name with relative path or principal name with absolute path.  

Remember, service users may only exit under /home/users/system” path. 

For example: 

     1. Your Inputmeetup-service-user  

Service User will be created under path: “/home/users/system/meetup-service-user” 

     2. Your Input: /my-company/meetup-service-user or my-company/meetup-service-user or /my-company/meetup-service-user 

Service User will be created under path: “/home/users/system/my-company/meetup-service-user” 

     3. Your Input: /home/users/system/my-company/meetup-service-user 

Service User will be created under path: “/home/users/system/my-company/meetup-service-user” 


  • If a system user exists with the same principal name at a DIFFERENT location, this tool assumes that service user is correct and not attempt to move it to the specified location in this configuration. 
  • If a principal name is specified for an AEM or ACS AEM Commons provided system user, the ensure user process will fail. This list may not always be exhaustive and up to date and meant to help protect against collisions. 


ACS AEM Commons provide the facility to add or remove Service User. Here we are creating the service user. 

Option “add”: Ensure the existence of service user. 

Option “remove”: Ensure that service user is removed. 


Two options are available, we can set it either true or false. By default, it is true. 

Option “true”: When set to true, the insurance is performed whenever this bundle is loaded. 


Aces:  Array of ACE (access control entry) definitions to ensure for the principal. 

Format: type=allow;privileges=jcr:read,rep:write;path=/content/foo;rep:glob=/jcr:content/* 

  • type: allow OR deny, it is required property. 
  • privileges: comma delimited list of valid JCR privileges, it is required property. 
  • path: absolute content path which the ACE will be applied, it is required property.


     1. Service user mapping with OSGi Service. 

Map your service user with Resource resolver service. 


     2. Use this service to get resource resolver instance. 


A working demo present on bitbucket https://bitbucket.org/argildx/aemdev-meetup-s1/overview 

Ensure Service User – An ACS AEM Commons Utility

Bulk Editor Extension for AEM

, ,

Bulk editor is a highly functional tool for efficient editing of multiple node properties in AEM. It lets you add new properties and edit the existing ones. The searching of nodes is also optimized with the use of GQL (Google Query Language). 

At Argil DX, we were using the bulk editor for quick data updates when we came across two obvious and relevant issues:

  • Bulk editor’s inability to add multi-value node properties 
  • Only ‘String’ datatype is allowed 

Seems like Adobe has also stopped any further development for the bulk editor post AEM 6.4

An Extension that Makes the Existing Bulk Editor More Functional

We thought of making some minimal (but important) changes to the existing code base to rectify the above-mentioned issues.

Post-Modification Look 

Image 1: Bulk editor after modification. 

Here you can see the changed interface for “Column Properties”. Now you can add “Property Name” along with the data-type (selectable from the dropdown) and continue editing the existing ones (Refer img-2). 

Image 2: A view of the new interface for column properties. 

To add multi-value properties, you’ll just have to surround your data (comma separated values ) with ‘[‘ and ‘]’ (Refer “prop1” in img-3). 

Image 3: A screenshot of the multiple value adding process. 

The exported .tsv file looks like: 

Image 4: An exported .tsv file. 

If you wish to import a new .tsv file, design it similar to “img-4”. 


This modified version of the bulk editor is a part of the already extensive ADX-Tools.

To download the ADX Tools package submit a request and we will deliver the package to your inbox within 15 working days.

Get free consultation for all your AEM related queries

Related Blogs:

We at Argil DX are dedicated to improving your AEM experience and usability. Get in touch with us to know more about our services and AEM expertise.

To download the ADX Tools package submit a request and we will deliver the package on your email within 15 work days.

Generate Live Usage Report of Multiple Components with a Click

, ,

Enriching the features of OOTB Live Component Usage in AEM by providing enhanced features and functionality.

Content authors or editors usually find themselves in scenarios where there is a requirement for reporting live usage of components on the content pages. With OOTB Live Component Usage, we can get the report of a single component’s live usage. Wouldn’t it be better if we could get multi-site and multi-component live usage report, and export this report for further usage? Also, wouldn’t it be great if you could check the live usage of nested components present in either iparsys or template level in AEM? The New Components Usage Report is an easy-to-use console optimized to fetch results quickly and generate detailed reports.


  • To provide editors or admins the option to select multiple projects to get live report of multiple components.
  • To improve the available features of OOTB Live Usage by adding comment option for each component.



  1. The administrator will have to configure the projects for which the authors or editors can generate the live usage report. Go to system console (<host>:<port>/system/console/configMgr) and search for ‘ADX-Utilities Components Usage Project Name Service’. Admins can add any number of projects in the field ‘Project names’ (multi-field) in the format /apps/projectName.component usage report tool in AEM
  2.  The users can select any number of projects from the dropdown available in the tool. And click on ‘Show Components’ to get the list of components present in the project(s) selected.component usage report tool for AEM
  3. It will open a user-friendly component selector in which the editor can choose any number of components for which they want the live usage report. Editors will also have the ability to give comments respective to the components.
    component usage report
  4. The users can enter various content root paths and click on ‘Generate Report’. A key highlight of the tool is that the report will also include results of nested components such as embedded components in templates, components present in iparsys or experience fragments. To include the report of embedded components present in a container, the admin has to enter the details of those components in a configuration ‘ADX-Utilities Embedded Component Report Service’.
  5. For listing embedded components as stated in the above point, the list of embedded components should be added in the field ‘Component names’ (multifield) in the format,
    Embedded Component Resourcetype(projectName/pathToEmbeddedComponent) = Container Component Resourcetype(projectName/pathToContainerComponent).
  6. A detailed report is provided for the components selected giving relevant information about the usage. The results can be sorted or filtered based on any keyword.
  7. Users have an option to export the report as csv.


Key features of the tool:

  • Multi-site multi-component live usage report
  • Option for editors or authors to give relevant comments
  • Export to csv option
  • Easy-to-use component selector
  • Detailed result for nested components i.e. embedded components at template level, components present in iparsys or experience fragments, etc.


The video demonstration of the tool can be viewed at:

Related Blogs:

We at Argil DX are dedicated to improving your AEM experience and usability. Get in touch with us to know more about our services and AEM expertise.

To download the ADX Tools package submit a request and we will deliver the package on your email within 15 work days.


Simplifying Package Creation in AEM

, ,

Backing up pages before updating them during a package deployment is an advisable practice. You can always use the backup to restore your pages if anything goes wrong (you never know).

But the list of paths for package creation is usually long, and manual package creation with such a list becomes tedious and time-consuming for content authors.


Create an AEM package from paths (filters) present in an Excel file.


Argil DX presents a tool with a user-friendly console to help users create AEM packages in a simpler and quicker manner through the following input fields:

  • Name – name of the package
  • Version – version of the package
  • Group – group of the package
  • Access Control Handling – permissions to handle the nodes
  • Excel file – file containing fields such as Path, Include child node, Include Image Renditions


All of the fields have default values except the Excel file.

ADX Selective Content Packaging Tool

A sample Excel file can be downloaded using the ‘Sample’ button present after the description of the file field.


The Excel file contains 3 fields:

  1. Path – the absolute path of the node
  2. Include Child Node (Yes/No) – asking for tree activation on the specified path
  3. Include DAM Renditions (if applicable) (Yes/No) – AEM workflows automatically create DAM renditions on every server (unless altered), but users can opt not to include them by entering ‘No’ in this field.


Selective Content Packaging in AEM


The tool also has a history page with a record of all the packages created using it. We can see the logs of operations as well as download the old package.

Selective Content Packaging in AEM

The history icon is present on the top right corner of the tool.

Advantages of the tool:

  • Easy-to-use console for package creation
  • Packages and their respective logs are accessible from remote locations
  • Create space-saver packages by eliminating renditions of assets
  • Easy searching and sorting in logs
  • History page for package creation


The video demonstration of the tool can be viewed below:

Related Blogs:

We at Argil DX are dedicated to improving your AEM experience and usability. Get in touch with us to know more about our services and AEM expertise.

To download the ADX Tools package submit a request and we will deliver the package on your email within 15 work days.


Delete Multiple Unwanted Packages in AEM Instances at Once

, ,

How many of us would prefer to work with a faster AEM instance without spending a dime on the infrastructure? All of us would.

So, to take away all your hassles related to package deletion, we present you with a tool that will enable you to perform bulk package purging.


To get a list of packages which are consuming maximum size on an AEM instance and to have the ability to delete multiple packages at once.


At Argil DX, we have made a tool to delete multiple packages of AEM with a single click of a button. This tool provides a simplified console to monitor and manage AEM Packages, the list of packages will be sorted by size and collected according to their package group.


To delete package(s), just select their respective checkboxes and click on ‘Delete’ button and all the selected packages will be deleted in a moment. Along with delete operation, we can also download any package for backup before deleting it.

Package purging in AEM


Package Purging Tool provides various details of a package viz.

  • Name-Version
  • Group
  • Last Modified Time
  • Last Replicated Time
  • Created By
  • Is Installed
  • Size


A user can further search or sort packages within the list through any of the above-mentioned details.

Package purging in AEM


Packages are listed in two sections – the first section named ‘All’ contains all the packages and the second section contains the packages collected based on their package-group. The number against the name of each set represents the number of packages in it.


For reporting and documenting purposes, package lists can be exported in PDF and Excel formats by clicking on the ‘Excel’ and ‘PDF’ buttons on the top of every list.

Package Purging in AEM


Steps to purge packages :

1. Select Package(s) by clicking on checkbox(es).

Package Purging in AEM      2. Click on the delete button.

Package Purging in AEM       3. On the confirmation screen validate and click on “Delete” button. Sit back and relax, packages will be deleted within a few moments.


Package purging in AEM

Tool Guide

            A tool guide at the top-right helps users understand the tool and use it effectively.

Package Purging in AEM

Package Purging in AEMPackage Purging in AEM


You can find the demonstration video of the same below

Related Blogs:


We at Argil DX are dedicated to improving your AEM experience and usability. Get in touch with us to know more about our services and AEM expertise.

To download the ADX Tools package submit a request and we will deliver the package on your email within 15 work days.


Selective Replication: Bulk Content Replication Made Easier

, ,

Selective Replication tool, which is one of the tools in the ADX Tools package, simplifies bulk activation, deactivation and delete operations for AEM users.

Selective Replication Tool augments AEM Activation Tree with some useful additional features. AEM Activation Tree is a replication console to activate the entire tree in one action. Selective Replication tool adds to the utilities of bulk activation, deactivation and delete operations. The task gets even simpler when there is an option to selectively choose the root paths to replicate, with an added advantage of selecting the replication agents. To further apply the feature of selectivity, users have the option to include or exclude child node or DAM assets.


To perform bulk activation, deactivation or delete operations on a path-task list uploaded via Excel with the ability to select relevant replication agents.


  1. The simplest part of the tool is its input, which is uploading an Excel file containing the path-task list. A sample excel file can be downloaded using the ‘Sample’ button present in the description.


ADX Tools in AEM: Selective Replication

Excel file contains the following fields:

  • Path – root path for operation
  • Include Children – option to include child nodes of content or not
  • Include DAM Assets – option to include DAM assets of content or not
  • Action Type – defining the type of action (Activate, Deactivate, Delete)2. The tool gives an option to select multiple replication agents from the available list.


  1. We can get detailed replication logs with the option to export it as an Excel file or pdf.

  1. Users also get the option to see the history of the operations performed by clicking on the history icon present on the top right corner of the tool along with the tool guide.


Each of the individual logs can be viewed by clicking on the respective Logs icon. This action will retrieve the history of that particular operation.


Key Highlights of the tool:

  • Option to selectively choose the root paths for replication
  • The advantage of choosing relevant replication agents
  • Simple path-task list input via Excel
  • Include or exclude child nodes/DAM assets
  • Detailed replication logs of each root path
  • History of replication actions performed via this tool


The video demonstration of the tool can be viewed at:

Related Blogs:

We at Argil DX are dedicated to improving your AEM experience and usability. Get in touch with us to know more about our services and AEM expertise.

To download the ADX Tools package submit a request and we will deliver the package on your email within 15 work days.


Advent of Add-on Advantages in AEM: ADX Tools

, ,

Adobe Experience Manager (AEM) provides a  multitude of OOTB features to comfort the lives of users in various fields, but enriching those features by providing user-friendly consoles for specific tasks would be like an icing on the cake!

During release activities, there are many scenarios where admins or editors wish for an easy to use console as experiencing a productive workday feels euphoric for everyone! Sometimes, the administrator also wishes for wizards to ease up their tasks for the maintenance of AEM.

As a popular saying goes,

‘Good things come in small packages’,

ADX Tools is an amalgamation of a myriad of features in AEM developed at Argil DX, that would garnish the OOTB AEM features giving users a friendly console and quick results to save time. It is a package providing various wizards to cater to the requirements of admins or authors to make some of their tasks easier.

Let’s take a sneak peek into the utility of the tools and problems that they resolve!

Packages in AEM can become obsolete after some time and admins will accept that they consume a lot of repository space. Sometimes, it is difficult to debug the problem of growing repository size. Package Purging Tool is a silver lining in the cloud for admin as it provides a console to deal with this issue and helps purge packages in bulk.

AEM Tree Activation can be enhanced by adding some easy-to-use features and providing answers to various queries of replication. Many questions revolve around selecting the replication paths or getting a console for bulk activation, deactivation or delete operations and choosing relevant replication agents. Selective Replication Tool is a one-stop solution for all the replication activities.

There are instances when AEM admins want to manage AEM users conveniently from a single console i.e. be able to disable the users who are no longer required to login into the system or delete the users who have left the organization or enable some users who have just switched the projects. Also, admins might want to look at the percentage of users logged into the system since a specified time. User Status Report will give a detailed list of active, inactive, disabled or system users based on their login time.

It is usually a tough task to create packages by adding a huge list of filters manually and managing the child nodes and DAM renditions. Selective Content Packaging automates this task and simplifies the burden of content authors to create packages from an excel file as input. It also gives detailed packaging logs and history of packages created.

During release procedures, admins require a list of pages that have been modified or reauthored since the last release to be able to package them. Or a list of pages that have been modified but not replicated yet. Content Report is an answer to all such reporting queries to make the lives of content authors simpler in terms of managing the project.

OOTB Live Usage Report shows the live usage of components on pages. Sometimes, due to heavy content on the site, the response is slow. Wouldn’t it be easier for authors to get live usage of multiple components belonging to multiple sites all in one single click? The New Components Usage Report is a console for providing multi-site, multi-component report with many more interesting features.


So, ADX AEM Tools is a consolidation of some additional features that enriches the OOTB features in AEM and can provide a real deal of ease for users.

Downloading and installing the ADX Tools is fairly simple. You can watch the step-by-step video of the ADX Tools installation.

Related Blogs:

We at Argil DX are dedicated to improving your AEM experience and usability. Get in touch with us to know more about our services and AEM expertise.

To download the ADX Tools package submit a request and we will deliver the package on your email within 15 work days.

Beginners Guide to React JS

React is a JavaScript library for creating user interfaces. Its core principles are declarative code, efficiency, and flexibility. Simply specify what your component looks like and React will keep it up-to-date when the underlying data changes.

– Official React Documentation

React JS and React have been used interchangeably throughout the blog and mean the same thing.

React Native: React code that is usable across the web and  mobile.

Angular: MVC framework for UI.

Transpiler: A type of compiler that takes the source code of a program written in one programming language as its input and produces the equivalent source code in another programming language. Transpiler and compiler can be used interchangeably.

DOM: Document Object Model is a tree of HTML objects.

Note: This blog has been written entirely from my perspective and is what I feel as a newbie to the world of React.

Let’s get started.

There’s a lot of good buzz about React out there.

It seems like React JS has become a library many want to try out but somehow, it’s always out of reach. This blog is aimed towards the audience who is looking for a perfect mix of theory and hands-on.

What is React?

React provides you a templating language and some function holders to primarily render HTML. That’s all React yields, HTML. React is mainly the view layer. React is listed in the same verticals as other JavaScript frameworks but ‘React vs Angular’ doesn’t make sense at all because they aren’t directly comparable. Angular is a complete framework (including the view layer).

Is it worth the hype? Why is it getting so popular?

These are some of the benefits which make React JS standout among its contemporaries:

  • Easy to learn and easy to use:  Being able to do awesome things is great, but only if you don’t have to spend the rest of your life becoming perfect in a new technology. React is easy to learn and easy to use and comes with a good supply of documentation and an exponentially growing community.

    Github Stars History for Angular, React & Vue (Source)

  • Components: Everything in React is a component (will be explained later on). They are like the basic building blocks for your application . Components help you break your design into smaller parts that can be worked upon.
  • The Virtual DOM: One of the really cool parts of React is the virtual DOM. Usually, when you develop an app that has a lot of user interaction and data changes, you have to carefully notice how your app’ design is going to influence performance. Even with quick client side browsers, extensive DOM manipulation can be a performance deteriorator and result in an annoying user experience. Worse, because the DOM is tree-structured, simple changes at the top level can cause huge problems. React caters this by using a virtual DOM. This is, as the name implies, a virtual representation of the DOM. Any new view changes are first performed on the virtual DOM, which lives in memory and not on your screen.

An efficient algorithm then determines the changes made to the virtual DOM to identify the changes that need to be made to the real DOM. It then determines the most suitable way to make these changes and then applies only those changes to the real DOM. This ensures a minimum update time to the real DOM, providing higher performance and a cleaner user experience all around.

All that is fine but what’s up with all that jargon ?

  • Component: A React app comprises of components. A component is a reusable piece of code which defines how some features should look. All the parts you see in the below picture can be broken down into different components like the button, the display panel, all clubbed as a single component.
  • Properties (props): We can pass data to our components that remain unchanged throughout the lifecycle of that component. We can even pass methods as data in our props.
  • State: state, as the name suggests, defines the state of a component. Unlike props, they can change on user-based interactions and internal calculations. Think of them as observable data that control the behaviour of the component. 
  • JSX: It is basically a flavour of JS that can constitute HTML as well. It is highly intelligible. JSX (JavaScript Extended) is not understood by the browser. So, the browser doesn’t freak out, we use a transpiler like Babel which converts JSX into regular JS and renders HTML out of it. 

We will take up something to code on React in the next part of this blog…

My view about React Js 

Coming from JAVA background and having noob level knowledge about fronted (JS, CSS, HTML) lingo, React JS didn’t feel like something that couldn’t be done. A basic syntax of JS (maybe ECMA 6) is what you need to know to get started.

Effort required is a lot less as compared to other JS libraries and frameworks ( Angular for example).
Also when you know that you are getting into something that is largely industry friendly and has a great developer community, it just feels the right thing to do.
React JS when combined with react-router and react-bootstrap, serves as a complete package.

When I first encountered JSX as HTML being written inside JS, the idea itself sounded crazy. I thought why would anybody want that. But
after spending some time with it, everything made a lot of sense. The ability to re-render components based on state changes in the most efficient way is what makes React stand apart.