/**
   * Checks if a field exists in the form based on the value of another field
   *
   * @param form The form to validate
   * @param subFields A list containing information about the fields to validate {@link SubField}
   * @param coreManager Utility class for creating missing fields
   * @return
   */
  public boolean validate(
      IncomingMessageForm form, List<SubField> subFields, CoreManager coreManager) {
    boolean valid = true;

    for (SubField sf : subFields) {
      if (!form.getIncomingMsgFormParameters().containsKey(sf.getParentField().toLowerCase()))
        continue;

      IncomingMessageFormParameter parent =
          form.getIncomingMsgFormParameters().get(sf.getParentField().toLowerCase());

      if (sf.getReplaceOn().equals("*") || parent.getValue().equalsIgnoreCase(sf.getReplaceOn())) {

        if (!form.getIncomingMsgFormParameters().containsKey(sf.getFieldName().toLowerCase())) {
          valid = false;

          IncomingMessageFormParameter param = coreManager.createIncomingMessageFormParameter();
          param.setMessageFormParamStatus(IncMessageFormParameterStatus.INVALID);
          param.setName(sf.getFieldName().toLowerCase());
          param.setErrText("missing");
          param.setValue("");
          param.setErrCode(0);

          form.getIncomingMsgFormParameters().put(sf.getFieldName().toLowerCase(), param);
          form.setMessageFormStatus(IncMessageFormStatus.INVALID);
          form.setLastModified(new Date());
        }
      }
    }
    return valid;
  }