Before I come to my actual question I wanted to throw some background for my request.
We have a componentized design. Page designer has choice to choose from different components to add to a page layout as they needed.
Few example component that we allow designers to choose from are “Left Text right image”, “Full Text”, “Left Image Right text”, “Video” etc.
Each component data source is an item derived from a template. Page Item has its own template with few common fields like “Header” “footer” etc.
Currently we are working on a Workflow project, where in we are adding a process/Sitecore workflow for the above mentioned architecture.
Assume following workflow
“Content authoring” ===On Submit====> “Content Reviewer/Approver”===On Approve==>”Final”
Note:- ”On submit” an email notification is triggered.
Time to time in our industry (at Kestra financial) we get requests for audit history from SEC/FINRA. We need to show what content was at a given point of time in the past. So our Business user want to have versioning both at Page and Component level. In order to do so we have created a Workflow and added to Page template (default workflow) and we are planning to add to component template as well.
Sitecore out of the box automatically creates new version when an author edits an item which is in Final state of the workflow (this is great!!).
Actual Problem statement
Consider following componentized page,
Page Item named “Version Test” (which includes Header and footer field), It got 2 components (“Right text left image” and “Left text Right image”). Content author opens the “Version Test” page in experience editor and makes edit to “Right test left image” component content. He submits the page for “Content Reviewer”.
Proposal 1:- With Workflow tied only to Page Item and not to components (i.e “Right text left image” and “Left text Right image”).
“Content Review” are receiving just one email notification and in the Workbox, Content Reviewer only see the page item to approve. This is perfect and what we need.
Problem with above approach: - As there is no workflow tied to the component “Right test left image” versioning is not happening. We are losing track of audits. “Content Reviewers” are not able to compare versions on components items because of no auto versioning.
Proposal 2:- With Workflow tied to Page Item and also to components (i.e “Right text left image” and “Left text Right image”).
With this approach we are able see versioning on Page as well as on the updated component.
Problem with above approach: - “Content Review” are receiving 2 emails for one page submit. One for Page (though there is nothing changed) and another for component item “Right text left image”. Also on the workbox “Content Reviewers” has to do multiple approvals, in our scenario one for page another for “Right text left image” component item. Imagine if a page has 10 components and all 10 are edited and submitted for review. “Content Review” gets 10 separate email and on workbox he has find the individual components associated to a given page and approve. Alternative approach is to find the Page item in the workbox and open it in experience editor and do one approval which intern bubble the related item to final state along with parent page.
With Proposal 2, the major concerns is with multiple emails notification for single submit and on workbox (which our content reviews use a lot) you see multiple items for approval which is confusing to most part.
Proposal 3:- In order to overcome the issue in Proposal 2 and have Proposal 1 behavior. Technology has proposed following solution.
Have 2 separate workflow.
1) Core business workflow mentioned above (3 step workflow) on Page item/template. In our scenario this will be on “Version Test”.
2) Simple 2 step workflow (example “Draft/Author” -> “Final”) with no email actions to the dynamic components/templates. In our scenario “Right text left image” and “Left text Right image”.
With a custom code/class (Here is an article https://pageditor.wordpress.com/2014/11/14/approving-related-items-in-a-workflow/) we find all the related components which are in “Draft/Author” state and move them to “final” state when the page item is approved to the “Final” stage by “Content Review”.
This way we can have versions on page item as well as component items. And there is only one email send upon page Submit.
Please let us know if Proposal 3 is a right solution (Or) is there any better solution out of the box (or) any other recommended solution.