@Override
  protected StepProcessingResult determineNextStepNumOnStepProcessing(
      Service36400168Form form, boolean goback, Map<String, Object> model) {
    StepProcessingResult stepProcessingResult =
        super.determineNextStepNumOnStepProcessing(form, goback, model);

    if (stepProcessingResult.getStepNum() == 2) {
      if ("off".equalsIgnoreCase(form.getDov_enable())) {
        stepProcessingResult = new StepProcessingResult(2, "step2applicant.html");
      } else {
        stepProcessingResult = new StepProcessingResult(2, "step2representative.html");
      }
    }

    return stepProcessingResult;
  }
  @Override
  protected void patchModelAndFormOnStepProcessing(
      Service36400168Form form,
      Map<String, Object> model,
      StepProcessingResult stepProcessingResult) {
    super.patchModelAndFormOnStepProcessing(form, model, stepProcessingResult);

    if (stepProcessingResult.getStepNum() == 2 && form.getDov_enable_changed().booleanValue()) {

      if ("off".equalsIgnoreCase(form.getDov_enable())) {

        form.fillApplicantAttributesWithPrivateRoomData(this.getPrivateRoomDataContainer());
      } else {
        form.clearApplicantAttributes();
      }

      form.setDov_enable_changed(false);
    }
  }
  @Override
  protected Map<String, Object> formToMap(
      Service36400168Form form) { // вызывается только перед формированием SOAP-запроса в ведомство
    Map<String, Object> formAsMap = super.formToMap(form);
    FormAsMap decoratedFormAsMap = new FormAsMapImpl(formAsMap);
    decoratedFormAsMap.clearForOrdering();

    // Шаг 1 -

    // Шаг 2

    if ("off".equalsIgnoreCase(form.getDov_enable())) {
      decoratedFormAsMap.clearFileLoadField("dovDovLoad");
      decoratedFormAsMap.clearFileLoadField("dovPasLoad");
    }

    // Шаг 3 -

    return formAsMap;
  }