How best structure edit history data?

I am a product designer building a B2B inventory type SaaS. It needs an ‘edit history’ (for accountability / audit, not for versioning or undo).

The “edit product details” has around 20 input fields that modifies 7 various things. I want to log: field name, existing value, new value, who and when. Finally, user can optionally a reason for the edit.

To view: On an “edit product details” page, user clicks “Edit History” and sees a list of changes. they can’t revert the page - they just see who changed what, when.

First pass design:
Each Thing has a list of HistoryItems.
Each input has 2 workflows: a) when user selects the input , create a new HistoryItem with fields’ value (before editing), and add to thing’s list. b) When Thing is modified: if its value is not different from previous value, delete the HistoryItem else set its fields (new value, date and notes).


  1. This requires 2 workflows on all 20 inputboxes, per page – a maintenance nightmare. Is there a way to reuse or inherit workflows across every element in a group? or element type?

  2. how can I get the field names? With basic inputboxes, I couldn’t see a way to get the inputbox’s name in the workflow. My workaround idea is to generate the form in a workflow at page load,

  3. Would it be better data structure to create a single list of HistoryEntries, instead of having a separate list per Thing?

Any templates or examples of edit history implementations would be useful to know about. I did some searching on the forums and googling, and didn’t see quite what I was looking for.