Skip to main content
Purpose: Step-by-step guides for common data management workflows using PF-15 (Picklists), PF-16 (Custom Fields), PF-17 (Field Configuration), PF-23 (Object Browser), PF-24 (Custom Objects), PF-25 (Raw Data Editor), and PF-26 (Object Permissions).

Workflow 1: Adding Custom Data to Core Entities

Scenario: Add “Badge Number” field to HR Employees with validation Duration: 10-15 minutes
Prerequisites: Org admin access

Step 1: Create Picklist (Optional)

If the field needs dropdown options, create a picklist first:
1
  • Navigate to Settings → Picklists
  • Click + New Picklist
  • Fill in:
    • Name: employee_badge_prefix (snake_case)
    • Label: “Employee Badge Prefix”
    • Category: HR
    • Description: “Prefix codes for employee badges”
  • Click Create
  • Add items:
    • ADM - Administrative
    • CLN - Clinical
    • OPS - Operations
    • SUP - Support
  • Click Save
  • Code Example (Programmatic):

    Step 2: Define Custom Field

    1
  • Navigate to Settings → Custom Fields
  • Click + New Field
  • Fill in:
    • Entity Type: hr_employees
    • Field Key: badge_number (snake_case, unique per entity)
    • Field Label: “Badge Number”
    • Field Type: text
    • Required: Yes
    • Validation Rules:
    • Help Text: “Format: XXX-#### (e.g., ADM-1234)”
    • Placeholder: “ADM-1234”
  • Click Create
  • Code Example (Programmatic):

    Step 3: Configure Field Layout (Optional)

    1
  • Navigate to Settings → Field Configuration
  • Select entity: HR Employees
  • Select view context: Create Form or Edit Form
  • Find badge_number field
  • Configure:
    • Display Order: 15 (after employee_id)
    • Field Section: “Employment Details”
    • Column Span: 1
    • Visible to Roles: All (or specific roles)
    • Editable by Roles: HR Admin, Org Admin
  • Click Save
  • Code Example (Programmatic):

    Step 4: Use in Employee Forms

    Update HR employee form to include custom fields:

    Step 5: View in Data Manager

    1
  • Navigate to Data Manager
  • Find Employees object
  • Click to view details
  • Go to Fields tab
  • See badge_number in “Custom Fields” section
  • Go to Raw Data tab to see/edit badge numbers
  • Common Pitfalls:
    • ❌ Forgetting to set display_order → Field appears at bottom
    • ❌ Missing validation rules → Invalid data accepted
    • ❌ Not grouping fields → Cluttered form
    • ✅ Always test validation before deploying

    Workflow 2: Creating a Custom Entity

    Scenario: Create “Clinical Licenses” custom object to track employee certifications Duration: 20-30 minutes
    Prerequisites: Org admin access

    Step 1: Create Custom Object

    1
  • Navigate to Data Manager
  • Click + New Object
  • Fill in wizard:
    • Step 1: Basic Information
      • Name: “Clinical Licenses”
      • API Name: clinical_licenses (auto-generated, can edit)
      • Description: “Track clinical licenses and certifications for staff”
      • Category: “HR & Workforce”
      • Icon: “certificate” (or custom)
      • Color: “blue”
    • Click Next
  • Step 2: Review → Click Create
  • Code Example (Programmatic):

    Step 2: Add Fields

    1
  • Navigate to Data Manager → Clinical Licenses
  • Go to Fields tab
  • Click + Add Field
  • For each field: Field 1: Employee
    • Select existing field definition: “Employee Lookup” (or create new)
    • Required: Yes
    • Show in List: Yes
    • List Order: 1
    • Click Add
    Field 2: License Type
    • Create new field definition:
      • Field Key: license_type
      • Field Type: select
      • Picklist: “License Types” (create if needed)
    • Required: Yes
    • Show in List: Yes
    • List Order: 2
    • Click Add
    Field 3: License Number
    • Create new field definition:
      • Field Key: license_number
      • Field Type: text
      • Required: Yes
      • Validation: Pattern ^[A-Z]{2}-\\d{6}$
    • Show in List: Yes
    • List Order: 3
    • Click Add
    Field 4: Expiration Date
    • Create new field definition:
      • Field Key: expiration_date
      • Field Type: date
      • Required: Yes
    • Show in List: Yes
    • List Order: 4
    • Click Add
  • Drag fields to reorder if needed
  • Code Example (Programmatic):

    Step 3: Create Records

    1
  • Go to Records tab
  • Click + New Record
  • Fill in form:
    • Employee: Select from dropdown
    • License Type: Select from picklist
    • License Number: Enter (validated)
    • Expiration Date: Select date
  • Click Save
  • Code Example (Programmatic):

    Step 4: Import Existing Data (Optional)

    If you have existing license data in CSV:
    1
  • Go to Records tab
  • Click Import
  • Step 1: Upload CSV file
  • Step 2: Map columns:
    • CSV “Employee Name” → “Employee” (lookup)
    • CSV “Type” → “License Type”
    • CSV “Number” → “License Number”
    • CSV “Expires” → “Expiration Date”
  • Step 3: Preview validation
    • Fix any errors highlighted in red
  • Step 4: Confirm import
    • Review success/failure count
    • Click Done
    CSV Format:
    Code Example (Programmatic):

    Step 5: Configure Permissions

    1
  • Go to Permissions tab (admin only)
  • Configure object-level permissions:
    • HR Admin: View, Create, Edit, Delete
    • HR Manager: View, Create, Edit
    • Staff: View only
  • Configure field-level permissions:
    • License Number: Hide from Staff role
    • Expiration Date: View only for HR Manager
  • Click Save
  • Code Example (Programmatic):
    Common Pitfalls:
    • ❌ Forgetting to set show_in_list → Fields don’t appear in table
    • ❌ Missing required fields → Records can’t be created
    • ❌ Invalid CSV format → Import fails
    • ✅ Always test with sample data first

    Workflow 3: Managing Organization Data Structure

    Scenario: Organize all data objects by category and set up favorites Duration: 15-20 minutes
    Prerequisites: Org admin or power user access

    Step 1: Browse All Objects

    1. Navigate to Data Manager
    2. View objects table:
      • Grouped by category (default)
      • Search by name or API name
      • Filter by type (Core vs Custom)
      • Filter by favorites

    Step 2: Manage Categories

    1
  • Click Categories in Data Manager sidebar
  • Create Category:
    • Click + New Category
    • Name: “Clinical Operations”
    • Description: “Clinical and operational data”
    • Icon: “stethoscope”
    • Color: “green”
    • Click Create
  • Edit Category:
    • Click category row
    • Update name, description, icon, color
    • Click Save
  • Delete Category:
    • Click category row → Delete
    • Confirm (only if no objects assigned)
    Code Example (Programmatic):

    Step 3: Assign Objects to Categories

    1
  • In Data Manager, click an object row
  • Go to Settings tab
  • Select Category: “Clinical Operations”
  • Click Save
  • Code Example (Programmatic):

    Step 4: Set Favorites

    1
  • In Data Manager objects table
  • Click star icon on frequently-used objects
  • Filter by ★ Favorites to see only favorited objects
  • Favorites persist across sessions
  • Code Example (Programmatic):

    Step 5: Edit Object Metadata

    1
  • Click object row → Settings tab
  • Update:
    • Display Name: Custom name for your org
    • Description: What this object is used for
    • Icon: Visual identifier
    • Category: Organize with related objects
  • Click Save
  • Common Pitfalls:
    • ❌ Creating too many categories → Hard to navigate
    • ❌ Not setting favorites → Slow to find objects
    • ❌ Missing descriptions → Users don’t understand purpose
    • ✅ Use consistent naming conventions

    Workflow 4: Bulk Data Operations

    Scenario: Export employee data, edit offline, import updates Duration: 30-45 minutes
    Prerequisites: Org member access (view), org admin (import)

    Step 1: Export Data

    1
  • Navigate to Data Manager → Employees
  • Go to Raw Data tab
  • Apply filters if needed (e.g., specific department)
  • Click Export button
  • CSV downloads with:
    • All standard fields
    • All custom fields (from PF-16 definitions)
    • Current filter applied
    Code Example (Programmatic):

    Step 2: Edit Offline

    1
  • Open CSV in Excel, Google Sheets, or text editor
  • Make bulk edits:
    • Update multiple records
    • Add new records (follow CSV format)
    • Fix data errors
  • Important: Don’t modify:
    • id column (primary key)
    • organization_id (will be set automatically)
    • Column headers
  • Save CSV file
  • CSV Format:
    Important: Custom fields are exported as a single JSON column named custom_fields. The value is a JSON object stored as a string within the CSV cell (with quotes escaped as ""). When editing custom fields in Excel or Google Sheets:
    • Keep the JSON structure valid: {"field_key":"value","another_field":"value2"}
    • Escape internal quotes by doubling them: "{""badge_number"":""ADM-1234""}"
    • Do not add spaces inside the JSON unless they are part of the value
    • To add a new custom field, include it in the JSON: "{""badge_number"":""ADM-1234"",""employee_code"":""E001""}"
    The system validates JSON syntax on import and will flag rows with malformed custom_fields.

    Step 3: Import Updates

    1
  • Go back to Raw Data tab
  • Click Import button
  • Step 1: Upload
    • Select CSV file
    • Click Upload
  • Step 2: Map Columns
    • System auto-detects column mappings
    • Verify mappings are correct
    • Fix any mismatches
  • Step 3: Preview
    • Review validation results
    • Green: Valid rows
    • Red: Errors (fix before importing)
    • Yellow: Warnings (review but can import)
  • Step 4: Confirm
    • Review summary:
      • Total rows: 150
      • Valid: 148
      • Errors: 2
    • Click Import to proceed
  • Step 5: Results
    • Success: 148 rows imported
    • Errors: 2 rows failed (download error report)
    • Click Done
    Code Example (Programmatic):

    Step 4: Verify Import

    1
  • Go to Raw Data tab
  • Verify updated records show new values
  • Check error report if any failures
  • Re-import fixed rows if needed
  • Common Pitfalls:
    • ❌ Modifying id column → Creates duplicates
    • ❌ Wrong date format → Validation fails
    • ❌ Missing required fields → Rows rejected
    • ❌ Custom field JSON format wrong → Data not saved
    • ✅ Always export first to see format
    • ✅ Test with 5-10 rows before bulk import

    Workflow 5: Configuring Field-Level Permissions

    Scenario: Hide salary field from non-HR users Duration: 10 minutes
    Prerequisites: Org admin access

    Step 1: Navigate to Object Permissions

    1
  • Go to Data Manager → Employees
  • Click Permissions tab (admin only)
  • View permission matrix
  • Step 2: Configure Object-Level Permissions

    1. In Object Permissions section:
      • HR Admin: ✅ View, ✅ Create, ✅ Edit, ✅ Delete
      • HR Manager: ✅ View, ✅ Create, ✅ Edit, ❌ Delete
      • Staff: ✅ View, ❌ Create, ❌ Edit, ❌ Delete
    2. Click Save Object Permissions

    Step 3: Configure Field-Level Permissions

    1
  • Scroll to Field Permissions section
  • Find salary field (or custom field)
  • Set permissions per role:
    • HR Admin: Edit
    • HR Manager: View
    • Staff: Hide
  • Click Save Field Permissions
  • Code Example (Programmatic):

    Step 4: Verify Permissions

    1
  • Log in as different role (Staff)
  • Navigate to HR → Employees → [Employee]
  • Verify salary field is hidden
  • Log in as HR Manager
  • Verify salary field is visible but read-only
  • Common Pitfalls:
    • ❌ Forgetting to save → Changes not applied
    • ❌ Hiding required fields → Forms break
    • ❌ Too restrictive → Users can’t do their job
    • ✅ Test with different roles after configuring

    Troubleshooting

    Custom Fields Not Appearing

    Symptoms: Field defined but not showing in form Solutions:
    1
  • Check field is active (is_active = true)
  • Verify field configuration (PF-17) allows visibility
  • Check user role has permission to view field
  • Verify CustomFieldsSection component is in form
  • Check browser console for errors
  • Picklist Items Not Loading

    Symptoms: Dropdown empty or loading forever Solutions:
    1
  • Verify picklist exists and is active
  • Check picklist has items (is_active = true)
  • Verify usePicklistItems hook is called correctly
  • Check QueryClient staleTime/gcTime configuration
  • Verify organization context is set
  • Import Validation Errors

    Symptoms: CSV import fails with validation errors Solutions:
    1
  • Check CSV format matches export format
  • Verify required fields are present
  • Check data types match field definitions
  • Validate custom field JSON format
  • Review error report for specific issues
  • Permissions Not Working

    Symptoms: Users can see/edit fields they shouldn’t Solutions:
    1
  • Verify RLS policies are enabled
  • Check object-level permissions are set
  • Verify field-level permissions are configured
  • Check user role assignment
  • Clear browser cache and re-login

  • Best Practices

    Custom Fields

    • ✅ Use descriptive field keys (snake_case)
    • ✅ Add help text for complex fields
    • ✅ Set validation rules to prevent bad data
    • ✅ Group related fields in sections
    • ✅ Test validation before deploying

    Custom Objects

    • ✅ Use clear, descriptive names
    • ✅ Follow API naming conventions (snake_case)
    • ✅ Set appropriate categories
    • ✅ Add helpful descriptions
    • ✅ Test with sample data first

    Data Management

    • ✅ Organize objects into logical categories
    • ✅ Set favorites for frequently-used objects
    • ✅ Keep object metadata up-to-date
    • ✅ Use consistent naming conventions
    • ✅ Document custom objects for team

    Bulk Operations

    • ✅ Always export first to see format
    • ✅ Test import with small dataset
    • ✅ Validate data before importing
    • ✅ Keep backups before bulk changes
    • ✅ Review error reports carefully


    Last Updated: 2026-01-08
    Next Review: When new workflows are added or existing workflows change