Avoiding repetitive code for timestamping and updating status
No idea about groovy, but it looks like a case for an EnumMap&lt;RequestStatus, Data&gt; with the map storing the (last) corresponding time and user. You need a single method

def action(RequestStatus status) {
    map.put(status, new Data(new DateTime(), springSecurityService.currentUser))
    this.status = status
}


If you really need 5 methods, you can define them trivially via action.