• Decrease Text SizeIncrease Text Size

Centralpoint Forms Management

Centralpoint Forms Management

Understanding Centralpoint's Forms Management is essential to unlocking a whole new level of automation and efficiency across your organization. This narrated video walks you through Forms, the Forms Wizard, Workflow Management, and Reporting — showing how easy it is to create, manage, and route forms dynamically based on user input. Centralpoint Forms aren't just simple data collectors; they drive powerful, role-based workflows that can automate reviews, approvals, assignments, and even the dynamic generation of documentation — all tailored to the data users provide.

By mastering Forms and Workflow, you can transform static, manual processes into intelligent, automated routines. Imagine building proposals, contracts, compliance documents, or internal reports automatically, based entirely on how a user completes a form — without duplicative work or delays. This video will show you how Centralpoint empowers you to streamline operations, improve data quality, enforce governance policies, and deliver a highly personalized, efficient experience to both users and administrators alike.

How Centralpoint Forms Work

A complete Centralpoint form consists of four components working together:

Component Purpose Location
Form HTML User-facing input fields using ff-container markup Forms → Page1 tab
Field Map XML Maps form values to module fields for data storage Forms → Processing tab
Email Templates Notification content for submitter and approvers Forms → Email tab
Document Templates Word template with placeholders for PDF generation Forms → Properties

Building Your First Form: Complete Example

Let's build an Employee Request form with five fields: Employee Name, Department, Request Date, Description, and Signature. This example shows you everything you need in a real working form.

Understanding the ff-container Pattern

Every form field in Centralpoint uses the ff-container pattern. This wraps each field with its label and ensures consistent styling and behavior.

<div class="ff-container">
  <div class="ff-label">
    <label for="cpsys_FormItem_employeerequest_EmployeeName">Employee Name</label>
    <span class="required">*</span>
  </div>
  [cp:scripting key='FormTextBox' id='EmployeeName' 
    defaultValue='cpsys_Constant:UserInfo:EmployeeName' 
    RequiredFieldErrorMessage='* Required' 
    group='employeerequest' /]
</div>

Key Point: The group attribute (in this example: employeerequest) MUST be identical in every field, Field Map reference, and email template. If it doesn't match, the form will fail silently.

Complete Form HTML

Here's the complete HTML for all five fields. Notice how each field follows the same ff-container pattern, and all use the same group name.

<!-- Employee Name Field -->
<div class="ff-container">
  <div class="ff-label">
    <label for="cpsys_FormItem_employeerequest_EmployeeName">Employee Name</label>
    <span class="required">*</span>
  </div>
  [cp:scripting key='FormTextBox' id='EmployeeName' 
    defaultValue='cpsys_Constant:UserInfo:EmployeeName' 
    RequiredFieldErrorMessage='* Required' 
    group='employeerequest' /]
</div>

<!-- Department Field (Taxonomy Dropdown) -->
<div class="ff-container">
  <div class="ff-label">
    <label for="cpsys_FormItem_employeerequest_Department">Department</label>
    <span class="required">*</span>
  </div>
  [cp:scripting key='FormTaxonomy' id='Department' 
    rootValue='{DEPT_TAXONOMY_GUID}' 
    defaultValue='cpsys_Constant:UserInfo:Department' 
    group='employeerequest' /]
</div>

<!-- Request Date Field (3 Components Required) -->
<div class="ff-container">
  <div class="ff-label">
    <label for="cpsys_FormItem_employeerequest_RequestDate">Request Date</label>
    <span class="required">*</span>
  </div>
  [cp:scripting key='ExtDatePicker' id='ext_RequestDate' 
    sourceFieldId='RequestDate' displayDateTimePicker='no' 
    defaultValue='cpsys_Constant:UserInfo:RequestDate' 
    group='employeerequest' /]
  [cp:scripting key='FormTextBox' id='RequestDate' 
    defaultValue='cpsys_Constant:UserInfo:RequestDate' 
    group='employeerequest' /]
  [cp:scripting key='FormRegularExpresssionValidator' id='regex_RequestDate' 
    defaultValue='Request Date must be a date.' 
    itemToValidate='RequestDate' 
    pattern='^\d{1,2}\/\d{1,2}\/\d{4}$' 
    group='employeerequest' /]
</div>

<!-- Description Field (Multi-line Text) -->
<div class="ff-container">
  <div class="ff-label">
    <label for="cpsys_FormItem_employeerequest_Description">Description</label>
  </div>
  [cp:scripting key='FormTextBox' id='Description' 
    TextMode='MultiLine' Rows='4' 
    defaultValue='cpsys_Constant:UserInfo:Description' 
    group='employeerequest' /]
</div>

<!-- Signature Field -->
<div class="ff-container">
  <div class="ff-label">
    <label for="cpsys_FormItem_employeerequest_Signature">Signature</label>
    <span class="required">*</span>
  </div>
  [cp:scripting key='FormSignature' id='Signature' 
    Width='650' Height='250' 
    RequiredFieldErrorMessage='* Required' 
    group='employeerequest' /]
</div>

<!-- Hidden Fields for Context -->
[cp:scripting key='FormHiddenField' id='User_Id' 
  defaultValue='cpsys_Constant:UserInfo:UserId' 
  group='employeerequest' /]
[cp:scripting key='FormHiddenField' id='Record_Document_Name' 
  defaultvalue='cpsys_randomstring:8' 
  group='employeerequest' /]

Important: Date fields require THREE components: ExtDatePicker (the calendar widget), FormTextBox (hidden field that stores the value), and FormRegularExpressionValidator (ensures proper date format). All three must be present or the date field won't work.

