Paths/IDs Changed

Case

Assume the content being synced is an article. In the body of the article there are images being set by via url.

Source image URL: 
src="https://eu-images.contentstack.com/v3/assets/blt66983808af36a8ef/blt17604d8fa654cda2/613f09322f7bb50798050a4c/chess-1314359_1280.jpg"

To fully sync this article to another system, both the image and the article need to be synced. However, when the image is synced, the ID and URL of the images changes to match the values of the destination system.

Destination image URL: 
src="https://eu-images.contentstack.com/v3/assets/blt69509c9116440be8/bltef0f9e1a32e09046/6468057000cbe421c7ef59f6/chess-1314359_1280.jpg"

We need to be able to

  1. Sync the image

  2. Sync the article

  3. Update the image URL in the article's body to the new image URL

Solution

ImpulseSync can solve this with a couple jobs and the regex manipulator.

First, we create a job to sync the image. When this job runs the image asset will sync from the source to the destination.

But as previously stated the URL to the destination asset is different from the source asset.

Next we'll create a second job to sync the article content type and add a regex manipulator to the job.

This job will sync the article content from the source to the destination.

The regex manipulator we'll set up as seen below.

To understand how the regex config should be written we first need to understand the image URL. In this example the image url can be broken down as follows:

  • Domain (https://eu-images.contentstack.com)

  • API path (v3/assets)

  • Source system ID (blt66983808af36a8ef)

  • Content ID (blt17604d8fa654cda2)

  • Content Version ID (613f09322f7bb50798050a4c)

  • File Name (chess-1314359_1280.jpg)

In the config for the regex manipulator, we see the regex field is broken into groups that capture parts of the URL. Each group is created with parentheses and can either be replaced, kept, or used to search for a mapped ID value. (preview regex match)

In the replace field, groups 1, 3, 5, and 7 are all kept as is. However, group 2 captures the source system ID and replaces it with the static destination system value. Group 4 captures the content ID value and is used to search for a mapped content.id value by taking the content ID in group 4 and using it to search against Impulse's ID maps. Similarly, group 5 captures the content version ID value and is used to search for a mapped content.version.id value.

Finally, a pipeline can be created that runs both jobs in order.

After running this pipeline, the destination article now has the synced image

Last updated