Maintaining Separate Versions of Edited data

Hi all, In my application, I have two user roles: "Creator" and "Manager." The workflow involves the Creator generating newsletters and sending them to the Manager for review. However, when the Manager edits a newsletter, I want to ensure that the original version sent by the Creator remains unchanged in the Creator's sent tab. Any insights or suggestions on how to achieve this would be greatly appreciated.
1 answers

This sounds like you want to implement some kind of version control.

I see different solution directions:

  • You can keep it simple by having two attributes: ContentWrittenByAuthor and ContentAfterReview on your entity
  • You can make it future proof by generating multiple records, where you keep track of a version number.
  • You can introduce a HistoricContent entity which you associate with the entity and create a new record having the old 'content' with date and author when the content is changed.
  • You can implement the AuditTrail module to trace changes on the Content attribute

Depending on how you are going to use it, all of the above are valid implementations.

Ask yourself the process flow: Could there be more people changing the content (in the future)? What should happen if the same person changes the content twice? What should happen if first person 1 and then person 2 is changing the content?

And about the usage: Is it always required to load both values? How large can the value be? What is the retention time for both fields?