@RequestMapping(method = RequestMethod.POST)
  public ModelAndView processSubmit(
      @ModelAttribute("findUser") FindUserFormCommand findUser,
      Errors errors,
      SessionStatus status) {
    new FindUserFormValidator().validate(findUser, errors);
    if (errors.hasErrors()) {
      return new ModelAndView("admin/FindUser", "findUser", findUser);
    }
    User user = new User();
    boolean partialMatch = findUser.isPartialMatch();

    HashMap<String, String> fields = new HashMap<String, String>();
    fields.put("username", makeSqlMatchString(findUser.getUsername(), partialMatch));
    fields.put("firstName", makeSqlMatchString(findUser.getFirstName(), partialMatch));
    fields.put("lastName", makeSqlMatchString(findUser.getLastName(), partialMatch));
    fields.put("email", makeSqlMatchString(findUser.getEmail(), partialMatch));
    fields.put("last4", makeSqlMatchString(findUser.getLast4(), partialMatch));
    fields.put("address", makeSqlMatchString(findUser.getAddress(), partialMatch));
    fields.put("phone", makeSqlMatchString(findUser.getPhone(), partialMatch));
    fields.put(
        "billingName", makeBillingNameString(findUser.getFirstName(), findUser.getLastName()));

    // check to make sure at least one of the fields is in use
    // more appropriate for validator?
    int fieldsInUse = 0;
    for (String s : fields.keySet()) {
      if (fields.get(s).length() > 0) {
        fieldsInUse++;
      }
    }
    if (fieldsInUse == 0) {
      // reject username rather than whole form since errors:* is not on view
      errors.rejectValue("username", "one-field-required", "At least one field is required.");
      return new ModelAndView("admin/FindUser", "findUser", findUser);
    }

    List<FindUserResult> resultTempList =
        userManager.findUsers(fields, findUser.isMatchAllFields());
    List<FindUserResult> resultList = new ArrayList<FindUserResult>();

    for (FindUserResult f : resultTempList) {
      User fuser = userManager.getUserByUsername(f.getUsername(), false);
      f.setFlatrate(subscriptionDao.isActiveFRUser(fuser.getUserId()));
      resultList.add(f);
    }

    ModelAndView mav = new ModelAndView("admin/FindUser");
    mav.addObject("findUser", findUser);
    mav.addObject("resultList", resultList);
    mav.addObject("count", resultList.size());
    return mav;
  }