@burke for the module author, every entity they want to audit can be annotated with @Audited, and the solution we want to think of is: at runtime, we always check for audited entities and see if they have corresponding audit tables. When not present, our dynamic behaviour should handle the creation; the same should happen for any schema change, too. However, I am not sure if this optimal way of handling this, as it means we might be checking most often. Just thinking about the performance, as OpenMRS itself takes some time to come up.
Can you try it out and get a sense of how long it takes?