Signature Fields Auto-Generate Hidden Fields: When you use FormSignature, Centralpoint automatically creates four hidden fields: Signature_UserId, Signature_UserName, Signature_SignDate, and Signature_IpAddress. You MUST map all four in your Field Map XML (shown below).

Connecting Forms to Modules: Field Map XML

The Field Map XML tells Centralpoint where to save the form data. It maps each form field ID to a module attribute. This goes in the Processing tab of your form.

<navigation systemName="EmployeeRequests">
  <!-- Combines Employee Name + Date as the record Title -->
  <attribute systemName="Title"><![CDATA[
    [cp:scripting key='FormState' id='EmployeeName' group='employeerequest' /] - 
    [cp:scripting key='FormState' id='RequestDate' group='employeerequest' /]
  ]]></attribute>
  
  <!-- Map each form field to its corresponding module attribute -->
  <attribute systemName="EmployeeName"><![CDATA[
    [cp:scripting key='FormState' id='EmployeeName' group='employeerequest' /]
  ]]></attribute>
  
  <attribute systemName="Department"><![CDATA[
    [cp:scripting key='FormState' id='Department' group='employeerequest' /]
  ]]></attribute>
  
  <attribute systemName="RequestDate"><![CDATA[
    [cp:scripting key='FormState' id='RequestDate' group='employeerequest' /]
  ]]></attribute>
  
  <attribute systemName="Description"><![CDATA[
    [cp:scripting key='FormState' id='Description' group='employeerequest' /]
  ]]></attribute>
  
  <!-- Main signature image -->
  <attribute systemName="Signature"><![CDATA[
    [cp:scripting key='FormState' id='Signature' group='employeerequest' /]
  ]]></attribute>
  
  <!-- Four auto-generated signature metadata fields (REQUIRED) -->
  <attribute systemName="Signature_UserId"><![CDATA[
    [cp:scripting key='FormState' id='Signature_UserId' group='employeerequest' /]
  ]]></attribute>
  
  <attribute systemName="Signature_UserName"><![CDATA[
    [cp:scripting key='FormState' id='Signature_UserName' group='employeerequest' /]
  ]]></attribute>
  
  <attribute systemName="Signature_SignDate"><![CDATA[
    [cp:scripting key='FormState' id='Signature_SignDate' group='employeerequest' /]
  ]]></attribute>
  
  <attribute systemName="User_Id"><![CDATA[
    [cp:scripting key='FormState' id='User_Id' group='employeerequest' /]
  ]]></attribute>
  
  <!-- Path for generated PDF document -->
  <attribute systemName="Document_Record_Resource"><![CDATA[
    /Uploads/Forms/{FORM_GUID}/[cp:scripting key='FormState' id='Record_Document_Name' group='employeerequest' /].pdf
  ]]></attribute>
</navigation>

CDATA Wrapping: All FormState values in Field Map XML must be wrapped in <![CDATA[...]]> tags. This prevents XML parsing errors when form data contains special characters.

Complete Form Field Types Reference

Centralpoint Forms support 13 different field types. Each uses the ff-container pattern and requires the group attribute.

Field Type Purpose Key Parameters
FormTextBox Single-line or multi-line text input TextMode='MultiLine', Rows='4', RequiredFieldErrorMessage
ExtDatePicker Date selection with calendar picker (requires 3 components) sourceFieldId, displayDateTimePicker='no'
FormListBox Dropdown selection list PleaseSelect, AddListItems (XML format)
FormRadioButtonList Radio buttons or checkboxes SelectionMode='Multiple' (for checkboxes), AddListItems
FormUpload File upload control defaultValue (stores file path)
FormTaxonomy Taxonomy category selection rootValue (taxonomy GUID)
FormAudience Audience/user selection rootValue (audience root GUID)
FormEditor Rich text editor (WYSIWYG) Width='980' (pixel width)
FormSignature Digital signature capture Width, Height (auto-generates 4 hidden fields)
FormCaptcha CAPTCHA verification styles (CSS styling)
FormHiddenField Hidden metadata fields defaultValue (use cpsys_Constant:UserInfo for user context)
FormButton Submit or action button text (button label)
FormRegularExpressionValidator Field validation with regex itemToValidate, pattern (regex pattern)

Visual Reference: What Field Types Look Like

Here's how each field type appears to users when they fill out a form. This visual guide shows the actual rendered controls including text boxes, date pickers, dropdowns, checkboxes, file uploads, taxonomy selectors, audience selectors, captcha, rich text editor, and signature capture.

Example of Available Form Field Types

Visual reference showing all available form field types as they appear to end users

Critical Rules to Remember

1. Group Consistency: The group attribute MUST be identical across all form fields, Field Map references, and email templates. If the group name doesn't match, form submission will fail silently.

2. CDATA Wrapping: All FormState values in Field Map XML must be wrapped in <![CDATA[...]]>. This prevents XML parsing errors when form data contains special characters like <, >, or &.

3. Signature Fields: FormSignature auto-creates four hidden fields (UserId, UserName, SignDate, IpAddress). You MUST map all four in your Field Map XML or the signature data won't be saved.

4. Date Field Triad: Date fields require three components: ExtDatePicker (calendar widget), FormTextBox (value storage), and FormRegularExpressionValidator (format validation). All three are required.

5. Label ID Format: Label for attributes must follow this exact format: cpsys_FormItem_{groupname}_{FieldId}. For example: cpsys_FormItem_employeerequest_EmployeeName