You could just use streams for this, e.g. one stream for create actions and another stream for approvals. You can use the txid of the transaction with the create action as an identifier for that action. Then each approval in the second stream uses that txid as its stream "key". To see an action's approvals, use liststreamkeyitems on the second stream, and see which approvals have been published by whom.