Rollout configs with "modification" and "rollout" triggers aren't working together

evgenyzh

18-01-2019

There is a feature (or a bug) with msm config with modification trigger, which block proper working of rollout config with rollout trigger.

This is a simple case which isn't working as expected:

1.Copy OOTB rollout configuration from /libs/msm/wcm/rolloutconfigs/pushonmodify to /apps/msm/we-retail/rolloutconfigs/pushonmodify .

Then in the copied version, remove all actions except “contentDelete” action.

Rename the configuration from “pushonmodify” to “pushondelete” and update the title to “Push on delete” to distinguish this configuration from the standard one.

2.Open page /content/we-retail/us/en and on the tab “Live Copy” add the new rollout config to the list of configs. Thus the page will have both “Standard rollout config” and “Push on delete”. Another Live Copy /content/we-retail/ca/en still has only “Standard rollout config”.

Test Case steps:

1.Open properties of the master-page /content/we-retail/language-masters/en/men and update the property “Page Title” on the “Basic” tab, then save changes.

2.Open properties of the root-page /content/we-retail/language-masters/en, go to the tab “Blueprint” and click “Rollout” button. Check all live copies (in our case it is /content/we-retail/ca/en and /content/we-retail/us/en) and CHECK “Rollout page and all subpages” checkbox. Then confirm rollout.

3.Check the properties of /content/we-retail/ca/en/men, it has the property “Page title” updated. (success)

4.Check the properties of /content/we-retail/us/en/men, it has the property “Page title” not updated (fail, why?).

It is obvious, that “Push on delete” config in our cases does nothing, because we are not deleting any page, but somehow affects the live-copy configurations. Under the hood we found out that this configuration is really triggered on modification event after saving the modified page /content/we-retail/language-masters/en/men and rollout action actually does nothing, but RolloutManager for some reason updates the cq:lastRolledout date property on live-copy causing this property to be “after” the date of cq:lastModified of the modified master page. By this reason the live-copy will not be updated during explicit rollout process started by user. That is because the cq:lastRolledout of the live-copy is being compared with the cq:lastModified of the master, and live-copy will be updated only if master became “younger” then live-

Could anyone help me with this case? How could I make "Page title" get updated in /content/we-retail/us/en?

Accepted Solutions (0)

Answers (6)

Answers (6)

yuriy_shestakov

29-01-2019

The problem here is when you have two rollout configs "On Modification" -> "ContentDelete" and "On Rollout" -> "Content Update" manual (standard) rollout process doesn't work because "On Modification" -> "ContentDelete" marks all pages as synchronized after any update. And when you try to do manual rollout ("On Rollout"), it does nothing (pages already marked as synchronized).

So, you can't use them together.

It works only when you move "ContentDelete" into "On Rollout" config or vice versa put "ContentUpdate" into "On Modification" config.

Documentation won't help you because he (and you) said according to the documentation it looks like supposed to be working.

If it works this way by design, this situation should be described in the documentation. Otherwise, it has to be considered as a bug and fixed.

Gaurav-Behl

MVP

29-01-2019

I'm not sure if I understand "combination for rollout configs (delete on modify and update on rollout) is prohibited in AEM"

MSM has triggers and sync-actions as mentioned in [1]. As the name suggests, these rollout triggers just triggers events ( and may perform specific actions that is hard wired based on its Event listener model) and perform certain actions which are configured by the user underneath these trigger configurations as nodes. You may configure any trigger with any sync-action based on your requirements.

The trigger option that you chose in your first step was "On modification" which means by design, it would trigger the changes as soon as parent/blueprint is saved. It behaved in the way as its supposed to behave. Since, the sync-action 'ContentUpdate' was missing on custom trigger, it didn't sync the child page. I hope that this makes sense.

You just need to modify your first step from

1.Copy OOTB rollout configuration from /libs/msm/wcm/rolloutconfigs/pushonmodify to /apps/msm/we-retail/rolloutconfigs/pushonmodify .

to

1.Copy OOTB rollout configuration from /libs/msm/wcm/rolloutconfigs/default to /apps/msm/we-retail/rolloutconfigs/pushonmodify. Then in the copied version, remove all actions except “contentDelete” action.

Rename the configuration from “pushonmodify” to “pushondelete” and update the title to “Push on delete” to distinguish this configuration from the standard one.

[1] Configuring Live Copy Synchronization

Triggers

  • On Rollout: The Rollout command is used on the blue print page, or the Synchronize command is used on the live copy page. // this would get kicked off when user clicks Rollout button on parent or Synchronize button on child manually
  • On Modification: The source page is modified.   //this would get invoked as soon as the content/node is modified
  • On Activation: The source page is activated.  //this would get invoked as soon as the content/node is activated
  • On Deactivation: The source page is deactivated.    //this would get invoked as soon as the content/node is deactivated

Sync actions-

  • ContentCopy
  • ContentDelete  
  • etc.

Could you share the documentation that you referred? I'm not aware about the verbiage in the documentation. I would've to go through it.

evgenyzh

29-01-2019

Thank you for the passion to help with my issue. I understand your two proposed solutions well and actually have to choose between them to make msm working. But what I want to understand is that whether this combination for rollout configs (delete on modify and update on rollout) is prohibited in AEM? If true, maybe it is worth to mention it in official documentation, for example, in Note section. If false, we really should consider it as a bug, because current description of rollout configs design does not imply such a relation between them, I mean, it is not obvious for developers and content managers, that such a relation with onModify and onRollout configs exists.

Gaurav-Behl

MVP

24-01-2019

If you don't want the page title to be updated as soon as it is saved but only when explicit rollout is done, then you just need to change the cq:trigger property of 'pushondelete'  from 'modify' to 'rollout' and still keep contentDelete along with either 'ContentUpdate' or 'ContentCopy' sync action as applicable for your usecase.

HTH

evgenyzh

24-01-2019

But what if I don't want the property "Page title" to be updated as soon as it is modified? I would like it to be updated only on explicit rollout procedure initiated by user at root page. Because content manager performs a number of modifications on different properties on different pages of master and wants them to be rolled out at once due to performance considerations (for example). And this works great until I create a pushonmodify configuration with contentDelete action. contentDelete triggered by onModification event should not interfere contentUpdate triggered by onRollout, except the case the page had been deleted.

I didn't find any restriction of use in the mentioned documentation.

Gaurav-Behl

MVP

21-01-2019

On your custom rolloutconfig 'pushondelete', add 'contentUpdate' sync action. That would push the updates as soon as it is modified/saved. Since, jcr:title node exists, 'contentUpdate' would work, if you use a node that doesn't on live copy then use 'contentCopy' sync action.

Refer - Configuring Live Copy Synchronization