# Forms Tab - Forms Publisher

- Updated on Mar 9, 2023
- Published on Jan 17, 2023
- 4 minute(s) read
- TL
- RS

The **Form** tab of the Form page allows admins to specify how the form is displayed and rendered for Mobileforce FSM users, providing the complete specification for the user interface where you can add objects, sections, inputs, and sub form apps.

The page is divided into two panes:

- The left pane is a tree-like structure listing the sections and inputs for the layout. This pane supports drag-and-drop functionality, allowing you to reorder the objects.
- The right pane provides details of the various form elements (such as a section or an input), as well as a preview of the entire Form, in three form factors: Phone, Tablet, or Computer.

Additionally, click the **Details** tab to view the information regarding the selected object (section, input, or sub form app) in the left pane.

## Adding Elements to the Form

When creating FSM forms, you can add three action elements to the form: Sections, Inputs, and Subforms.

### Adding Sections

Sections allow you to organize inputs in your form, typically acting as a header.

**Example:**

In the above graphic, a section titled _Customer Information_ has been added to the form. The section is highlighted in yellow in both the left and right panes.

To add a section, click the  button.

Enter the desired label and click **Add**. The section is added to the form.

**Note:**

You cannot create subsections (child sections) in Mobileforce FSM forms.

Once added you can modify the section in the **Details** tab as needed:

### Adding Inputs

Creating an input for a form allows you to capture data of a specific type in the form.

**Example:**

In the above graphic, four inputs have been added to the form:

- **Client Name:** a text field
- **Service Date:** a date field
- **Location:** a map region field
- **Work Complete:** a pick list field

The inputs are highlighted in green in both the left and right panes.

To add an input, click the  button.

When you click Add Input a pop-up window displays allowing you to specify the details of the input.

When finished, click **Add** to add the input to the parent Column object. You can then update the inputs from the **Details** tab.

To change the input type, click the **Type** dropdown list, and select the desired type.

**Notes:**

- The fields on the Details pane are unique to the Input type you selected. So, a _Text_ input (as displayed in the above screenshot), would have different fields from a _Checkbox_ input.
- When entering an **Name** for the Input, ensure that the name does not include the prefix _"cpq\_"_, as this is reserved for pre-defined inputs created by Mobileforce.

Click **Save** when you are finished updating the input.

**Notes:**

When you hover over fields on the right pane, you get hints on what values to enter in those fields, as well as what the controls mean.

### Forms: Dynamically Computed Value

One benefit of Mobileforce forms is the ability to not only accept a rich set of input types, but furthermore, dynamically compute values of specific fields.

**Example:**

A daily Health Self Reporting form might require a date timestamp indicating when the user filled out the form. It is important that this time stamp be accurate and not modifiable, for audit reasons, as well as to control the spread of diseases.

Mobileforce forms support dynamically computed values that are based on powerful expressions that a business analyst (who is not a developer) can easily create. The following screenshot shows the dynamically computed value of the "date" field.

Note that the input field _Submission Date_ takes a dynamically computed value, which is easily filled out using the "Form Expression" evaluator widget, with a value **TODAY()**. This not only prevents user error, but also enables a non-developer creator to specify complex constraints, such as pre-filled date, in a submission.

### Forms: Required Fields

An additional feature of the Mobileforce Forms Publisher is your ability to ensure that specific fields are required in order to complete and submit the form.

**Example:**

A daily Health Self Reporting form might require that users complete the inputs in the _Health Affirmation_ section, where the form asks users to answer a sequence of questions about their current health.

### Adding Sub Forms

Sub Forms allow you to associate other published forms in your current form. This allows you to:

- Ensure stability by maintaining static content in a form, while adding dynamic content.  (For example, you create a standard form to collect data from your customers, but have a sub form that contains promotional or time-sensitive information)
- Simplify the customer experience by ensuring that users only review a single form.

**Example:**

In the above graphic, a sub form titled _Field Ticket_ has been added to the form. The section is highlighted in purple in both the left and right panes.

To add a section, click the  button.

Select the desired form from the **Sub Form App** dropdown list and enter the desired label for the form in the **Header Label** field. Then click **Add**. The sub form is added to the form.

## Managing Objects

From the **Form** page, you can do the following:

- To edit an object, click to select it in the left pane; its details are displayed in the right. Edit the desired fields and click **Save**.
- To delete an object, click to highlight it in the left pane, and click **Delete**.
- To reorder an object, click to select it in the left pane and drag it to the desired location. If the desired location is invalid, a red X is displayed next to your cursor.
