add concurrency exception
add transaction listener
move mapping configuration to Infrastructure layer