code: @Override
      public String incomingClearText(String st, Document document, String msgName) {
          // empfangene Nachricht parsen, dabei die validvalues-Überprüfung weglassen
          String myMsgName = msgName + "Res";
          Message msg = new Message(myMsgName, st, document,
              Message.DONT_CHECK_SEQ, Message.DONT_CHECK_VALIDS);
  
          // in einer Schleife durch alle SuppVersions-Datensätze laufen
          for (int i = 0; ; i++) {
              String elemName = HBCIUtils.withCounter(myMsgName + ".BPD.BPA.SuppVersions.version", i);
              SyntaxElement elem = msg.getElement(elemName);
  
              if (elem == null) {
                  break;
              }
  
              // Versionsnummer extrahieren
              String version = elem.toString();
              if (version.equals("2")) { // "2" ist ungültige Versionsnummer
                  log.warn("there is an invalid hbci version number ('2') in this BPD - replacing it with '210'");
  
                  // versionsnummer "2" im string durch "210" ersetzen
                  int startpos = elem.getPosInMsg() + 1;  // +1 wegen überspringen des pre-delimiters
                  st = new StringBuffer(st).replace(startpos, startpos + 1, "210").toString();
                  log.debug("new message after replacing: " + st);
                  break;
              }
          }
          return st;
      }
docs: nachricht hier tatsächlich schon geparst werden kann