This makes it explicit at compile-time that these fields should not be reassigned outside the constructor.
Added ID's to each log message and each exception to allow later introduction of a Knowledgebase service that explains each error in more detail.