sync content between 2 AEM instances using a date range (or maybe just a start date or just end date) | Community
Skip to main content
jayv25585659
November 22, 2022
Solved

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

  • November 22, 2022
  • 3 replies
  • 2164 views

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

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by BrijeshYadav

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?lang=en


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

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

3 replies

Avinash_Gupta_
Community Advisor and Adobe Champion
Community Advisor and Adobe Champion
November 22, 2022

@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.

Abhishek_Narula25
November 22, 2022

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 

 

BrijeshYadav
BrijeshYadavAccepted solution
November 23, 2022

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?lang=en


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

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

jayv25585659
November 24, 2022

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