Can I control the step when using Form in Wizard mode?

<Form name="Name">
    <Attributes>
        <Map>
            <entry key="isWizard" value="true"/>
        </Map>
    </Attributes>

Can I control which step is next? e.g. If checkbox is true, go to step 2, otherwise go to step 3.

Hi kcwong,

If you are utilizing the form in a workflow, we do have some guidance around building wizard-like functionality by providing a sequence of forms. More info at the bottom of the page here.

As an alternative, a wizard-like form implementation could be achieved through a workflow that presented independently defined forms in sequential steps, using the “back” and “next” button options to manage workflow step transitions. This isWizard functionality can also be combined with the scriptable attributes of fields and sections to greatly simplify management of form field dependencies between wizard pages; since all the fields are contained within a single form, they are easily referenced by other fields without having to pass data back and forth between the forms and the workflow, as is required with the multi-step method. The multi-step method does enforce validation between wizard form pages, since each form is independently validated before moving to the next workflow step

That’s not what I’m asking.

If I haven’t read the Form documentation already, I wouldn’t know about the isWizard attribute.

I’m asking if there is a way to control which step is next. If I don’t fill a checkbox on step 1, go to step 2, otherwise skip to step 3.

Also the documentation is not accurate. It said it won’t perform validation until the final submit button, but that’s only true for ValidationScript tags. If you specify required=true attribute it will be validated in each step.

Also running ValidationScript only at the final submit is somewhat confusing to the users. The form will jump back to the step a ValidationScript failed.

When isWizard is true, IIQ breaks down your Sections into wizard pages.
Lets say you have 3 sections

<Section name="First Page">
    <Field name="Field_1" required="true" type="boolean"/>
  </Section>

 //Then another section
 <Section label="Second Page" name="Second Page">
    <Attributes>
      <Map>
        <entry key="hidden">
          <value>
            <Script>
              <Source>
                      import sailpoint.object.*;
                      Field otherField = form.getField("Field_1");
                      Boolean value = otherField.getValue();
                      if((value!= null && value == true)) {
                         return true;
                      }
                      else {
                         return false;
                       }
              </Source>
            </Script>
          </value>
        </entry>
        <entry key="readOnly" value="true"/>
      </Map>
    </Attributes>

If your form is configured to be a wizard, whether or not the Second Page shows up is based on the conditional value of Field_1.
Do this for the other conditional sections as well. So if two different things show up based on the section, just make a new Section with the reverse logic.

edit: I’m pretty sure on the boolean field, you’ll need to make it postBack=true

1 Like