Expand my Community achievements bar.

Programatically replicate the asset including all the sub asets


Level 3


I am using the Replicator API to replicate the asset like below.

replicator.replicate(session, ReplicationActionType.ACTIVATE, asset.getPath());

but somehow subassets are not replicated. Please confirm is there we can replicate all the subassets when the asset has been activated.

I am using the below code and achieving it now. Is there any better way the API or AEM provides. please help.

        Resource resource = resolver.resolve(assetPath);

                   if(resource != null){
                       Asset parentAsset = resource.adaptTo(Asset.class);
                       if(parentAsset != null){
                           Collection<Asset> subAssetCollection = parentAsset.getSubAssets();
                           for(Asset subAsset : subAssetCollection){
                               replicator.replicate(session, ReplicationActionType.ACTIVATE, subAsset.getPath());

3 Replies


Level 10

It looks fine to me, 

You are using right asset API and replicator as well.

Other community member will share if there is better way



[No solution, but good to refer this]


Please read this post :

Link:- http://stackoverflow.com/questions/18955982/how-to-activate-programmatically-a-page-in-cq5-workflow

//Use Replicator OSGi service:

@Component public class MyComponent { @Reference private Replicator replicator; private void activatePage(Session session) { //... replicator.replicate(session, ReplicationActionType.ACTIVATE, pathToPage); //... } }

Kautuk Sahni


Level 10

This is a good use case to add to our community articles.