Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

sync content between 2 AEM instances using a date range (or maybe just a start date or just end date)

Avatar

Level 9

scenario:

I have 2 AEM environments: pre-prod and prod

 

pre-prod = environment which contains all the latest code/configuration changes (this includes feature requests and bug fixes BUT not the latest content).

 

prod = currently running environment that's available to the public. (Not so latest code/configuration BUT latest content)

 

Our current architecture is moving to a new one where pre-prod and prod are switch (The platform is calling it a blue/green deployment). This means I need to do a content sync between the 2 environments before the switch.

 

We've been using VLT in our testing and I think VLT will be used for the initial content sync. What I'm unsure of is the subsequent content syncs required.

 

Thank you.

 

EDIT: not sure if this matter but we're still on 6.4.x

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

Hi @jayv25585659 ,
CRX2Oak is a very good tool to migrate data between different repositories and best suited for AEM6.4
https://experienceleague.adobe.com/docs/experience-manager-65/deploying/upgrading/using-crx2oak.html...


We have used below command line script on windows for content migration between AEM6.4 repositories and it was really smooth migration.

BrijeshYadav_0-1669191575258.png

set /p answer=Are your sure you want to continue (Y/N)?

@ECHO OFF
if "%answer:~,1%"== "Y" GOTO migration
if not "%answer:~,1%"=="Y" ECHO "Process End"
GOTO END

:migration
@ECHO ON

set source=Path_to_your_source_AEM/crx-quickstart/repository
set target=Path_to_your_target_AEM/crx-quickstart/repository
set oakTool=crx2oak-1.8.6-all-in-one.jar

java -Xmx4092m -jar %oakTool% --include-paths=/content/mywebsite/rootlocation segment-old:%source% %target% --datastore %target%/datastore --copy-versions=false --copy-orphaned-versions=false >> migrationlogs.log

@ECHO OFF
:END
exit /b

View solution in original post

4 Replies

Avatar

Community Advisor

@jayv25585659 

 

To sync content from one instance to another, please use below 2 tools if you are having large amount of data.

 

1. Create a package and install it in author - if you have small amount of data.

2. Use Adobe recommended tools such as Grabbit and File Valut tools to synccontent if you have large data.

Please find below information to understand and configure above mentioned tools in AEM.

 

https://relevancelab.com/2019/07/04/get-moving-with-aem-and-grabbit/

https://experienceleague.adobe.com/docs/experience-manager-64/developing/devtools/ht-vlttool.html?la...

 

I hope this helps.

Avatar

Level 4

You can create a Jenkins pipeline. The pipeline can be triggered any time and this would help in future as well.

 

Write a shell script (CURL commands) & add it to jenkins job which will create a package from prod and deploy/install it on non prod environments and clear respective Dispatcher cache as well.

 

Common CURL Commands:

Upload a new package

curl -u admin:admin -F package=@"name_of_package.zip" http://localhost:4502/crx/packmgr/service/.json/?cmd=upload

Install an existing package

curl -u admin:admin -X POST http://localhost:4502/crx/packmgr/service/.json/etc/packages/export/name of package?cmd=install

Upload a package AND install

-F force=true -F install=true http://localhost:4502/crx/packmgr/service.jsp
 

Upload a package DO NOT install

curl -u admin:admin -F file=@"name of zip file" -F name="name of package"
-F force=true -F install=false http://localhost:4502/crx/packmgr/service.jsp

Rebuild an existing package in CQ

curl -u admin:admin -X POST http://localhost:4502/crx/packmgr/service/.json/etc/packages/name_of_package.zip?cmd=build

Download (the package)

curl -u admin:admin http://localhost:4502/etc/packages/export/name_of_package.zip  name of local package file 

 

Avatar

Correct answer by
Community Advisor

Hi @jayv25585659 ,
CRX2Oak is a very good tool to migrate data between different repositories and best suited for AEM6.4
https://experienceleague.adobe.com/docs/experience-manager-65/deploying/upgrading/using-crx2oak.html...


We have used below command line script on windows for content migration between AEM6.4 repositories and it was really smooth migration.

BrijeshYadav_0-1669191575258.png

set /p answer=Are your sure you want to continue (Y/N)?

@ECHO OFF
if "%answer:~,1%"== "Y" GOTO migration
if not "%answer:~,1%"=="Y" ECHO "Process End"
GOTO END

:migration
@ECHO ON

set source=Path_to_your_source_AEM/crx-quickstart/repository
set target=Path_to_your_target_AEM/crx-quickstart/repository
set oakTool=crx2oak-1.8.6-all-in-one.jar

java -Xmx4092m -jar %oakTool% --include-paths=/content/mywebsite/rootlocation segment-old:%source% %target% --datastore %target%/datastore --copy-versions=false --copy-orphaned-versions=false >> migrationlogs.log

@ECHO OFF
:END
exit /b

Avatar

Level 9

what if the 2 AEM instances are in separate servers and there's no way to share/mount the storage that contains the crx-quickstart? Thanks again