transaction wrapper for each domain update
app name is user-defined, so don't restrict length