And *lots* of changes in the DB schema.  Any field that holds a dynamic enum value goes from:

  String :column  # or TextField, or whatever

to:

  Integer :column_id

and then we add a corresponding foreign key constraint to link that value to the enumeration_value table.  (this is what lets us do global replaces on enums)