Utilizing the VLT-RCP: ACS AEM Tool to sync content between two AEM environments
Content copy is the process of synchronizing your website’s contents and digital assets from one AEM instance to another. This can be accomplished manually or automatically. One of the simplest ways to perform manual processes is to use Package Manager.
Packages provide a straightforward approach to migrating contents from one instance to another. Creating and installing packages with a large amount of content and DAM assets would be challenging. Package Manager is preferred when the transfer data is small.
In this blog, we will discuss one of the ways to migrate vast amounts of content and digital assets between AEM instances.
Why Is Content Syncing Important?
1. Faster reaction to production issues.
2. Easy to replicate the Production issues in Non-Prod environments.
3. Best practice to keep the content up to date to perform any Quality tests.
4. In case of a new development project, newly created content is to be promoted to Production.
Prerequisites:
- Download the ACS Common Tool and install it on the AEM instance (Refer to this link): https://github.com/Adobe-Consulting-Services/acs-aem-tools/releases/download/acs-aem-tools-1.0.4/acs-aem-tools-content-1.0.4.zip)
- Download the latest version of VLT-RCP jar file and install the jar file via the Package Manager console or OSGi console. (Refer to this link): https://mvnrepository.com/artifact/org.apache.jackrabbit.vault/org.apache.jackrabbit.vault.rcp)
- Better to download a version higher than 3.1.40.
- Ensure the Apache Jackrabbit File Vault RCP Server Bundle is Active.
- The VLT-RCP endpoint URL must be accessible and not blocked via Dispatcher or another reverse proxy.
Note: The VLT RCP servlet endpoint changed from “/system/jackrabbit/filevault/rcp” to “/libs/granite/packaging/rcp” in VLT-RCP 3.1.6.
Steps to perform the Content Copy between Two AEM Instances
1. Log in to the AEM instance.
2. Navigate to the ACS AEM Tools page, using this link – /etc/acs-tools/vlt-rcp.html
3. Access the AEM Tools console from the Touch UI, and navigate to Tools > ACS AEM Tools > VLT-RCP on the left menu.
4. We should be seeing the below window once all the prerequisites are completed.
5. To start the sync process, click the “Add task” button
6. Give the task an appropriate name that includes the complete content or DAM path.
7. Configure the source server IP address, and port number followed by the content/DAM path to be copied.
8. The same content/DAM path should be updated in the Destination field.
9. Update the username and password of the user who has sufficient permission to execute this activity.
10. Create and Modify privileges should be granted to the users for the /etc/acs-tools node.
11. Configure Batch size= 1024 and Throttle = ‘1’ second.
12. Click the “Create Task” button.
13. We shouldn’t be seeing any error messages on the right top of the window.
14. We should be seeing the below window once the task has been created.
15. Select the “Start task” icon.
16. To see the progress of the content/DAM copy, click the “Auto Refresh” button.
17. The Task Status window displays the status of the content/DAM copy.
18. Make sure to disable the DAM update workflow model and workflow launcher components in the destination instance when using this tool to sync the DAM assets.
Benefits
- The AEM source server does not require any installation.
- Faster than a package manager, Don’t consume package space like a package manager.
- Easy handling and configuration setup is simple to configure in the Destination/Target Server.
- Manage to sync the huge contents in GB as well.
- From the Task Status window, it is easy to monitor how many nodes have been replicated and how many nodes remain.
- The contents/DAM assets of the Non-Production instances may be effortlessly migrated to the Production instance.
- Filter rule option can be used to exclude any path while syncing the paths.
Can be Improved
1. Not suitable for the local environment.
2. There is no way to re-edit the task once it is created. Always create duplicates of the existing task and edit the values.
3. It is not supported for syncing users and groups.
4. VLT is an Adobe product maintained by Adobe, but the Adobe Support team does not support this ACS Common VLT tool.
5. When configuring this setup on the AMS platform, there is a network VPC limitation. Contact Adobe CSE to make the appropriate VPC and IP whitelisting modifications.
6. Risky when we use Production as a destination server, and we may end up losing Production content.
7. Make sure to disable the DAM update workflow model in the destination instance to avoid triggering image rendition, which may cause a performance issue.
8. Only IP addresses that use the HTTP protocol can be configured in the destination server. Domain names are not permitted.
Common Errors or Issues can be resolved
Error: Zip File is not a Content Package. Missing ‘jcr_root’.
Solution: We may have ended up with this error while installing the VLT-RCP jar file via Package Manager console. To resolve this error, install the executable jar file via OSGi console.
Error in log file: *ERROR* POST /system/jackrabbit/filevault/rcp HTTP/1.1] org.apache.jackrabbit.vault.rcp.impl.RcpTaskImpl Error while retrieving src repository :
javax.jcr.RepositoryException: org.apache.http.conn.HttpHostConnectException: Connect to <Source IP:4502> [/<source ip>] failed: Connection timed out (Connection timed out)
Solution: Enable HTTPS in the source IP field if the SSL managed in the Load balancer.
Error in log file: POST /system/jackrabbit/filevault/rcp HTTP/1.1] org.apache.jackrabbit.vault.rcp.impl.RcpServlet Error while executing command
createjava.lang.IllegalArgumentException: Key batchsize is unknown or value is no class java.lang.Long.
Solution: Keep the value > 0 in the Throttle section
Error in log file: POST /system/jackrabbit/filevault/rcp HTTP/1.1] org.apache.jackrabbit.vault.rcp.impl.RcpServlet Error while executing command createjava.lang.IllegalArgumentException: Task with id already exists
Solution: When we create the RCP Vault tasks with an existing name. Try to create a new name for each RCP Vault task..
Error in log file : POST /system/jackrabbit/filevault/rcp HTTP/1.1] org.apache.jackrabbit.vault.rcp.impl.RcpTaskImpl Error while retrieving src repository https://x.xx.xx.xxx/crx/server/crx.default/jcr:root/content/test-content: javax.jcr.RepositoryException: org.apache.http.conn.HttpHostConnectException: Connect to xx.xx.xx.xxx:443 failed: Connection timed out (Connection timed out)
Solution: Unable to find the content path in the repository. Check the correct content or DAM path in the task activity.
Conclusion
The optimal choice for content syncing relies on the requirements, instance size, and project state, not on the positive aspects and drawbacks mentioned above. Package Manager is the most convenient approach to transport the smallest amount of content or a small list of assets. However, if you need to transport huge amounts of content and assets, Vault RCP can be used.