Advanced Form Design Guide
Overview
nFORM supports the ability to design custom electronic forms for submission by the regulated community. These forms are highly configurable, and the system provides significant flexibility for form designers.
Translating an agency’s paper forms to an effective electronic format often results in a very different presentation. nFORM supports many different approaches and techniques for implementing form elements, and selecting the right ones can be as much an iterative, creative process as a technical one. Effective design typically involves implementation, testing, user feedback, and refinement based on real-world use.
As with any highly flexible system, this level of configurability introduces additional complexity. To help designers navigate this complexity, Windsor established this Advanced Form Design Guide to provide guidance on advanced design topics and form elements.
Included in this article
- 1 Overview
- 2 Form Level Design
- 2.1 Document Generation
- 2.2 Payment Voucher Customization
- 2.3 Hardcopy Signature Forms
- 2.4 Electronic Signature Authorization Forms
- 2.5 Email Outputs
- 2.6 Alternative Identifiers
- 2.7 Form Revision Notes
- 2.8 Fee Configuration
- 2.9 Internal Data Controls
- 2.10 Linking to a Form from Another Website
- 2.11 Data Integration
- 2.12 Submission Data Upload
- 2.13 Staff Assignments
- 3 Section and Control Design
- 4 Appendix A - Formula Builder Examples
Form Level Design
Document Generation
nFORM allows users to define document templates that generate documents to support form processing. Templates can be designed at the system level or for specific forms. Template content may be static or dynamically populated using submission data.
This functionality is sometimes referred to as “Instapermit” because its primary use is to generate a permit based on application data after an application has been approved. However, this feature can also be used to generate other official documents, such as certificates, licenses, or ID cards.
For more information on document generation, see the Document Generation Design Guide page.
Payment Voucher Customization
nFORM allows users to define custom payment vouchers that submitters can download to support the payment remittance process.
A payment voucher can be designed at the system level or for specific forms. Payment voucher content may be static or dynamically populated using submission data.
For more information on payment voucher customization, see the Payment Voucher Design Guide page.
Hardcopy Signature Forms
nFORM allows users to define custom hard copy signature forms that submitters can download to support the form submission signature process.
A hard copy signature form can be designed at the system level or for specific forms. Hard copy signature form content may be static or dynamically populated using submission data.
Electronic Signature Authorization Forms
nFORM allows users to define custom electronic signature authorization forms that submitters can download to support the electronic signature authorization process.
An electronic signature authorization form can be designed at the system level. Electronic signature authorization form content may be static or dynamically populated using data in the user’s account profile.
Email Outputs
nFORM allows users to define custom content to deliver via automated emails.
Individual emails can be configured to include custom content, which may be static or dynamically populated using submission data.
For more information on email output customization, see the Email Template Design Guide page.
Alternative Identifiers
nFORM allows users to define alternative identifiers for form submissions (for example, a permit ID or application ID). Alternate identifiers are displayed on the Processing Dashboard and in submission headers, and provide a meaningful, searchable label for submissions.
To configure an alternative identifier:
Click the Forms link at the top of the page to open the Forms Manager.
Click the Edit icon for the form to open the Form Designer.
Ensure the current version of the form is in Draft status to ensure the form configuration can be edited.
Open the Form Details tab.
Scroll to the Alternative Identifier section.
Select the Activate Display of Alternative Submission Identifier checkbox to enable this feature and display additional relevant settings.
By default, “Alternative Identifier” is displayed as the label for references to this value. In use, this default label will be changed to another value (for example, “Permit Number” or “Document Number”).
To override this display label and use a custom value, select the Override Display Label checkbox. This enables the Custom Display Label field for entry.
Enter the desired display label value in the Custom Display Label field.
Specify the form control that will house and manage the alternative identifier from the Alternative ID Control field.
Only short text, calculated, single select, phone, email, date, time, number and URL controls, when assigned a tag value, can be referenced as alternative identifiers.
Form Revision Notes
Form revision notes can be added to a form via the Form Revision Notes section of the form design Overview tab. Revision notes are helpful when form designers want to communicate the changes that they have made on specific versions.
To add a note, click the add note… button and enter pertinent data when prompted. Once a revision note has been created, they can be edited or deleted. Revision notes automatically indicate the version in which they were added.
Fee Configuration
Fees can be assessed by submitters at the time of form submission. Fees can be one or more standard flat amounts or a calculated value based on information provided within the submission. Fee calculations can be defined in the form designer and associated with a fee line item. Forms can also be designated as having no fees by disabling fee payments.
Additionally, form designers can indicate whether payment must be successfully completed through an online payment gateway before the submission can be accepted as Received.
Fee line items allow form designers to define minimum and maximum threshold values, which are applied if a fee calculation formula yields a value outside the defined range.
When a fee is calculated based on submitter input, all form controls providing data for the calculation must be assigned a tag so that the fee calculation can reference them.
To support multiple fee line items, fees should be configured in a calculated control (hidden or visible) and then associated with the appropriate fee line item. This allows form designers to display the fee due in real time as the submitter enters data.
The following sections describe the different types of calculation formulas that can be used. The formulas use C# arithmetic functions; more complex calculations may be handled on a case-by-case basis and may require assistance.
Payment Options
Form designers are prompted to choose payment options (online, offline, both, or no fee) at the top of the Fees page in the form designer.
Mail-In Payment Options
If offline or manual payments are allowed, the form designer must provide a remittance address. They can also indicate if a custom payment voucher will be generated to be sent with the manual payment. If this is enabled, the user is prompted to upload the voucher template.
Fee Line Items
To associated a calculated control to a fee line item, click the + button in the Fee Line Item section. A pop-up window is displayed.
The system displays the following fields:
Field | Description | Notes |
|---|---|---|
Code | A brief code that identifies the fee line item type. | This code can be alphanumeric and should not include spaces. This code is used by payment gateway integrations to pass information to the customer’s financial system. |
Description | A description of the line item. |
|
Use Submission Data? | Whether the line item value uses data from a form control. | If toggled on, users can select the form control to collect data from. If toggled off, users are prompted to enter a fixed fee amount. |
Form designers can add multiple fee line item types, so long as each is associated with a different calculated control.
Simple Arithmetic Formula
Numeric controls can be used for simple fee calculations, such as simple per-unit calculations. For example, if a form has a control for the total gallons in a tank, and the fee is $0.06 per gallon, it can be calculated as:
`Gallons`*0.06M |
(where Gallons is the tag for the control where the user reports the total volume of their tank)
Considerations:
When referencing a form control, the control tag must be enclosed in backticks (`). A backtick (`) is a different character from a single quote (‘).
When referencing a choice within a single or multiple selection control list, a
.descriptionis required after the closing backtick of the tag. See the scenarios below for examples.Available mathematical operators include + (add), - (subtract), / (divide), and * (multiply). Parentheses can also be used where appropriate.
An
Mcharacter must be appended to the end of constant numbers used in arithmetic formulas to ensure the system casts the number as the correct data type.
Aggregate Functions
Aggregate functions can be used to calculate aggregations for values in repeating sections. These functions are appended to the end of the tag name on which the calculation is to be done.
For example, to add numeric values from a control in a repeating section, such as all the capacities of all the tanks in a repeating tank section, the calculation can be written as:
`Tank_Capacity`.Sum() |
(where Tank_Capacity is the tag for the tank capacity volume control)
Aggregate functions can also use conditional logic by establishing a variable and then comparing the variable to a value. For example, to count the number of all tanks with capacities greater than 1000, the calculation can be written as:
`Tank_Capacity`.Count(c => c > 1000) |
(where Tank_Capacity is the tag for the tank capacity volume control, and c is the variable name chosen to represent capacity)
Considerations:
The variable name does not affect the function, as long as it is used consistently. However, avoid using data type names (such as date, string, or integer) to ensure the system can correctly interpret the variable.
nFORM uses Enumerable methods for aggregate functions. A full list of supported operators is available on the Microsoft website. Examples of methods used in nFORM calculated fee formulas include:
Count(),.Max(),.Min(),.Sum(), and.Where().
Conditional If/Then Logic
Conditional operators can be used to create If/Then logic in complex fee calculations.
The conditional operator ? returns one of two values depending on a Boolean condition. The syntax for using this conditional logic is: [condition] ? [first_expression] : [second_expression]. The first expression is used if the condition is true, and the second is used if the condition is false.
For example, if a calculated fee should be $0 when the submitter’s fee status is Exempt, and $125 otherwise, this can be written as:
`Fee_Status` == “Exempt” ? 0.0 : 125.00 |
(where Fee_Status is the tag for the fee status control)
Considerations:
Enclose constant string values in quotation marks to ensure the system casts the value as the string data type.
Other Boolean operators can also be used in place of the
==(equal to) operator, such as!=(not equal),<(less than),>(greater than),<=(less than or equal to), or>=(greater than or equal to).
While this list of complex calculation types is not exhaustive, it covers those that have been successfully built in nFORM and supports a wide variety of complex fee calculations that suit most form requirements.
Internal Data Controls
This section does not apply to users using nFORM through an nVIRO integration.
Forms can be configured with internal-only data controls to allow additional internal-only data points to be added to a form to support the submission process. These attributes are configured during form design and are available for data entry during the submission processing phase. Additional attributes can be added during submission processing, if needed.
Configuring Default Internal Data Controls for a Form
To configure the default internal data controls for a form:
Click the Forms link at the top of the page to open the Forms Manager.
Click the Edit icon for the form to open the Form Designer.
Ensure the current version of the form is in Draft status to ensure the form configuration can be edited.
Open the Internal Data tab in the Form Details step of the Form Designer.
Click the Edit Internal Controls button to open the list of internal data controls that have been configured.
Click the Add Control link to add a new internal data control. To edit an existing internal data control, click the Edit button to the right of the control.
Add/Edit Internal Data Controls: When adding/editing an Internal Control, the following attributes are available:
A Label will describe the internal control. This will be the value that is presented to a user when working with internal controls.
Type specifies the type of internal control (checkbox, date, dropdown, paragraph, text, or time).
Show After specifies a custom sort order for the list of values.
Tag is a unique identifier for the internal control. This attribute is essential for facilitating the data importing and exporting processes.
Read-Only is used to make an internal data control read-only and locked. This is useful when populating the internal data control value based on a value entered on the submission.
If Required is checked, this attribute must be provided before the submission can be moved to Final status.
Automated assigning of value(s) is used to configure the population of the internal data control during the submission process. The following options are available:
None disables the population of data during the submission process.
Populate with submission data is used to configure the population of the internal data control based on a value from the submission. If checked, the Source Section, Source Control, and Update linked data on submission revision? fields are enabled.
Source Section identifies the section that houses the field to copy to the internal data control field.
Source Control identifies the control (within the selected Source Section) that collects the data to copy to the internal data control field.
Select the Update linked data on the submission revision checkbox to configure the internal data control to be updated to the latest value following each submission. If this value should remain untouched following the initial submission (and any changes by internal staff), leave this attribute unchecked.
Set default value is used to configure the population of an internal data control during the submission process based on the value entered in the Default DROPDOWN value, Default PARAGRAPH value, or Default TEXT value, respectively.
The Usage section allows an internal data control to be marked for intent. Both the File Transfer and Financial/Payment Processing options allow users to configure internal data controls with a third-party integration. An override tag can be used if the integration will look for a specific tag when retrieving the control value.
Click the Save button to save the internal data control.
Connecting Internal Data Controls to Form Processing Steps
Once internal data controls have been added to the form according to the directions above, proceed to step 3 of the form design process. To connect internal data controls to form processing steps:
Navigate to the step to add internal data validation to (or create a new step) and click the wrench icon. This opens a dialog representing the step actions.
Click the Add new step action... button to add a new step action to the processing step.
In the Action to perform field, select “Validate Internal Data” and choose which internal controls are required.
Populate Internal Data Controls for a Submission
To populate the internal data controls for a specific submission:
Open the Submission Overview page for the submission from the Processing Dashboard.
Click the Internal Data attribute to open it for editing.
Enter the appropriate values.
Click out of the field to save the entered values.
Monitoring Internal Data Control and Event Status
After a form is submitted, many workflow events and internal data processes are triggered. The Event Log Summary on the Submission Overview page provides an efficient way to monitor these activities.
Linking to a Form from Another Website
Links can be created to open a form in nFORM. The way the link is structured determines how users are directed to the form.
Form Landing Page
The most basic link brings the user to the form landing page, where they can read form instructions and initiate form entry. This only requires the form tag, which can be found in the Form Designer.
Structure:
https://[baseNformUrl]/?FormTag=[formTagName] |
Example:
Skip Form Landing Page
To bring users to the first section of the form, bypassing the form landing page, use the skipLandingPage parameter.
Structure:
https://[baseNformUrl]/?FormTag=[formTagName]&skipLandingPage |
Example:
Pre-Population Links
For existing permits and reports—where a permit number is required to begin form entry and pre-population may be used—the permit number or registration number are entered as the prepopulateContext. Using this together with the skipLandingPage parameter takes the user directly to the first section, with the permit number pre-populated.
Structure:
https://[baseNformUrl]/?FormTag=[formTagName]&prepopulateContext=[ContextId]&skipLandingPage |
Example:
Data Inheritance Links
For forms that allow users to enter a previous submission number to populate data from that submission, the submission number can be added by using the subnum: construct:
Structure:
https://[baseNformUrl]/?FormTag=[formTagName]&prepopulateContext=SUBNUM:[SubmissionNumber]&skipLandingPage |
Example:
Forms must be published and externally available (i.e., the Form for Internal Use Only checkbox is cleared), and a form tag value must be assigned to enable data inheritance.
Configuring Submission Exit Behavior
After a form has been submitted, the user is presented with a Return to... button. This button can be configured to take the user to an unsecured page outside of the system—typically the page that originally linked to the form. To set this, configure the return URL setting in the varEnvironmentOverrides.config file using the app.submission.confirmation.buttonUrl setting.
Data Integration
nFORM allows users to import, export, and change system data based on external sources and destinations. For more information, see the Data Integration Guide page.
Submission Data Upload
nFORM allows users to upload/pre-populate data from a form-compliant XML document. For more information, see the XML Submission Upload Guide page.
Staff Assignments
nFORM allows form designers to establish staff processing assignments based on the designation of roles, workgroups, and workgroup route maps. These processing assignments are used to assign individuals to submissions and specific submission processing steps, either automatically based on a value in a submission or based on explicit assignment by a submission processor.
Roles define the staffing functions that individuals assume in performing their work within the organization (for example, administrative staff, engineer, or supervisor).
Workgroups define each group within the organization that assembles to perform submission processing (for example, region, office, or team).
Workgroup Route Maps define each association (or mapping) used to assign workgroups based on a value in a submission (for example, region by county or team by permit type).
The base roles, workgroups, and workgroup route maps must first be configured for the organization. To configure the organization:
Select the parent organization.
If not in Draft mode, enable Draft mode for the organization.
Navigate to the Staff Assignments tab.
Role Management
Adding Roles
To add a new role:
Click the Edit button next to the Roles heading on the Staff Assignments tab of the Organization Designer.
Enter the Name attribute to define the name of the role.
If the page is not automatically in an Add state, click the Add New Role button. A dialog will open where the Name attribute can be entered.
Click the Add Row button in the Role area to assign an individual staff member to the role for each defined workgroup.
For each mapping, select a When Workgroup matches... value to represent the relevant workgroup, and select a user to be assigned to the current role when a submission’s workgroup is assigned to the selected value.
Editing Roles
To edit an existing role:
Click the Edit button next to the Roles heading on the Staff Assignments tab of the Organization Designer.
Click the row for the role to edit.
Adjust settings as needed.
Workgroups must be defined for individuals to be assigned to When Workgroup matches.... Role-Workgroup-User mappings/assignments can be managed from both the Role and the Workgroup areas.
Workgroup and Role Assignments
Adding Workgroups
To add a new workgroup:
Click the Edit button next to the Workgroups heading on the Staff Assignments tab of the Organization Designer.
Enter the Name attribute to define the name of the workgroup.
If the page is not automatically in an Add state, click the Add New Workgroup button. A dialog will open where the Name attribute can be entered.
Click the Add Row button in the Workgroup area to assign an individual staff member to each defined role.
For each mapping, select a Role value to represent the relevant role, and select a user to be assigned to the current workgroup when a submission’s workgroup is assigned to the selected value.
Editing Workgroups
To edit an existing workgroup:
Click the Edit button next to the Workgroups heading on the Staff Assignments tab of the Organization Designer.
Click the row for the workgroup to edit.
Adjust settings as needed.
Workgroup Route Maps
Adding Workgroup Route Maps
To add a new workgroup route map:
Click the Edit button next to the Workgroup Route Maps heading on the Staff Assignments tab of the Organization Designer.
Click the Add New Workgroup Route Map button. A dialog will open where the Name attribute can be entered.
Click the new workgroup route map.
Click the Add Row button.
Enter a When input matches… value to represent the value entered/selected on a submission that will be used to assign a workgroup.
Select the Assign Workgroup value to represent the workgroup that will be assigned to a submission when the submission includes the When input matches… value.
Editing Workgroup Route Maps
To edit an existing workgroup route map:
Click the Edit button next to the Workgroup Route Maps heading on the Staff Assignments tab of the Organization Designer.
Click the row for the workgroup route map to edit.
Adjust settings as desired.
Managing Staff Assignments for a Form
Once the organization’s base roles, workgroups, and workgroup route maps are defined, the form can be configured to use the organization settings for staff members.
To manage staff assignments for a form:
Navigate to Step 3 (Processing Steps) of the Form Designer.
Click the Edit staff assignments button in the top right corner of the Form Designer wizard to open the Edit Staff Assignment dialog.
Open the Assignments tab.
Assigning Roles – Option 1: Assign Individually
Select the role or individual that will be assigned by default, if appropriate, as the responsible person for new submissions.
Select the role or individual that will be assigned to each step by default, if appropriate.
Assigning Roles – Option 2: Bulk Assignments
Click the Assign Multiple button.
Select the responsible persons and steps to reassign.
Click the Assign Selected button to open the Bulk Assign dialog.
Select the role or individual to whom the selected steps will be assigned by default.
Assigning Roles – Option 3: Assignment from the Processing Step Editor
See the Configure Processing Steps section.
Assigning Workgroup Route Maps
Open the Workgroup Routing tab.
Select the workgroup route map to be used to route submissions to a specific workgroup.
Select the Field (Input Data for Workgroup Route Map) that will map to the workgroup route map. Once selected, a secondary selection may be presented (for example, if the selected field is an address). Select the secondary selection, if presented.
Section and Control Design
Displaying a Dynamically Assigned Name in a Section Repeater
nFORM allows sections to be repeated. For example, a form may have a section for tanks in a process. The system lets the same set of questions be answered for each tank, with all tank details contained within the same section.
Additionally, nFORM can display a dynamically assigned name for each repeated item based on the content in the section repeater. Using the tanks example, each tank may have a Tank Name, and the item in the repeater can display the Tank Name in the title.
To assign a dynamically assigned name to a repeating section:
Click the Forms link at the top of the page to open the Forms Manager.
Click the Edit icon for the form to open the Form Designer.
Ensure the current version of the form is in Draft status to ensure the form configuration can be edited.
Navigate to the Sections and Controls (Step 2) section of the Form Designer.