Advanced Form Design Guide
Overview
The nFORM system supports the ability to design custom forms for submission by the regulated community. These forms are highly configurable and the system provides much flexibility for form designers.
Effectively representing an agency’s forms electronically will often result in a much different presentation than on paper. There are many different approaches and techniques for implementing form elements in nFORM. Designing these forms can sometimes be an artistic expression, requiring implementation, trial, feedback, and refinement based on real-world use.
As with any system, the more flexible the capabilities of a system, the more sophisticated the system will be to support the dynamic nature of the system. With this in mind, Windsor established this Advanced Form Design Guide to provide information and guidance on the more advanced design topics and advanced form elements.
Form Level Design
Document Generation
nFORM supports the ability to define a Document Template for staff to generate documents in support of form processing. A template can be designed for the system as a whole as well as for specific forms. The content in the template can be static or dynamically driven based on the data provided in the submission. This capability allows agencies and form designers to provide a highly formatted document generation capability to their staff.
This functionality is sometimes referred to as “Instant Permit” because the main use for this new capability will be to generate a permit, based on information provided in the application after an application has been approved. However, this feature can be used for other official documents such as certificates, licenses, ID cards, etc.
For additional details on this document generation feature as well as the details of how to configure and implement the feature, please reference the Document Generation Design Guide document.
Payment Voucher
The nFORM system supports the ability to define custom Payment Vouchers for submitters to download in support of the payment remittance process.
A Payment Voucher can be designed for the system as a whole as well as for specific forms. The content in the Payment Voucher can be static or dynamically driven based on the data provided in the submission. This capability allows agencies and form designers to provide a highly formatted payment voucher to online submitters.
For additional details on this payment voucher customization feature as well as the details of how to configure and implement the feature, please reference the Payment Voucher Design Guide document.
Hardcopy Signature Form
The nFORM system supports the ability to define custom Hard Copy Signature Forms for submitters to download in support of the form submission signature process.
A Hard Copy Signature Form can be designed for the system as a whole as well as for specific forms. The content in the Hard Copy Signature Form can be static or dynamically driven based on data provided in the submission. This capability allows agencies and form designers to provide a highly formatted Hard Copy Signature Form to online submitters.
Electronic Signature Authorization Form
The nFORM system supports the ability to define custom Electronic Signature Authorization Forms for submitters to download in support of the electronic signature authorization process.
An Electronic Signature Authorization Form can be designed for the system as a whole. The content in the Electronic Signature Authorization Form can be static or dynamically driven based on data in the user’s account profile. This capability allows agencies to provide a highly formatted Electronic Signature Authorization Form to online users to authorize online signing.
Email Output
The nFORM system supports the ability to define custom content to be delivered via automated emails sent from the nFORM system.
Individual emails can be customized to include custom content. The content in the emails can be static or dynamically driven based on data provided in the submission. This capability allows agencies to provide highly formatted and targeted emails to online submitters.
For additional details on this email output customization feature as well as the details of how to configure the emails, please reference the Email Template Design Guide document.
Alternative Identifier
The nFORM system supports the ability to define an alternative identifier for a form submission (e.g., Permit ID, Application ID, etc.). Alternate Identifier allows the form designer to collect data from the submitter, which will then be displayed on the Processing Dashboard, and submission headers as a way to associate a meaningful name that the application can remember and search on.
Use the following steps to configure an alternative identifier:
Click on the Forms link at the top of the page to open the Forms Manager.
Click on the Edit icon for the form in question to open the Forms Designer.
Ensure the current version of the form is in a Draft status to ensure the form configuration can be edited.
Click on the Form Details tab.
Scroll to the Alternative Identifier section of the form.
Check the Activate Display of Alternative Submission Identifier checkbox to enable this feature and display additional relevant settings.
Display Label: By default, “Alternative Identifier” is displayed as the label for references to this value. When utilized, the default label (i.e. "Alternative Identifier") will be changed to another value (e.g., Permit Number, Document Number, etc.).
To override this display label to a custom value, check the Override Display Label checkbox. This will enable the Custom Display Label field for entry.
Enter the desired display label value in the Custom Display Label field.
Alternative ID Control: The Alternative ID Control field is used to specify the control that will be used to house and manage the alternative identifier. From this field, select the Tag value for the control that is considered the Alternative ID Control on the form.
Note: Only the following controls, when assigned a Tag value, can be referenced as an Alternative Identifier: short text, calculated, single select, phone, email, date, time, number and URL controls.
Form Revision Notes
Form revision notes can be added to a form via the From Revision Notes section in 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 simply click on the add note… button. This will give you a prompt to enter the pertinent data. Once a revision note has been created you can edit or delete your note. The revision notes automatically indicate what version they were added to in the list of revision notes.
Fee Configuration
Fees can be assessed by a submitter at the time of form submission. These fees can be one or more standard flat fees or a calculated value based on information provided within the submission. These fee calculations can be built directly in the form designer and then associated with a Fee Line Item. In addition, the form designer can mark forms to have no fees by simply turning off Fee Payments.
Finally, the designer can indicate whether payment must be successfully submitted through an online payment gateway prior to the submission being accepted as Received.
Fee Line Items allow form designers to define Minimum and Maximum threshold values that will be used if the calculation formula yields a value above or below the defined threshold(s). These threshold values are not required.
When a fee is calculated based on submitter input, all form control(s) that contain this input for the calculation must be assigned a Tag so that the fee calculation can refer to the control(s).
In order to support multiple fee line items, fees should be configured in a Calculated control (hidden or visible) on the form and then simply associating the calculated control to the Fee Line Item. This feature allows a form designer to present the fee that will be due, in real-time, as the data is entered by the submitter.
The following sections describe the different types of calculation formulas that can be utilized from within calculated controls that will be associated with a Fee Line Item. The fee formulas utilize the C# arithmetic functions. More complex calculations may be handled on a case-by-case basis and may require assistance.
Payment Options
A form designer will be presented with choosing the payment option at the top of the Fees screen in the form designer. Form designers can configure this fee to be online, offline, both, or no fee. If the form designer doesn’t want a fee tied to the form they can simply choose the No Fee option.
Mail-In Payment Options
If offline or manual payments will be allowed, the user must provide Remittance Address details. 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 + in the Fee Line Item section. A modal popup is displayed.
The system displays the following fields:
Field | Description | Comments |
|---|---|---|
Code | Provide a brief code that identifies the Fee Line Item type, this can be alphanumeric and should have no spaces. | The Fee Line Item Code is used by payment gateway integrations to pass information to the customer’s financial system. |
Description | Provide a description for the line item. |
|
Use Submission Data? | Select On to be able to view and select the appropriate form control. Leaving this field set to Off displays a numeric field where the user can enter a fixed fee amount. |
|
Users can enter one or more Fee Line Item Types, each associated with a different calculated control in the form.
Simple Arithmetic Formula
Numeric controls can be used in the most simple form fee calculations, and simple arithmetic is sufficient in most cases.
An example of a basic arithmetic calculation would be a simple per-unit calculation. If there is a control on the form for the total number of gallons in a tank and we want to base the calculated fee off that total volume multiplied by $0.06, this can be written as:
`Gallons`*0.06M |
where the Tag for the control that the user reports the total volume in gallons of their tank is Gallons.
Considerations:
When referencing a control in the form, 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 .description is required after the closing backtick of the tag. See the scenarios below for examples.
The available mathematical operators include, but are not limited to + (add), - (subtract), / (divide), and * (multiply). Parentheses can also be used where appropriate.
An M character needs to 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 repeatable (tabbed) sections. These functions are appended to the end of the tag name on which the calculation is to be done.
For example, if we are trying to add together numeric values provided from a control in a repeatable form section, such as all the capacities of all the tanks in a repeating tank section we can write the calculation as:
`Tank_Capacity`.Sum() |
where the Tag for the tank capacity volume control is Tank_Capacity.
These aggregate functions can also utilize conditional logic for the aggregate function. This is written by establishing a variable and then comparing the variable to a value.
For example, if we are trying to count the number of all the tanks with capacities greater than 1000 we can write the calculation as:
`Tank_Capacity`.Count(c => c > 1000) |
where the Tag for the tank capacity volume control is Tank_Capacity and c is the variable name chosen to represent capacity. This will count the number of times the `Tank_Capacity` field has a value greater than 1000.
Considerations:
The variable name is irrelevant to the function as long as it is consistent across the function, however, data type names (e.g., date, string, integer, etc.) should be avoided to ensure the system knows how to handle the variable.
The application utilizes Enumerable methods for these aggregate functions and a more comprehensive list of applicable operators can be found on the Microsoft website. Methods that have been used in nFORM calculated fee formulas in the past include.Count(), .Max(), .Min(), .Sum(), and .Where()
Conditional If/Then Logic
Conditional operators can be used to support If/Then type logic for conditional logic in complex fee calculations.
The conditional operator ? returns one of two values depending on the value of a Boolean conditional statement. The syntax for using this conditional logic is [condition] ? [first_expression] : [second_expression] with the question mark following the condition and the colon separating the two different expressions. The first expression is evaluated if the condition is True, and the second is evaluated if the condition is False.
For example, if there is a calculated fee requirement that the fee be $0 if the submitter has a fee status of Exempt, but $125 if the fee status is anything else, this can be written as:
`Fee_Status` == “Exempt” ? 0.0 : 125.00 |
where the Tag for the fee status control is Fee_Status.
Considerations:
Constant string values should be enclosed 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), >= (greater than or equal to), etc.
While this list of complex calculation types is not extensive, it covers those types of calculations which have been built in nFORM in the past and allows for a wide variety of complex fee calculations to be created 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 accessible, viewable, and editable by internal users of the system only. The attributes are initially configured for a form during form design and are available for data entry during the submission processing phase. Additional attributes can also be added during submission processing if needed.
This section of the document will describe how to configure the default Internal Data Controls for a form, how to add/adjust Internal Data Controls for a submission, and how to use Internal Data Controls on a submission.
Configure Default Internal Data Controls for a Form
This section of the document describes the setup/configuration of the default set of internal data controls (for collecting additional information, by internal staff) for the form.
To configure the default Internal Data Controls for a form, follow these steps:
Click on the Forms link at the top of the page to open the Forms Manager.
Click on the Edit icon for the form in question to open the Forms Designer.
Ensure the current version of the form is in a Draft status to ensure the form configuration can be edited.
Navigate to 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 in question.
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.
The Type specifies the type of internal control. Internal Controls can be of the following Types:
Checkbox
Date
Dropdown
Paragraph
Text
Time
The Show After value is used to specify a custom sort order for the list of values.
The Tag value is a unique name assigned to an internal control to allow the control to be identified. This attribute is essential for facilitating the data importing and exporting processes.
The Read-Only attribute 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 "finalizing" (moving the submission to a "final" status) a submission.
The Automated assigning of value(s) is used to configure the population of the internal data control during the submission process based on a value from the submission or a default value. The following options are available.
None disables the population of data during the submission process.
The 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 will be displayed. These values will be used to link the internal data control to a field within the submission.
The Source Section field is used to select and identify the section that houses the field that will be copied to the internal data control field.
The Source Control field is used to select and identify the control (within the selected Source Section) which represents the field that will be copied to the internal data control field.
Check the Update linked data on the submission revision field 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.
The 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. Note: This option is only available for the Dropdown, Paragraph, and Text types.
The Usage section allows an internal data control to be marked for intent. The current options for this feature are File Transfer and payment processing. Both options allow the user 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 internal data control.
Repeat the above steps for each desired Internal Data Control.
Connecting Internal Data Controls to Form Processing Steps
First, ensure your internal data controls have been properly added to your form according to the directions above.
Proceed to step 3 of the form design process.
Navigate to the step you want to add internal data validation to (or create a new step) and click on the wrench icon.
This will open a dialog representing the step actions.
Click the Add new step action... - this will allow you to add a new step action to your processing step.
Under 'Action to perform' select Validate internal data and choose which internal controls you want required.
Populate Internal Data Controls for a Submission
This section of the document describes how Internal Data Controls can be populated for a submission.
To populate the Internal Data Controls for a specific submission, follow these steps:
Open the Submission View page for the submission in question from the Processing Dashboard.
Hover over the Internal Data attribute and click on the field. The attribute will now be editable.
Enter the appropriate values in this field.
Click out of the field to save the entered values.
Monitoring Internal Data Control and Event Status’
After a form is submitted there is usually a large amount of activity regarding workflow events and internal data controls. Utilizing the event log is an efficient way to monitor your form for any workflow event-related actions. Once on the submission overview, a summary of the event log can be found on the right column of the overview page. Action, user, date, and time are all details available in this section.
Providing a Direct Link to a Form from Another Website
Hyperlinks can be provided to open a form in nFORM. How the links are structured will determine how the user is brought to a form.
Form Landing Page
The most basic link will bring the user to the form landing page, where they can read form instructions and initiate form entry. In this case, we only need to send the Form Tag, which is located in the Form Designer.
Structure:
https://[baseNformUrl]/?FormTag=[formTagName] |
Example:
Skip Form Landing Page
If we want to bring the user to the first section of the form, bypassing the form landing page, then we use the skipLandingPage parameter.
Structure:
https://[baseNformUrl]/?FormTag=[formTagName]&skipLandingPage |
Example:
Prepopulation Links
For existing permits and reports, where the permit number is required to begin form entry and where we may have pre-population, we will want to pass in the permit number/registration number as the prepopulateContext. Combining this with the skipLandingPage parameter will bring the user directly to the first section of the form with their form prepopulated using the permit number passed in.
Structure:
https://[baseNformUrl]/?FormTag=[formTagName]&prepopulateContext=[ContextId]&skipLandingPage |
Example:
Data Inheritance Links
For forms that allow the user 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:
Note: Forms must be published, and externally available (i.e., the Form for Internal Use Only attribute is unchecked) and a Form Tag value must be assigned to enable this feature to work.
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 back to an unsecured page (outside of the system). Typically, the page that hosted the link originally directed them to the anonymous form. Configure the return URL setting in the varEnvironmentOverrides.config files app.submission.confirmation.buttonUrl setting.
Data Integration
The nFORM system supports the ability to import (e.g., Auto-Fill and Pre-Fill), export, and/or change data in the system based on external sources/destinations. See the Data Integration section of the nFORM Data Integration Guide for additional details on these features.
Submission Data Upload
The nFORM system supports the ability to upload/pre-populate data from a form-compliant XML document. See the XML Upload Guide for additional details on this feature.
Staff Assignments
nFORM provides Form Designers with the ability 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 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 (e.g., Administrative Staff, Engineer, or Supervisor) that individuals assume in performing their work within the organization.
Workgroups define each group within the organization that assembles to perform submission processing (e.g., region, office, or team).
Workgroup Route Maps define each association (or mapping) used to assign workgroups based on a value in a submission (e.g., Region by County, Team by Permit Type, etc.).
The base Roles, Workgroups, and Workgroup Route Maps must be first configured for the organization. To configure the Organization, perform the following:
Select the Parent Organization.
If not in Draft mode, enable Draft mode for the Organization.
Navigate to the Staff Assignments tab.
Role Management
To add a new Role:
Select the Edit button next to Roles on the Staff Assignments tab of the Organization Designer.
If the screen is not in an add state, select the Add New Role button. A dialog will be presented where the Name attribute can be entered to define the name of the role.
Enter the Name attribute to define the name of the Role.
Once the Role is defined, select 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 represent the User that will be assigned to the current Role when a Submission's Workgroup is assigned to the selected ‘When Workgroup matches...’ value. Repeat this step for each user workgroup assignment for the Role.
To edit a Role:
Select the Edit button next to Roles on the Staff Assignments tab of the Organization Designer.
Select the Role to edit by clicking on the Role row.
Adjust the Role settings as needed.
Workgroups will need to first be defined to allow individuals to be assigned "When Workgroup matches...". The Role-Workgroup-User mappings/assignments can be managed from both the Role and the Workgroup areas.
Workgroup and Role Assignments
To add a new Workgroup:
Select the Edit button next to Workgroups on the Staff Assignments tab of the Organization Designer.
If the screen is not in an add state, select the Add New Workgroup button. A dialog will be presented where the Name attribute can be entered to define the name of the Workgroup. Enter the Name attribute to define the name of the Workgroup.
Once the Workgroup is defined, select 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 represent the user that will be assigned to the current Workgroup when a Submission's Workgroup is assigned to the current Workgroup value.
Repeat these steps for each user role assignment for the workgroup.
To edit a Workgroup:
Select the Edit button next to Workgroup on the Staff Assignments tab of the Organization Designer.
Select the Workgroup to edit by clicking on the Workgroup row.
Adjust the Workgroup settings as needed.
Workgroup Route Maps
To add a new Workgroup Route Map:
Select the Edit button next to Workgroup Route Maps on the Staff Assignments tab of the Organization Designer.
If the screen is not in an add state, select the Add New Workgroup Route Map button. A dialog will be presented where the Name attribute can be entered to define the name of the Workgroup Route Map.
Click on the new Workgroup Route Map.
Select the Add Row button.
Enter the When input matches… value which represents the value entered/selected on a submission that will be used to match to/assign a Workgroup.
Select the Assign Workgroup value which represents the Workgroup that will be assigned to a submission when the Submission includes the When input matches… value.
Repeat these three steps for each Workgroup Assignment for the Workgroup Route Map.
Repeat all these steps for each Workgroup Route Map.
To edit a Workgroup Route Map:
Select the Edit button next to Workgroup Route Maps on the Staff Assignments tab of the Organization Designer.
Select the Workgroup Route Map to edit by clicking upon the Workgroup Route Map row.
Adjust the Workgroup Route Map settings as desired.
Once the Organization’s base Roles, Workgroups, and Workgroup Route Maps are defined, the Form can be configured to utilize the Organization settings for@ staff members.
To manage staff assignments for a form:
Navigate to Step 3 (Processing Steps) of the Form Designer for a form.
Click Edit staff assignments in the top right hand of Step 3 of the Form Designer wizard. The Edit Staff Assignment dialog box will be displayed.