protected TransactionResult handleMessageGroupCustom(
      SolicitedMessageGroupImpl messageGroup,
      TransactionMessageImpl originalMessage,
      TransactionResult txResult) {

    LOGGER.info(messageGroup.getMessageId(), "Get into handleMessageGroupCustom");
    // if the result is null, there is no error/exception in the response
    // message
    if (txResult == null) txResult = new TransactionResult();

    TransactionResult result = txResult;

    NoMatchHeaderDataMessageImpl headerMessage =
        (NoMatchHeaderDataMessageImpl) messageGroup.getHeaderMessage();

    try {

      init();
      boolean isSystem = isResponseOf10YearHistoryCheckSystem(originalMessage);

      if (headerMessage != null
          && headerMessage.getMessageType().equals(MessageCodeConstants.MESSAGE_TYPE_HB)) {

        result =
            historyCheckBusiness.saveMessgeGroupFor10YearHistoryCheck(
                messageGroup, result, originalMessage, isSystem);

      } else {
        result =
            historyCheckBusiness.saveMessgeGroupFor10YearHistoryCheck(
                messageGroup, result, originalMessage, isSystem);
        result.setOperation(TransactionResult.OPERATION_UPDATE);
        result.setTransactionStatus(MessageCodeConstants.TX_STATUS_FAILED);
      }

    } catch (Exception e) {
      LOGGER.error(messageGroup.getMessageId(), e);
      MessageUtilities.prepareFailedTransactionResult(
          result, null, false, MessageFieldsErrorIDConstants.PDPS_INFO_UPDATE_FAILURE);
    }

    return result;
  }
  protected ModelAndView handleRequestInternal(
      HttpServletRequest request, HttpServletResponse response) throws Exception {

    String messageId = RequestUtils.getRequiredStringParameter(request, "messageid");

    String view = RequestUtils.getRequiredStringParameter(request, "view");

    String tx = MessageUtilities.waitResponse(messageId, MessageCodeConstants.TX_STATUS_INITIATED);

    if (tx.equals(MessageCodeConstants.TX_STATUS_INITIATED)
        || tx.equals(MessageCodeConstants.TX_STATUS_TIMED_OUT)) {
      return new ModelAndView(getTimeoutView(), "", null);
    }

    if (view.equals("waitForCSORResponse.do")) {
      return new ModelAndView("/aamva/cdlis/waitForCSORResponse", "messageid", messageId);
    }
    return new ModelAndView(new RedirectView(view), "messageid", messageId);
  }