@Override
  protected void process(
      IContinuation continuation,
      UserDataRequest udr,
      Document doc,
      ActiveSyncRequest request,
      Responder responder) {

    MeetingHandlerRequest meetingRequest;
    try {

      meetingRequest = meetingProtocol.getRequest(doc);
      MeetingHandlerResponse meetingResponse = doTheJob(meetingRequest, udr);
      Document document = meetingProtocol.encodeResponses(meetingResponse);
      sendResponse(responder, document);

    } catch (NoDocumentException e) {
      sendErrorResponse(responder, MeetingResponseStatus.INVALID_MEETING_RREQUEST);
    } catch (CollectionNotFoundException e) {
      sendErrorResponse(responder, MeetingResponseStatus.INVALID_MEETING_RREQUEST);
    } catch (ProcessingEmailException e) {
      logger.error(e.getMessage(), e);
      sendErrorResponse(responder, MeetingResponseStatus.SERVER_ERROR);
    } catch (ConversionException e) {
      logger.error(e.getMessage(), e);
      sendErrorResponse(responder, MeetingResponseStatus.SERVER_ERROR);
    }
  }
 private void sendErrorResponse(Responder responder, MeetingResponseStatus status) {
   sendResponse(responder, meetingProtocol.encodeErrorResponse(status));
 }