This project has been superseded by FileMaker XML Compressor
The DDR approach is retired. The new FileMaker XML Compressor uses FileMaker's "Save a Copy as XML" format, which is better in every way: emoji survive intact (no
??corruption), encoding is handled natively, and the export contains everything the DDR did. Use FileMaker XML Compressor instead.
A Mac helper app for FileMaker developers that compresses DDR (Database Design Report) XML exports into compact, AI-friendly text files.
Converts massive FileMaker DDR XML files (often 100MB+) into organized, readable text files that are 95-97% smaller while preserving all the information you need for development and AI analysis.
Example: 175MB DDR XML → 1.1MB of organized files
- ✅ Massive Compression: Reduces DDR size by 95-97%
- ✅ Organized Output: 10 categorized files (Schema, Scripts, Relationships, etc.)
- ✅ AI-Optimized Format: Perfect for analysis with Claude or other LLMs
- ✅ Emoji Restoration: Optional fix for garbled emoji in DDR exports
- ✅ Easy to Use: Double-click launcher or command-line interface
- ✅ FileMaker Integration: Can be called from FileMaker scripts
- ✅ Future-Ready: Designed for Claude API integration
- Double-click
FileMakerDDRplus.command - Select your DDR XML file
- Choose output folder
- Done! Files will be created in your chosen folder
# Basic usage
python3 Helper/filemaker_bridge.py input.xml output_folder/
# With emoji restoration
python3 Helper/filemaker_bridge.py input.xml output_folder/ --emoji
# Interactive mode with file dialogs
python3 Helper/filemaker_bridge.py --guiYou can call this from any FileMaker script:
Set Variable [ $ddrPath; Value: "/path/to/ddr.xml" ]
Set Variable [ $outputPath; Value: "/path/to/output/" ]
Set Variable [ $cmd; Value: "python3 /path/to/Helper/filemaker_bridge.py " & Quote($ddrPath) & " " & Quote($outputPath) & " --json" ]
Set Variable [ $result; Value: ExecuteSQL( $cmd ) ]
# Parse $result JSON for status
The app creates 10 organized files:
| File | Contents |
|---|---|
01_SCHEMA.txt |
Tables, fields, calculations, auto-enter, validation |
02_RELATIONSHIPS.txt |
Table occurrences and relationship predicates |
03_SCRIPTS.txt |
All scripts with every step and parameter |
04_LAYOUTS.txt |
Layout objects, portals, triggers |
05_VALUELISTS.txt |
Value list definitions |
06_CUSTOM_FUNCS.txt |
Custom function definitions |
07_ACCOUNTS.txt |
Accounts and privilege sets |
08_MENUS.txt |
Custom menus |
09_FILE_REFS.txt |
External data source references |
10_SUMMARY.txt |
Overview and statistics |
- macOS 12+ (Monterey or later)
- Python 3.8+ (included with macOS)
- FileMaker Pro 22+ (to generate DDR exports)
- Clone or download this repository
- Navigate to the directory
- Double-click
FileMakerDDRplus.commandor use command line
# Copy to Applications folder
cp -r filemakerDDRplus ~/Applications/
# Create an alias on desktop (optional)
ln -s ~/Applications/filemakerDDRplus/FileMakerDDRplus.command ~/Desktop/FileMakerDDRplusIn FileMaker Pro:
- Open your database
- Go to File → Save/Send Records As → Database Design Report
- OR Tools → Database Design Report (older versions)
- Select XML format
- Check all sections you want (recommended: check everything)
- Choose output folder and click Create
- Use the detail file (e.g.,
YourFile_fmp12.xml), NOTSummary.xml
FileMaker DDR exports sometimes corrupt multi-byte emoji characters (they appear as ??). This app can optionally restore them using context-aware mapping.
When to use:
- Your DDR has emoji in table names, script names, or field names
- You see
??characters in the DDR export
How to enable:
- Double-click launcher: Emoji restoration is ON by default
- Command line: Add
--emojiflag - FileMaker: Include
--emojiin the command
Note: Most users don't need this feature. Only enable if you actually use emoji in your database design.
Once you've compressed your DDR, you can upload the relevant files to Claude for analysis:
Common combos:
- Schema work: Upload
01_SCHEMA.txt+02_RELATIONSHIPS.txt - Script debugging: Upload
03_SCRIPTS.txt - Full analysis: Upload
01_SCHEMA.txt+02_RELATIONSHIPS.txt+03_SCRIPTS.txt+06_CUSTOM_FUNCS.txt
Example prompts:
- "If I rename the field Students::FirstName, what will break?"
- "Analyze this script for performance issues"
- "Create a relationship from Students to Courses through Enrollments"
filemakerDDRplus/
├── FileMakerDDRplus.command # Double-click launcher
├── README.md # This file
├── Helper/
│ ├── emoji_restore.py # Emoji restoration module
│ ├── ddr_processor.py # Core DDR parsing engine
│ └── filemaker_bridge.py # Command-line interface
├── Documentation/
│ ├── USER_GUIDE.md
│ └── INSTALLATION.md
├── Tests/
│ └── fixtures/
└── Examples/
└── sample_output/
- Claude API Integration: Ask questions directly about your database
- "Will renaming this field break any scripts?"
- "Show me all scripts that use Execute SQL"
- "Find potential performance bottlenecks"
- Batch Processing: Process multiple DDR files at once
- Windows Support: Cross-platform compatibility
- FileMaker File Integration: Analyze open databases directly
macOS should include Python 3. Try opening Terminal and running:
python3 --versionIf it's not found, install from python.org
You selected Summary.xml instead of the detail file. Use the larger XML file (usually named like YourFile_fmp12.xml).
Make sure:
- The
Helper/emoji_restore.pyfile exists - You're using the
--emojiflag or double-click launcher - Your DDR actually contains
??patterns that need restoration
The largest file is usually 03_SCRIPTS.txt. You can:
- Open it in a text editor
- Search for
SCRIPT:to find individual scripts - Copy just the scripts you need to a new file
- Upload that instead
MIT License - Feel free to use and modify as needed.
Based on the original DDR compression Python scripts by Jason, enhanced for helper app usage and future Claude API integration.
For issues or questions:
- Check the
Documentation/folder for detailed guides - Review the troubleshooting section above
- Open an issue on GitHub (if repository is public)