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.
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