This is a multi-layered configuration issue that requires addressing all four components of the custom field persistence chain:
1. Custom Field Persistence Flag
You’ve confirmed this is enabled, but let’s verify the complete configuration. In Admin > Templates > CAPA > Root Cause Analysis, each custom field should have these settings:
- Persist to Database: ✓ (checked)
- Storage Type: Database (not Session or Memory)
- Field Scope: Record-level (not Form-level)
If any field has Storage Type set to “Session” or “Memory”, it will display but never persist. Edit each field and explicitly set Storage Type to “Database”.
2. Database Column Mapping
The columns exist, but verify the mapping configuration is correct. Navigate to Admin > System > Template Configuration > Field Mappings and locate your CAPA template. You should see entries like:
<field-mapping template="CAPA_ROOT_CAUSE">
<field id="failure_mode" column="custom_field_1" type="VARCHAR"/>
<field id="contributing_factors" column="custom_field_2" type="TEXT"/>
<field id="five_why_analysis" column="custom_field_3" type="TEXT"/>
</field-mapping>
The field IDs must EXACTLY match the IDs in your template definition. Even a case mismatch (failureMode vs failure_mode) will break the mapping. Export your template definition and compare the field IDs character-by-character.
3. Form Submission Payload Validation
Enable payload logging to diagnose client-side issues:
- Admin > System > Logging > Form Submission
- Set log level to DEBUG
- Submit a test CAPA with custom fields populated
- Check /logs/form-submission.log for the POST payload
Look for your custom field data in the JSON payload:
{
"capa_id": "CAPA-2025-0042",
"failure_mode": "Material defect",
"contributing_factors": "Supplier quality issue",
"five_why_analysis": "Why 1: Material failed..."
}
If the custom fields are missing from the payload, the form binding is broken. Check your form template’s data-binding attributes in the UI configuration.
4. Field Type Compatibility
Verify that the Arena field type matches the database column type:
- Text fields (short) → VARCHAR(255)
- Text fields (long) → TEXT or CLOB
- Number fields → INTEGER or DECIMAL
- Date fields → DATETIME or TIMESTAMP
A type mismatch can cause silent failures where Arena attempts the write but the database rejects it. Check your database error logs for constraint violations:
SELECT log_time, error_message
FROM system_error_log
WHERE table_name = 'capa_root_cause'
AND error_type = 'DATA_TYPE_MISMATCH'
ORDER BY log_time DESC;
Complete Resolution Steps:
- Verify Storage Type = “Database” for all three custom fields in template definition
- Export field-mappings.xml and validate field IDs match template exactly
- Enable form submission logging and verify custom field data in POST payload
- Query database error logs for type mismatch or constraint violation errors
- If mapping is incorrect, update field-mappings.xml and restart the application server
- If payload is missing custom fields, check form template data-binding configuration
- Test with new CAPA record after corrections
The most likely culprit is either incorrect field ID mapping (step 2) or Storage Type set to Session instead of Database (step 1). After correcting the configuration, existing CAPA records won’t retroactively populate, but new submissions should persist correctly. You may need to re-enter data for existing CAPAs.