-
-
Notifications
You must be signed in to change notification settings - Fork 520
Importing Demo Data
ChurchCRM includes a demo data import feature that allows you to quickly populate your installation with sample families, people, groups, and other realistic data. This is ideal for:
- Testing and evaluation: Explore ChurchCRM features with realistic data before committing to production use
- Training: Train staff and volunteers on a system that looks like your actual church
- Development: Test custom reports, workflows, and integrations with representative data
- Demonstrations: Show ChurchCRM to decision-makers with a fully populated system
- Fresh Installation Required: The system must have only the default admin user (1 person total)
- Database Should Be Clean: No existing families, groups, events, or financial data (beyond the initial setup)
- Backup First: Even on fresh installations, consider creating a backup before importing
❌ DO NOT import demo data if:
- You have already added real families, people, or groups
- Your system is in production use
- You need to preserve any existing data
Note: There is a
forceoption in the API that bypasses the safety check, but this is only for developers/testing and is not exposed in the UI to prevent accidental data loss.
- Log in to ChurchCRM as an administrator
- Navigate to the Admin Dashboard:
- Click on Admin in the main navigation menu
- The dashboard will load at
/admin
On the Admin Dashboard, you'll find the Demo Data card in the right sidebar:
The card displays:
- Title: "Demo Data"
- Description: "Import sample families, people, and groups to explore ChurchCRM with realistic data"
- Button: "Import Demo Data" (green button with download icon)
- Click the "Import Demo Data" button
- A full-screen confirmation modal will appear with:
- Reset Instructions: Important information about database prerequisites
- Import Options: Checkboxes to customize what data to include
- Action Buttons: Confirm or cancel the import
The confirmation modal offers several import options:
-
🎉 Include Events & Attendance (Optional)
- Imports sample calendar events
- Includes check-in/check-out records
- Demo event types and attendance tracking
- Default: Unchecked
-
💰 Include Financial Data (Optional)
- Imports donation funds
- Sample pledges and payment records
- Deposit slips and financial tracking data
- Default: Unchecked
⚠️ Important: Only enable if you plan to test the Finance module
-
📚 Include Sunday School Classes (Optional)
- Imports Sunday School groups and class assignments
- Sample teacher/student relationships
- Age-appropriate class structures
- Default: Unchecked
For most evaluation purposes:
- ✅ Leave all options unchecked for basic family/people/groups data only
- ✅ Enable specific options only if you need to test those features
- Review the warning message about database reset requirements
- Select your desired options (or leave unchecked for basic data)
- Click the "Yes, Import Demo Data" button (green button)
- To cancel, click "Cancel" (gray button)
Once confirmed:
- A full-screen loading spinner will appear with the message:
- "Importing Sample Data..."
- "This may take a moment. Please do not close this window."
- The spinner blocks all user interaction to prevent interruptions
- Import typically takes 10-30 seconds depending on:
- Selected options
- Server performance
- Database speed
When the import completes:
-
The spinner will disappear
-
A success notification will display showing:
- ✅ "Demo data loaded successfully"
- Summary of imported items:
- Number of families added
- Number of people added
- Number of groups created
- Number of notes imported
- Elapsed time in seconds
-
If errors occurred:
- ❌ Error notifications will display
- Check the system logs at
/admin/system/logsfor details
The demo data includes realistic church information pulled from JSON files in the codebase. Here's what you can expect:
-
Sample families with diverse household structures:
- Traditional nuclear families
- Single-parent households
- Empty nesters
- Singles and young adults
- Each family includes:
- Complete address information
- Phone numbers and emails
- Family notes and history
- Optional family photos (for some families)
-
Individual person records with:
- Full names (first, middle, last, suffix)
- Birth dates (age-appropriate for roles)
- Gender assignments
- Personal contact information
- Classification (Member, Regular Attender, Visitor, etc.)
- Optional profile photos (for some individuals)
- People are properly linked to their families
- Realistic family member relationships
- Sample notes attached to persons and families:
- Pastoral care notes
- Contact history
- Membership milestones
- General observations
- Basic ministry groups and small groups:
- Adult Bible Study groups
- Women's Ministry
- Men's Fellowship
- Youth Group
- Worship Team
- Volunteer groups
- Group memberships with appropriate roles (Leader, Member, etc.)
- Realistic group sizes and participation patterns
-
Calendar events:
- Sunday worship services
- Midweek Bible studies
- Special events (Easter, Christmas, etc.)
- Community outreach events
-
Attendance records:
- Check-in/check-out timestamps
- Event participation tracking
- Regular attender patterns
-
Donation funds:
- General Fund
- Building Fund
- Missions
- Special offerings
-
Pledges:
- Annual giving commitments
- Pledge tracking and fulfillment
-
Payments and deposits:
- Sample donation records
- Deposit slips
- Payment methods (Check, Cash, Online)
-
Age-graded classes:
- Nursery (0-2 years)
- Preschool (3-5 years)
- Elementary (6-11 years)
- Middle School (12-14 years)
- High School (15-18 years)
- Adult classes
- Teacher assignments
- Student enrollments
- Class schedules and rooms
The import also loads demo-specific system settings:
- Church name and information
- Time zones and date formats
- Feature enablement flags
- UI preferences
The demo data import process:
- Validation: Checks that exactly 1 person exists (safety check)
-
System Config: Imports demo-specific settings from
system-config.json -
People Import: Loads families and people from
people.json- Creates Family records
- Creates Person records
- Links people to families
- Imports family/person notes
- Optionally imports photos
-
Groups Import: Loads groups from
groups.json- Creates Group records
- Assigns group members
- Sets member roles (Leader, Member, etc.)
- Optionally creates Sunday School groups
- Results: Returns detailed import statistics
Demo data files are located in the codebase at:
-
JSON files:
src/admin/demo/-
people.json- Families, people, and notes -
groups.json- Groups and memberships -
system-config.json- Demo-specific system settings
-
-
Photos:
src/admin/demo/photos/(optional)- Family photos
- Person profile photos
The import is handled by: POST /admin/api/demo/load
Request Body:
{
"includeFinancial": false,
"includeEvents": false,
"includeSundaySchool": false,
"force": false
}Response:
{
"success": true,
"message": "Demo data loaded successfully",
"imported": {
"groups": 15,
"families": 50,
"people": 175,
"notes": 25
},
"warnings": [],
"errors": [],
"elapsedSeconds": 12.45
}The import logic is implemented in:
-
Service:
ChurchCRM\Service\DemoDataService -
Method:
importDemoData(bool $includeFinancial, bool $includeEvents, bool $includeSundaySchool)
Problem: You see this error message when trying to import.
Cause: Your system has more than 1 person (the default admin user).
Solutions:
-
Fresh Installation: If you haven't added real data yet, reset your database:
- Use the backup/restore feature to restore a fresh database
- Or reinstall ChurchCRM from scratch
-
Development Override: If you're a developer and need to force import (
⚠️ this will overwrite data):- Use the API directly with
force: trueparameter - This is NOT recommended for production use
- Use the API directly with
Problem: The import process fails or seems to hang.
Causes & Solutions:
-
Server timeout:
- Increase PHP
max_execution_timeinphp.ini - Recommended: 120 seconds or more
- Increase PHP
-
Memory limit:
- Increase PHP
memory_limitinphp.ini - Recommended: 256M or more
- Increase PHP
-
Database connection:
- Check database credentials in
Include/Config.php - Verify database server is running
- Check database server logs
- Check database credentials in
Problem: Import fails with generic error message.
Solution: Check the application logs:
- Navigate to Admin → System → Logs
- View the Application Log (
app.log) - Look for entries with timestamp matching the import
- Common issues logged:
- JSON parse failures
- Missing data files
- Propel ORM errors
- File permission issues
Problem: Imported data seems incomplete or inconsistent.
Solutions:
-
Check import results: Review the success message for counts
- Expected: 50+ families, 175+ people, 15+ groups
-
Verify options: Ensure you selected the options you wanted
- Financial data won't appear if you didn't check the option
-
re-import: If safe to do so:
- Reset your database
- Re-run the import with desired options
If you want to remove demo data and start fresh:
- Navigate to Admin → System → Backup & Restore
- Restore a backup taken before the demo import
- All demo data will be removed
- Drop and recreate your ChurchCRM database
- Re-run the ChurchCRM installer
- Configure your fresh system
Manually deleting demo data is not recommended because:
- You risk deleting real data added after import
- Database relationships make manual cleanup error-prone
- Better to restore from backup or reinstall
- ✅ Import early: Load demo data right after installation
- ✅ Try features: Test reports, emails, and workflows with realistic data
- ✅ Export samples: Generate sample reports and PDFs to evaluate output quality
- ✅ Test multi-user: Create additional user accounts to test permissions
- ✅ Include all modules: Enable Financial, Events, and Sunday School options
- ✅ Document workflows: Use demo data to create training materials
- ✅ Practice scenarios: Have trainees perform common tasks with demo families
- ✅ Reset between sessions: Restore demo state between training sessions
- ✅ Use version control: Track changes to demo data files
- ✅ Test both ways: Test with and without optional data modules
- ✅ Validate imports: Check logs for warnings/errors after import
- ✅ Update demo data: Keep demo data synchronized with schema changes
-
System Logs:
/admin/system/logs- View detailed import logs -
Backup & Restore:
/admin/system/backup- Manage database backups -
User Management:
/admin/system/users- Create additional test users -
System Settings:
/admin/system/settings- Configure ChurchCRM behavior
Q: Can I import demo data multiple times?
A: Only on fresh installations with 1 person. If you've already imported demo data, you'll need to reset your database first.
Q: Will demo data overwrite my existing families?
A: The import has a safety check that prevents importing if more than 1 person exists. This protects your data.
Q: Can I customize the demo data?
A: Yes! Developers can edit the JSON files in src/admin/demo/ to customize families, people, groups, and other data. After editing, run the import to load your custom data.
Q: How long does import take?
A: Typically 10-30 seconds, depending on server performance and selected options. Financial and event data take slightly longer.
Q: Can I delete specific demo families after import?
A: Yes, but this removes ALL linked data (people, notes, groups, etc.). It's better to restore from backup and re-import if you need different demo data.
Q: Does demo data include real people's information?
A: No. All demo data uses fictional names, addresses, emails, and phone numbers. It's completely synthetic data created for demonstration purposes.
Q: What happens if import fails partway through?
A: The import uses database transactions where possible, but partial data may remain. Check system logs for errors and consider resetting the database and re-importing.
Last Updated: February 16, 2026
ChurchCRM Version: 6.x and later
- Home
- Wiki → Docs links — User & admin manuals moved to docs.churchcrm.io
→ docs.churchcrm.io for installation & setup
- Installation ← Start here!
- First Run Setup
- Features Overview
→ docs.churchcrm.io for user manuals
- User Guide (docs)
- People Management — docs
- Groups & Events
- Tools
- Finances
→ docs.churchcrm.io for admin manuals
- User Management
- System Maintenance
- Configuration
- Troubleshooting
- Localization
Contributing to ChurchCRM
- Quick Start
- Testing & CI/CD
- Code & Architecture
- Localization
- Release & Security