class EmployeeController {

    @PostMapping("{id}/_search")
    @ResponseBody
    public ResponseEntity<?> get(@ModelAttribute @Valid EmployeeGetRequest employeeGetRequest,
                                 BindingResult modelAttributeBindingResult, @RequestBody @Valid RequestInfoWrapper requestInfoWrapper,
                                 BindingResult requestBodyBindingResult) {

        RequestInfo requestInfo = requestInfoWrapper.getRequestInfo();
        ResponseEntity<?> errorResponseEntity = requestValidator.validateSearchRequest(requestInfo,
                modelAttributeBindingResult, requestBodyBindingResult);

        if (errorResponseEntity != null)
            return errorResponseEntity;

        // Call service
        Employee employee = null;
        try {
            employee = employeeService.getEmployee(employeeGetRequest.getId(), employeeGetRequest.getTenantId(),
                    requestInfo);
            log.debug("employee=" + employee);
        } catch (EmployeeIdNotFoundException idNotFoundException) {
            log.error("Error while processing request " + employeeGetRequest.getId(), idNotFoundException);
            return errorHandler.getResponseEntityForInvalidEmployeeId(requestInfo);
        } catch (Exception exception) {
            log.error("Error while processing request " + employeeGetRequest.getId(), exception);
            return errorHandler.getResponseEntityForUnexpectedErrors(requestInfo);
        }
        return getSuccessResponseForGet(employee, requestInfo);
    }

}