Skip to content

jasonnmark/FileMaker-DDR-Checker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FileMaker DDR Plus


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.

What It Does

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

Features

  • 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

Quick Start

Method 1: Double-Click Launcher (Easiest)

  1. Double-click FileMakerDDRplus.command
  2. Select your DDR XML file
  3. Choose output folder
  4. Done! Files will be created in your chosen folder

Method 2: Command Line

# 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 --gui

Method 3: From FileMaker

You 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

Output Files

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

Requirements

  • macOS 12+ (Monterey or later)
  • Python 3.8+ (included with macOS)
  • FileMaker Pro 22+ (to generate DDR exports)

Installation

Option A: Use in Place

  1. Clone or download this repository
  2. Navigate to the directory
  3. Double-click FileMakerDDRplus.command or use command line

Option B: Install to Applications

# Copy to Applications folder
cp -r filemakerDDRplus ~/Applications/

# Create an alias on desktop (optional)
ln -s ~/Applications/filemakerDDRplus/FileMakerDDRplus.command ~/Desktop/FileMakerDDRplus

Generating a DDR Export

In FileMaker Pro:

  1. Open your database
  2. Go to File → Save/Send Records As → Database Design Report
    • OR Tools → Database Design Report (older versions)
  3. Select XML format
  4. Check all sections you want (recommended: check everything)
  5. Choose output folder and click Create
  6. Use the detail file (e.g., YourFile_fmp12.xml), NOT Summary.xml

Emoji Restoration

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 --emoji flag
  • FileMaker: Include --emoji in the command

Note: Most users don't need this feature. Only enable if you actually use emoji in your database design.

Using with Claude (AI Analysis)

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"

Project Structure

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/

Future Features (Planned)

  • 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

Troubleshooting

"Python 3 is required but not installed"

macOS should include Python 3. Try opening Terminal and running:

python3 --version

If it's not found, install from python.org

"This is a Summary XML file"

You selected Summary.xml instead of the detail file. Use the larger XML file (usually named like YourFile_fmp12.xml).

Emoji restoration isn't working

Make sure:

  1. The Helper/emoji_restore.py file exists
  2. You're using the --emoji flag or double-click launcher
  3. Your DDR actually contains ?? patterns that need restoration

Output files are too large for Claude

The largest file is usually 03_SCRIPTS.txt. You can:

  1. Open it in a text editor
  2. Search for SCRIPT: to find individual scripts
  3. Copy just the scripts you need to a new file
  4. Upload that instead

License

MIT License - Feel free to use and modify as needed.

Credits

Based on the original DDR compression Python scripts by Jason, enhanced for helper app usage and future Claude API integration.

Support

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)

About

This script will find all unused layouts, scripts, fields, tables, and relationships. It will also detect broken ExecuteSQL statements.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors