Forms Reference: Validation, Errors, Limits & System Behavior

A Lookup Reference for Validation Rules, Error Messages, System Limits, and Data Lifecycle Behavior


This article is a quick-lookup reference for the rules, limits, and behaviors that govern Forms. It’s organized for scanning rather than reading end-to-end — use the section headings to jump to what you need. For conceptual orientation, read The Complete Guide to Task Management Forms first.


1. Validation Rules by Input Type

Common Rules (apply across input types where supported)

  • Mandatory fields must be filled before the employee can navigate to the next page or submit the form. Field-level error messages appear when the field loses focus while empty.
  • Character limits apply to text-based fields (see Section 3 for specific maximums). Input is blocked once the limit is reached.
  • Value limits apply to numeric fields configured with min/max value rules. Inputs outside the range trigger inline validation.
  • Format validation applies to specialized inputs (email format, phone number with country prefix, date format).
  • Unique answer validation is configurable in the Client Portal but is currently deferred / not enforced — the toggle may be hidden or disabled depending on release state.

Input-Type-Specific Rules

Input Type Validation
Text Min char, max char (when configured)
Number / Number Stepper Min value, max value (when configured); numeric only
Email Must be a valid email format
Phone Number (Prefix) Numeric value with country prefix (default +62)
Date Valid date in YYYY-MM-DD
Dropdown Single / Radio Exactly one selection required if mandatory
Dropdown Multiple / Checkbox At least one selection required if mandatory; max 10 options for Checkbox/Radio (excluding “Lainnya”)
Currency / Length / Stock / Shelf Length Numeric value with prefix or suffix; non-negative
Photo / Open Camera / File At least one file required if mandatory
Photo Before-After Both Before and After image sets required if the question is mandatory
Stock OPEN-ENDING Both OPEN and ENDING values required (sub-fields are non-breakable)
Shelf Share Numeric, supports up to 2 decimal places, no negatives, suffix in cm or m; mandatory is locked to Yes

2. Common Error Messages

Client Portal (Admin)

Trigger Message
Non-whitelisted user accesses Form module No Access — redirected to the first allowed module
Logic jump target page deleted “target page is no longer exists” — appears under the affected Jump To field; blocks step progression
Adding a second logic jump question to the same page “Multiple questions with logic jumps are not allowed”
Reordering causes two logic-jump questions on the same page “Failed to reorder data. Only one question with a logic jump is allowed per page”
Adding a second compound to a compound “Failed to add Question: there can only be 1 Compound Input Type here.”
Saving a form when a selected channel is no longer in the system “The selected channel(s) no longer exist in the system. The configuration has been refreshed, and invalid selections were removed.”
Saving a form when a selected working group / level / node is deleted “Working Group(s) no longer exist and automatically removed from the list. It is safe to proceed.”
Compound system data missing during validation “Some selected filter items no longer exist in the system. The configuration has been refreshed and invalid selections were removed.”
Bulk CSV upload exceeds row limit “The uploaded data exceeds the maximum of 1000 rows.”
Bulk upload exceeds option max per question “Maximum number of options per question exceeded”
Export rate limit exceeded “Failed to begin export: Maximum attempts exceeded. Please try again in N minutes.”

Mobile (Field Employee)

Trigger Message
Mandatory or invalid field on Selanjutnya/Simpan A drawer summarizes the errors; field-level messages stay visible until corrected
Visit checked out from another device “Kunjungan ini telah diselesaikan melalui perangkat lain. Silakan kembali ke daftar kunjungan untuk melanjutkan.” (CTA: back to channel list)
Per Visit target not yet met when tapping Kirim Drawer lists incomplete forms with current X/Q and remaining Q-X
Daily target reached “Target harian sudah tercapai”
Form target reached “Target sudah tercapai”
Copy from Previous when no submission exists “No previous data available” — proceed to fill manually
Copy from Previous when version mismatch “Form has been updated” — copy is hard-blocked

3. Configuration Limits

Form Template

Limit Value
Form Template Name (max characters) 250
Form Template Description (max characters) 250
Training Title (max characters) 140
Training Material — number of files Up to 5
Training Material — file types JPEG, PNG, HEIC, PDF
Training Material — file size each 5 MB
Active Period (Temporary Form) — max range Start = today minimum; end = up to 360 days after start

Pages and Questions

Limit Value
Page format options List only (single-format limitation in current release)
Logic jump questions per page Maximum 1
Question Title (max characters) 48 (in Compound)

Option-Based Inputs

Input Type Max Options Notes
Checkbox 10 (excluding Lainnya) Add Option button disables at limit
Radio 10 (excluding Lainnya) Add Option button disables at limit
Dropdown Single No max Mobile shows first 100 alphabetically + search
Dropdown Multiple No max Mobile shows first 100 alphabetically + search

Bulk CSV Upload

Limit Value
Max rows per upload 1,000
Behavior on exceeding All rows fail with toast The uploaded data exceeds the maximum of xxx rows.
Validation layers Layer 1 (file format/structure), Layer 2 (row data)
Partial success behavior Valid rows imported; invalid rows surfaced in the result file

Compound Input Type

Limit Value
Compound Input Type Name (max characters) 25
Button Label (max characters) 25
Description (max characters) 250
Question Title (max characters) 48
Questions per Compound Maximum 10
Nested Compounds per parent Maximum 1
Nesting depth 1 level only (no nested-inside-nested)
Self-reference Not allowed
Circular nesting Not allowed

4. Export Limits and Retention

Limit Value
Export attempts per 15-minute window 50
Rows per file 50,000 (split into multiple files when exceeded, named 1 of N, 2 of N, etc.)
File retention 90 days from generation date
Status after retention “Expired” — Download button disabled
File format Password-protected .zip
Password format [Client ID][Client Name] (concatenated, no spaces)
Files included per zip Export Log + Task Report Raw Data + (per Compound) Compound Sheet + (per Nested Compound) Nested Compound Sheet
Date range filter 1–31 days; start date max 365 days back; no future dates

Export Job Audit

Each export job is automatically logged with:

  • User ID who initiated
  • Timestamp
  • All applied filter parameters

These logs are accessible via the Export Result page → View Detail.


5. Visit and Draft Lifecycle Rules

Rule Behavior
Form visibility gating Forms only appear in Daftar Tugas after a successful check-in
Snapshot at check-in Form structure, target, availability, assignment, and compound configuration are all locked to the visit
24:00 visitation cutoff If a visit is not completed by midnight, the visit and any unsaved drafts are removed; not recorded in any report
Draft persistence Drafts persist across navigation, app minimization, and temporary network interruption while the visit is “Dalam Proses”
Multiple drafts per form Allowed (up to the target limit); each has a unique Submission ID
Draft data when leaving without saving Discarded; confirmation dialog warns the employee
Final submission Atomic — either all drafts in the visit submit successfully, or none change state (no partial submission)
Check-out failure after successful submission Drafts remain Submitted; visit stays “Dalam Proses”; employee can retry check-out without resubmitting

6. Snapshot Binding (What’s Locked vs What Updates)

Locked to the visit’s snapshot (CP-side changes do NOT affect the current visit)

  • Form structure (pages, questions, input types, options)
  • Logic jump configuration
  • Target value and mode
  • Availability period (Temporary date window)
  • Training material
  • Assignment scope
  • Compound input type configuration (including nested compounds)

Updates apply only to NEW visits

  • Any modification made in the Client Portal during an ongoing visit will only take effect the next time an employee checks in.

Always reflects the latest system state (dynamic)

  • Employee Name in exports — follows the current employee record (Employee ID stays the same).
  • Form Template Name in lists and history — updates if renamed.
  • Channel Name display — updates if renamed.

Always reflects the snapshot at submission time (historical)

  • Form structure and version when viewing or exporting a submitted report.
  • Selected option values in answers (even if the original option was renamed or deleted in the source database).
  • Selected compound items in answers (even if the items were later removed).

7. Historical Integrity Rules

Submitted reports remain accessible and exportable in all of these scenarios:

Scenario Effect on submitted report
Form template renamed Report still visible; latest name shown in lists; original structure preserved
Form template unassigned from channel Report remains in Riwayat and exports
Form template deleted Report still visible and exportable; structure preserved via snapshot
Channel becomes inactive or deleted Report remains; exports include data from inactive/deleted channels
Employee becomes inactive or removed Report remains; exports include data from inactive/removed employees
Working Group / Level / Node deleted Report remains; assignment hierarchy in the snapshot is preserved
Form template upgraded to a new version Original submission still rendered using its original snapshot version

When opening a historical submission, the system always loads the structure based on the version used at submission time, never the current version.


8. Form Versioning Rules

Rule Detail
Form ID Generated once at creation, format ClientID-MMYYYY-10character, never changes
Version increment trigger Save action that commits Step 2 (Form Builder) or Step 3 (Logic Jump) changes
No version increment for Step 1, Step 4, or Step 5 changes (basic info, preview interactions, assignment)
Reverting before save If a structural change is reverted to its original value before saving, no new version is created
One save = one version Multiple structural changes committed in a single save count as one version increment
Question ID — preserved When modifying an existing question’s title, options, mandatory flag, or input type
Question ID — newly generated When adding a question manually, via duplicate question, or via duplicate page
Compound version Compounds version independently; editing a compound automatically propagates a new form version to all forms that use it

9. Save Scope Rules When Editing

Save location What gets committed What gets discarded
Step 1 Step 1 changes only Steps 2, 3, 4, 5 changes
Step 4 (Preview) Steps 1, 2, 3 changes Step 5 changes
Step 5 All Steps 1–5 changes None
Leave page without saving Nothing committed Everything across all steps

Notes:

  • Steps 2 and 3 do not have a Save button. Always advance via Next; commit happens in Step 4 or Step 5.
  • Confirmation modal appears when leaving the edit page with unsaved changes (in-app prompt for breadcrumb navigation; native browser dialog for refresh/close tab).

10. Compound Input Type Special Rules

Rule Detail
Page format on form Always List (single format in current release)
Mandatory and unique on form questions Inherited from compound; locked at form level
Logic jump Only page-level allowed on a Compound Page; question-level disabled
Reordering questions inside a compound Not supported in current release; questions display in insertion order
Item source change Triggers warning; clears existing filter and Info Detail config
Question Input Type change Triggers warning; affects all forms using the compound
Nested compound Maximum 1 per parent, no self-reference, no multi-level, no circular
Shelf Share exclusivity A Shelf Share compound cannot contain any other input type
Shelf Share mandatory Locked to Yes; cannot be changed
Shelf Share decimal precision 2 decimal places maximum on shelf length input
Item identity in mobile Tap the item name to view read-only Info Detail (configured asset/channel attributes)

11. Working Group Dependency Cascade

When working group hierarchy data is modified or deleted, dependencies cascade automatically:

Action on hierarchy Effect on assignment configuration
Working Group deleted The WG is removed; all Levels and Nodes under it are also cleared
Level deleted The Level is removed; all Nodes under it are cleared; the parent WG remains
Node deleted Only that specific Node is removed; the WG and Level remain
All deleted entries on save Auto-removed with confirmation message: “Working Group(s) no longer exist and automatically removed from the list. It is safe to proceed.”
Required fields become empty after reset Save is blocked until valid selections are made

This cascade applies during edit save and during step navigation revalidation. On the read-only edit page (without modification trigger), deleted hierarchy items remain visible until the user explicitly modifies the assignment.


12. Copy from Previous Submission Rules (Mobile)

The Salin Jawaban Sebelumnya feature on mobile lets employees prefill a form using their previous submission. It follows strict rules to prevent incorrect data:

Rule Detail
Eligibility Only the latest submitted report for the same form in the same channel is eligible
Multiple previous submissions The system automatically picks the latest; no manual selection
Version match required If the form version has changed since the previous submission, the copy is hard-blocked with “form has been updated”
No previous submission “No previous data available” message; employee proceeds manually
Copied data is editable All prefilled fields can be modified before saving
Deleted items in copied data Remain visible in the form state; fail validation on Selanjutnya/Simpan
Validation behavior on invalid copied data System scrolls to the first invalid field, expands the section, and highlights the error
Data not pre-filled on partial copy If the copy fails technically, no data is prefilled; form remains empty for manual fill

Where to Next?

If you came here looking for something specific and didn’t find it, the closest companion articles are:

  • For the workflow itself → start with How to Create a Form Template or How to Edit a Form Template
  • For mobile-specific behavior → How to Access and Fill Out a Form on Mobile and the related mobile articles
  • For export details → Understanding the Task Report Export File
  • For a refresher on concepts → The Complete Guide to Task Management Forms