FCCS Data Extraction Tool
Extracts and organizes documents from FileCabinet CS (Thomson Reuters) using GUI automation. Designed to work across multiple client engagements without code changes.
Prerequisites
- 32-bit Python (must match FCCS architecture)
pywinauto(pip install pywinauto)Pillow(pip install Pillow) — required for failure screenshots- FileCabinet CS installed and restored with client backup data
Project Layout
| File | Purpose |
|---|---|
config.ini |
All paths, timeouts, and FCCS control identifiers |
fccs_folders.txt |
FCCS folder templates (manually populated per engagement) |
fccs_config.py |
Shared config loading, logging, folder pattern building |
fccs_scan.py |
Step 1: Scan backup directory for drawer IDs |
fccs_export.py |
Step 2: Automate FCCS GUI to export all drawers |
fccs_reorganize.py |
Step 3: Parse filenames and rebuild folder structure |
fccs_verify.py |
Step 4 (optional): Compare manifests against exported files |
Setup Per Engagement
- Edit
config.ini-- pointbackup_dir,export_dir, andoutput_dirat the client's directories. - Populate
fccs_folders.txt-- open FCCS > System Configuration > Document Folders and list each folder template exactly as shown, one per line. Keep theYYYYprefix on recurring folders. UltraTax CS folders are detected automatically and do not need to be listed.
Workflow
Step 1: Scan Drawers
python fccs_scan.py
Reads the restored FCCS backup directory and writes all drawer IDs (subfolder names) to drawer_ids.txt. It also:
- Flags prefix clashes — if one drawer ID is a prefix of another (e.g.
02218and02218A), searching the shorter ID in FCCS pops up a selection box that breaks automated navigation. These clashes are reported, and the shorter (prefix) IDs are auto-seeded intoignore.txtfor review. - Reports ignored drawers — any IDs listed in
ignore.txtthat exist in this backup are shown as ones the export will skip.
Ignoring drawers: The scan creates ignore.txt (at ignore_file, default C:\Migration\ignore.txt) if it doesn't exist and pre-fills it with the clash prefixes — searching those in FCCS shows a selection box that stalls the automation, so they're skipped by default. Open the file and:
- Delete or comment out any clash prefix you actually want exported (then handle it manually in FCCS).
- Add any other drawers to skip (e.g. password-protected folders), one ID per line.
Re-running the scan never overwrites your edits — it only appends newly-discovered clashes. drawer_ids.txt stays a full inventory; the export skips anything active in the ignore list. Lines starting with # are comments.
Step 2: Export Documents
python fccs_export.py
Requires FCCS to be open with export destination already configured. Automates the GUI to export every drawer via File > Send To > File. Features:
- Resumable -- tracks completed drawers in
completed.txt; safe to restart - Screenshots -- captures failure states for diagnosis
- Defensive -- one bad drawer won't crash the entire run
Step 2b (optional): Verify Export Completeness
python fccs_verify.py
During export, each drawer's document list is captured from the FCCS dialog and saved as a manifest. This script compares those manifests against the actual exported files to flag any drawers with missing or extra files.
Step 3: Reorganize Files
python fccs_reorganize.py
Parses the flat exported filenames and copies them into an organized structure:
output/
ABRAHAM, REBEKAH L./
Tax Documents/
2025/
030126 E-mail re Tax Info.pdf
Billing & Invoices/
2026/
030826 Invoice for 2025 Forms 1040 & IL-1040.pdf
UltraTax CS/
12-31-2008/
2008 Form 1040 Filing Instructions.doc
Permanent File/
Driver's License.pdf
_unparsed/
(files that couldn't be parsed go here for manual review)
Exported filenames follow the format {drawer_id}_{client_name}_{folder_name}_{creation_date}_{document_name}.ext. The parser uses folder templates from fccs_folders.txt (with YYYY expanded via regex) and the creation date (MM-DD-YYYY) as anchors to reliably split the underscore-delimited fields. Folder names are decomposed into nested paths that match the FCCS UI structure (e.g. 2025 Tax Documents becomes Tax Documents/2025/). UltraTax CS folders are matched by a built-in pattern.
Config Reference
All scripts read from config.ini (or specify --config path\to\config.ini).
[paths]-- backup_dir, export_dir, output_dir, drawer_id_file, completed_file, ignore_file, log_file, screenshot_dir, manifest_dir, folder_list[timeouts]-- nav_timeout, dialog_timeout, progress_appear, progress_finish, settle, confirm_timeout[controls]-- FCCS window class names and button titles (rarely need changing)