{"id":59625,"date":"2024-01-06T16:40:06","date_gmt":"2024-01-06T11:10:06","guid":{"rendered":"https:\/\/www.tothenew.com\/blog\/?p=59625"},"modified":"2024-06-10T15:34:29","modified_gmt":"2024-06-10T10:04:29","slug":"utilizing-the-vlt-rcp-acs-aem-tool-to-sync-content-between-two-aem-environments","status":"publish","type":"post","link":"https:\/\/www.tothenew.com\/blog\/utilizing-the-vlt-rcp-acs-aem-tool-to-sync-content-between-two-aem-environments\/","title":{"rendered":"Utilizing the VLT-RCP: ACS AEM Tool to sync content between two AEM environments"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Content copy is the process of synchronizing your website&#8217;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.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">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.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In this blog, we will discuss one of the ways to migrate vast amounts of content and digital assets between AEM instances.<\/span><\/p>\n<h3><strong>Why Is Content Syncing Important?<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\"><strong>1.<\/strong> Faster reaction to production issues.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>2.<\/strong> Easy to replicate the Production issues in Non-Prod environments.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>3. <\/strong>Best practice to keep the content up to date to perform any Quality tests.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>4. <\/strong>In case of a new development project, newly created content is to be promoted to Production.<\/span><\/p>\n<p><strong>Prerequisites:<\/strong><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Download the ACS Common Tool and install it on the AEM instance (Refer to this link): <\/span><a href=\"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\"><span style=\"font-weight: 400;\">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<\/span><\/a><span style=\"font-weight: 400;\">)<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Download the latest version of VLT-RCP jar file and install the jar file via the Package Manager console or OSGi console. (<\/span><a href=\"https:\/\/mvnrepository.com\/artifact\/org.apache.jackrabbit.vault\/org.apache.jackrabbit.vault.rcp\"><span style=\"font-weight: 400;\">Refer to this link): https:\/\/mvnrepository.com\/artifact\/org.apache.jackrabbit.vault\/org.apache.jackrabbit.vault.rcp<\/span><\/a><span style=\"font-weight: 400;\">)<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Better to download a version higher than 3.1.40.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Ensure the Apache Jackrabbit File Vault RCP Server Bundle is Active.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">The VLT-RCP endpoint URL must be accessible and not blocked via Dispatcher or another reverse proxy.\u00a0<\/span><\/li>\n<\/ul>\n<p><b>Note<\/b><span style=\"font-weight: 400;\">: The VLT RCP servlet endpoint changed from &#8220;\/system\/jackrabbit\/filevault\/rcp&#8221; to &#8220;\/libs\/granite\/packaging\/rcp&#8221; in VLT-RCP 3.1.6.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\"><strong>Steps to perform the Content Copy between Two AEM Instances<\/strong><\/span><\/h3>\n<p><span style=\"font-weight: 400;\"><strong>1.<\/strong> Log in to the AEM instance.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>2.<\/strong> Navigate to the ACS AEM Tools page, using this link &#8211; \/etc\/acs-tools\/vlt-rcp.html<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>3.<\/strong> Access the AEM Tools console from the Touch UI, and navigate to Tools &gt; ACS AEM Tools &gt; VLT-RCP on the left menu.<\/span><\/p>\n<p><strong>4.<\/strong> We should be seeing the below window once all the prerequisites are completed.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-59618 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2023\/12\/1-1024x207.png\" alt=\"\" width=\"625\" height=\"126\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2023\/12\/1-1024x207.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/1-300x61.png 300w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/1-768x155.png 768w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/1-1536x311.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/1-624x126.png 624w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/1.png 1561w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/p>\n<p><span style=\"font-weight: 400;\"><strong>5.<\/strong> To start the sync process, click the &#8220;Add task&#8221; button<\/span><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-59620 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2023\/12\/2-1024x460.png\" alt=\"\" width=\"625\" height=\"281\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2023\/12\/2-1024x460.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/2-300x135.png 300w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/2-768x345.png 768w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/2-1536x691.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/2-624x281.png 624w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/2.png 1797w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/p>\n<p><strong>6. <\/strong>Give the task an appropriate name that includes the complete content or DAM\u00a0 path.<\/p>\n<p><span style=\"font-weight: 400;\"><strong>7. <\/strong>Configure the source server IP address, and port number followed by the content\/DAM path to be copied.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>8. <\/strong>The same content\/DAM path should be updated in the Destination field.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>9. <\/strong>Update the username and password of the user who has sufficient permission to execute this activity.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>10. <\/strong>Create and Modify privileges should be granted to the users for the \/etc\/acs-tools node.<\/span><\/p>\n<p><strong>11. <\/strong>Configure Batch size= 1024 and Throttle = \u20181\u2019 second.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-59621 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2023\/12\/3-1-1024x436.png\" alt=\"\" width=\"625\" height=\"266\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2023\/12\/3-1-1024x436.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/3-1-300x128.png 300w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/3-1-768x327.png 768w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/3-1-1536x654.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/3-1-624x266.png 624w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/3-1.png 1828w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/p>\n<p><span style=\"font-weight: 400;\"><strong>12. <\/strong>Click the &#8220;Create Task&#8221; button.<\/span><\/p>\n<p><strong>13. <\/strong>We shouldn\u2019t be seeing any error messages on the right top of the window.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-59622 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2023\/12\/4-1-1024x139.png\" alt=\"\" width=\"625\" height=\"85\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2023\/12\/4-1-1024x139.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/4-1-300x41.png 300w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/4-1-768x104.png 768w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/4-1-1536x208.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/4-1-624x85.png 624w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/4-1.png 1903w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/p>\n<p><span style=\"font-weight: 400;\"><strong>14. <\/strong>We should be seeing the below window once the task has been created.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-59623 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2023\/12\/5-1024x219.png\" alt=\"\" width=\"625\" height=\"134\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2023\/12\/5-1024x219.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/5-300x64.png 300w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/5-768x165.png 768w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/5-1536x329.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/5-624x134.png 624w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/5.png 1573w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/span><\/p>\n<p><strong>15. <\/strong>Select the &#8220;Start task&#8221; icon.<\/p>\n<p><span style=\"font-weight: 400;\"><strong>16. <\/strong>To see the progress of the content\/DAM copy, click the &#8220;Auto Refresh&#8221; button.<\/span><\/p>\n<p><strong>17. <\/strong>The Task Status window displays the status of the content\/DAM copy.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-59624 size-large\" src=\"\/blog\/wp-ttn-blog\/uploads\/2023\/12\/6-1-1024x211.png\" alt=\"\" width=\"625\" height=\"129\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2023\/12\/6-1-1024x211.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/6-1-300x62.png 300w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/6-1-768x158.png 768w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/6-1-624x128.png 624w, \/blog\/wp-ttn-blog\/uploads\/2023\/12\/6-1.png 1201w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/p>\n<p><span style=\"font-weight: 400;\"><strong>18. <\/strong>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.<\/span><\/p>\n<h3><b>Benefits<\/b><\/h3>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">The AEM source server does not require any installation.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Faster than a package manager, Don\u2019t consume package space like a package manager.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Easy handling and configuration setup is simple to configure in the Destination\/Target Server.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Manage to sync the huge contents in GB as well.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">From the Task Status window, it is easy to monitor how many nodes have been replicated and how many nodes remain.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">The contents\/DAM assets of the Non-Production instances may be effortlessly migrated to the Production instance.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Filter rule option can be used to exclude any path while syncing the paths.<\/span><\/li>\n<\/ul>\n<h3><b>Can be Improved<\/b><\/h3>\n<p><span style=\"font-weight: 400;\"><strong>1. <\/strong>Not suitable for the local environment.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>2. <\/strong>There is no way to re-edit the task once it is created. Always create duplicates of the existing task and edit the values.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>3. <\/strong>It is not supported for syncing users and groups.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>4. <\/strong>VLT is an Adobe product maintained by Adobe, but the Adobe Support team does not support this ACS Common VLT tool.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>5. <\/strong>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.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>6. <\/strong>Risky when we use Production as a destination server, and we may end up losing Production content.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>7. <\/strong>Make sure to disable the DAM update workflow model in the destination instance to avoid triggering image rendition, which may cause a performance issue.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>8. <\/strong>Only IP addresses that use the HTTP protocol can be configured in the destination server. Domain names are not permitted.<\/span><\/p>\n<h3><b>Common Errors or Issues can be resolved<\/b><\/h3>\n<p><b>Error:<\/b><span style=\"font-weight: 400;\"> Zip File is not a Content Package. Missing &#8216;jcr_root&#8217;.<\/span><\/p>\n<p><b>Solution<\/b><span style=\"font-weight: 400;\">: 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.<\/span><\/p>\n<p><b>Error in log file<\/b><span style=\"font-weight: 400;\">: *ERROR* POST \/system\/jackrabbit\/filevault\/rcp HTTP\/1.1] org.apache.jackrabbit.vault.rcp.impl.RcpTaskImpl Error while retrieving src repository :<\/span><\/p>\n<pre><span style=\"font-weight: 400;\"> javax.jcr.RepositoryException: org.apache.http.conn.HttpHostConnectException: Connect to &lt;Source IP:4502&gt; [\/&lt;source ip&gt;] failed: Connection timed out (Connection timed out)<\/span><\/pre>\n<p><b>Solution<\/b><span style=\"font-weight: 400;\">: Enable HTTPS in the source IP field if the SSL managed in the Load balancer.<\/span><\/p>\n<p><b>Error in log file: <\/b><span style=\"font-weight: 400;\">POST \/system\/jackrabbit\/filevault\/rcp HTTP\/1.1] org.apache.jackrabbit.vault.rcp.impl.RcpServlet Error while executing command<\/span><\/p>\n<pre><span style=\"font-weight: 400;\"> create<\/span><span style=\"font-weight: 400;\">java.lang.IllegalArgumentException: Key batchsize is unknown or value is no class java.lang.Long.<\/span><\/pre>\n<p><b>Solution:<\/b><span style=\"font-weight: 400;\"> Keep the value &gt; 0 in the Throttle section<\/span><\/p>\n<p><b>Error in log file:<\/b><span style=\"font-weight: 400;\"> POST \/system\/jackrabbit\/filevault\/rcp HTTP\/1.1] org.apache.jackrabbit.vault.rcp.impl.RcpServlet Error while executing command create<\/span><span style=\"font-weight: 400;\">java.lang.IllegalArgumentException: Task with id already exists<\/span><\/p>\n<p><b>Solution<\/b><span style=\"font-weight: 400;\">: When we create the RCP Vault tasks with an existing name. Try to create a new name for each RCP Vault task..<\/span><\/p>\n<p><b>Error in log file : <\/b><span style=\"font-weight: 400;\">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)<\/span><\/p>\n<p><b>Solution<\/b><span style=\"font-weight: 400;\">: Unable to find the content path in the repository. Check the correct content or DAM path in the task activity.<\/span><\/p>\n<h3><b>Conclusion<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">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. <\/span><\/p>\n<p>&nbsp;<\/p>\n<div class=\"ap-custom-wrapper\"><\/div><!--ap-custom-wrapper-->","protected":false},"excerpt":{"rendered":"<p>Content copy is the process of synchronizing your website&#8217;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 [&hellip;]<\/p>\n","protected":false},"author":1545,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":355},"categories":[5868,4682],"tags":[5592,3573,4847,5594,5593],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/59625"}],"collection":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/users\/1545"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/comments?post=59625"}],"version-history":[{"count":3,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/59625\/revisions"}],"predecessor-version":[{"id":60068,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/59625\/revisions\/60068"}],"wp:attachment":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media?parent=59625"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/categories?post=59625"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/tags?post=59625"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}