Tuesday, January 22, 2008

Publishing Considerations

Publishing Considerations
As of Sitecore 5.3.1, the system does not have an out-of-the-box approach for publishing dependent items. Consider the following content structure:

I. Home
  a. Promotions
    i. Promotion A
II. Global
  a. Legal
    i. Legal Notice A
    ii. Legal Notice B

Imagine that every promotion has a multilist field (with a source of /sitecore/content/Global/Legal) wherein a business user can choose which Legal Notices should be applied to a Promotion. This will work fine in WebEdit mode. When the promotion is published (for example, through a workflow action), there is no guarantee that all of the required legal notices will also get published. If a business user has associated Promotion A with Legal Notice B, both of these items will need to get published in order to present all of the required Legal Notices for the Promotion. This will happen without additional effort if the site is published using an incremental publish (assuming the Legal Notice is in a final workflow state).

If you are using the AutoPublish workflow action, you can organize your content tree to address these dependent items:

I. Home
  a. Promotions
    i. Promotion A
      1. Legal Notice A
      2. Legal Notice B

When you use the AutoPublish action, Promotion A and all of its children will get published (again, assuming that the Legal Notices are in final workflow states or not part of a workflow). Note that the AutoPublish action requires the “deep=1” parameter in order to publish child items.

This solution will not be appropriate for many requirements. For example, if Legal Notices are reused across Promotions, it does not make sense to have them be child items of individual Promotions (as this defeats content reuse). Also, if Legal Notices go through a workflow process independent of promotions, there is no guarantee that the Legal Notices will get published when the Promotion gets published.

To address publishing dependencies, you may need to rely on a scheduled task or a more complex workflow action to publish rather than using out-of-the-box workflow-based publishing.

No comments: