The main reason again for doing enums, is that you get the type safety. Otherwise you'd loose control over what strings are passed around, or are explicitly stated in the code. The alternative would be to create a TimeZone class with a lot of final static members, but in my opinion, this is rather the old way of "simulating" enum behaviour. 

We're using `ordinal()` all around in the JPA layer (except for currency and country), because we don't want to store long strings for each row.

The time zone is choosen by the user in the portal (if needed in that country). That time zone will then be applied in all clients. This is to not introduce discrepancies between reports, history etc just because you might have changed browser/computer etc.

No worries. I like a good discussion!