Setup Guide

A complete walkthrough of every setting in CaseDocMover, with examples for each field.

Installation & Activation

Download the installer for your operating system from the pricing page, then run it.

  1. macOS — open the .dmg, drag CaseDocMover to Applications, then double-click to launch.
  2. Windows — run CaseDocMover.exe. If Windows SmartScreen appears, click More info → Run anyway.
  3. Linux — install the .deb with sudo dpkg -i casedocmover_*.deb, or run the standalone binary directly.

On first launch an activation dialog appears. Enter the license key that was emailed to you after purchase (format: XXXX-XXXX-XXXX-XXXX) and click Activate. The app validates the key online and then starts.

CaseDocMover has a 30-day offline grace period. If your machine loses internet access the app will keep running using the last successful validation. After 30 days a renewal prompt will appear.

Once activated the app icon appears in your system tray / menu bar. Right-click it to open Settings, view logs, or quit.

Email Provider

Open Settings → Email Provider and choose the provider that matches your mailbox.

Microsoft 365 / Exchange

Three authentication modes are available. Pick the one that matches how your organisation manages app access.

Auth moderequired
delegated — the user signs in interactively via a browser pop-up (OAuth2 authorization code flow). Best for personal or single-user setups.
app_only — the app authenticates as itself using a client secret; no user sign-in required. Requires an Azure AD app registration with Mail.ReadWrite application permission granted by an admin. Best for shared/service accounts.
ropc — Resource Owner Password Credentials. The app signs in with a username and password directly. Use only when delegated is not possible (e.g. no browser on the machine). Requires MFA to be disabled for the account.
Tenant IDrequired
The Azure Active Directory tenant ID (a GUID), e.g. 9b5c3a1e-4f72-4d18-b3e2-7a2c05d1f234. Use common for personal Microsoft accounts.
Find it at portal.azure.com → Azure Active Directory → Overview → Tenant ID.
Client IDrequired
The Application (client) ID from your Azure app registration.
Find it at portal.azure.com → App registrations → your app → Overview → Application (client) ID.
Client secret
Required for app_only mode only. Create one at App registrations → your app → Certificates & secrets.
Mailbox
The mailbox to monitor. Use me for the signed-in user (delegated/ROPC) or a full email address such as invoices@yourfirm.com for a shared mailbox (app_only).
Username / Password
Required for ropc mode only. Enter the Microsoft 365 UPN (e.g. user@yourfirm.com) and the account password.
# delegated example
Auth mode:  delegated
Tenant ID:  9b5c3a1e-4f72-4d18-b3e2-7a2c05d1f234
Client ID:  e1d2c3b4-a5f6-7890-abcd-ef1234567890
Mailbox:    me

# app_only example (shared mailbox)
Auth mode:      app_only
Tenant ID:      9b5c3a1e-4f72-4d18-b3e2-7a2c05d1f234
Client ID:      e1d2c3b4-a5f6-7890-abcd-ef1234567890
Client secret:  ~Abc8Q...
Mailbox:        filings@yourfirm.com

Gmail / Google Workspace

CaseDocMover uses the Gmail API with OAuth2. You need a Google Cloud project with the Gmail API enabled and OAuth2 credentials created.

  1. Go to console.cloud.google.com → APIs & Services → Credentials.
  2. Create an OAuth client ID for a Desktop application.
  3. Download the JSON and either place it as gmail_client_secret.json in the app config folder, or paste the Client ID and Secret into the fields below.
Client ID
The OAuth2 client ID from your Google Cloud credentials (ends in .apps.googleusercontent.com).
Client secret
The OAuth2 client secret.

On first save, CaseDocMover will open a browser window asking you to sign in to Google and grant access to your Gmail account. The refresh token is then stored locally so subsequent launches are automatic.

Client ID:     123456789-abc123.apps.googleusercontent.com
Client secret: GOCSPX-AbCdEfGhIj...

IMAP (Yahoo, iCloud, Zoho, other)

Use this for any mailbox accessible over IMAP — Yahoo Mail, Apple iCloud Mail, Zoho, FastMail, and most hosted email services.

Hostrequired
The IMAP server hostname.
Yahoo Mail:  imap.mail.yahoo.com
iCloud:      imap.mail.me.com
Zoho:        imap.zoho.com
FastMail:    imap.fastmail.com
Port
993 for SSL (recommended), 143 for STARTTLS.
Use SSL
Leave checked unless your server requires plain STARTTLS on port 143.
Usernamerequired
Your full email address, e.g. filings@yourfirm.com.
Passwordrequired
For Yahoo Mail and iCloud you must use an app-specific password, not your main account password, because these providers require it when MFA is enabled.
Yahoo: Account Security → Generate app password. iCloud: appleid.apple.com → Sign-In and Security → App-Specific Passwords.
Folder
The mailbox folder to monitor. Default is INBOX. Use standard IMAP folder names; some servers use INBOX.Subfolder notation.

Email Filters

Filters control which incoming emails are processed. Emails that do not match all active filter sections are ignored. Leave a section empty to skip that check entirely.

Sender addresses
One email address per line. Only emails from these exact addresses will be processed (case-insensitive).
court@supremecourt.gov
efiling@districtcourt.org
Sender domains
One domain per line. Matches any sender whose address ends with@domain.
courts.gov
lawfirm.com
Subject keywords
One keyword per line. CaseDocMover checks whether the email subject contains these words (case-insensitive).
Match mode
Any keyword (OR) — process the email if the subject contains at least one of the keywords.
All keywords (AND) — process only if the subject contains every keyword.
Keywords:   Case, Filing
Mode: ANY  → matches "New Case Filing" and also "Case Review"
Mode: ALL  → matches "New Case Filing" but NOT "Case Review"

If all three filter sections are empty, every email with an attachment is processed. Add filters to narrow down to relevant senders.

File Storage

Open Settings → File Storage and select where documents should be filed.

SharePoint (Microsoft 365)

CaseDocMover uploads files to a SharePoint Document Library using the same Microsoft 365 credentials configured on the Email Provider tab. The app searches for a folder whose name matches the extracted case number.

Site IDrequired
The GUID of the SharePoint site. Find it with Graph Explorer:
GET https://graph.microsoft.com/v1.0/sites/{hostname}:/sites/{site-name}
# Copy the "id" field from the response
Drive IDrequired
The GUID of the Document Library (drive). Find it with:
GET https://graph.microsoft.com/v1.0/sites/{site-id}/drives
# Locate the drive by "name", copy its "id"
Review folder ID
Optional. The SharePoint item ID of a “Manual Review” folder. When no matching case folder is found, the document is placed here instead of being skipped. Find it with:
GET https://graph.microsoft.com/v1.0/sites/{site-id}/drives/{drive-id}/root/children
# Locate the folder by "name", copy its "id"

Box

Auth mode
jwt — server-to-server authentication using a Box JWT app. Requires a Box Platform application with App Access Only or App + Enterprise Access. Best for automated/service use.
oauth2_token — use a developer token or a pre-acquired OAuth2 access token. Tokens expire after 60 minutes; suitable for short-term testing.
JWT config path
Required for jwt mode. The full path to the JSON key file downloaded from the Box Developer Console (Configuration → Add and manage public keys).
macOS/Linux:  /Users/you/box_jwt_config.json
Windows:     C:Usersyouox_jwt_config.json
Root folder ID
The Box folder ID to search for case folders. Use 0 for the root of All Files, or paste the numeric ID from the URL when browsing Box: app.box.com/folder/123456789 → ID is 123456789.
Review folder ID
Optional. Numeric Box folder ID for unmatched documents.

Dropbox

App key / App secretrequired
Create a Dropbox app at dropbox.com/developers/apps. Choose Scoped access and grant files.content.write and files.content.read permissions. Copy the App key and App secret from the settings page.
Refresh tokenrequired
A long-lived OAuth2 refresh token. Generate one by running the Dropbox OAuth flow once (the app will prompt you on first save if the token is empty).
Root path
The Dropbox folder path to search for case folders. Use /Cases to search within a Cases folder, or leave empty to search from the Dropbox root.
Root path:  /Clients/Active Cases
Review folder
Optional. Full Dropbox path for unmatched documents, e.g. /Manual Review.

SMB / Network Share (on-prem)

For Windows file servers or NAS devices accessible over SMB/CIFS.

Serverrequired
Hostname or IP address of the file server, e.g. fileserver01 or 192.168.1.50.
Sharerequired
The SMB share name (without backslashes), e.g. Cases.
Root UNC pathrequired
The full UNC path to the root folder to search, e.g. \\fileserver01\Cases\Active.
Review UNC path
Optional. Full UNC path for unmatched documents, e.g. \\fileserver01\Cases\Manual Review.
Username / Password
Domain credentials, e.g. DOMAIN\username. Leave blank to use the currently logged-in Windows user (pass-through auth).
Port
Default is 445 (standard SMB). Change only if your network uses a non-standard port.
Server:         fileserver01
Share:          Cases
Root UNC path:  \fileserver01CasesActive
Review UNC:     \fileserver01CasesManual Review
Username:       CORPcasedocmover
Port:           445

Processing Settings

Open Settings → Processing to control how CaseDocMover identifies case numbers, names files, and monitors your inbox.

Case number regexrequired
A Python-compatible regular expression that matches case numbers in email subjects or bodies. The first capturing group (or whole match if no group) becomes the {case_number} variable.
# Matches formats like CV-2024-001234 or CR-20241234
Default:  [A-Z]{2,4}-d{4,8}

# Matches 6-digit numbers preceded by "Case"
Custom:   Cases+(d{6})

# Matches US federal case numbers like 1:24-cv-00123
Federal:  d:d{2}-[a-z]{2}-d{5}
Use the Test input field directly below to verify your regex against a sample subject line before saving.
Filename template
Template for the uploaded filename. Available placeholders:
  • {case_number} — extracted case number
  • {sender} — sender email address (@domain stripped)
  • {date} — email date as YYYY-MM-DD
  • {ext} — original file extension including the dot (e.g. .pdf)
  • Any custom rule name defined in Extraction Rules (e.g. {client_name})
Default:   {case_number}_{sender}_{date}{ext}
           → CV-2024-001_supremecourt.gov_2025-03-15.pdf

Custom:    {date}_{case_number}_{client_name}{ext}
           → 2025-03-15_CV-2024-001_Smith_John.pdf
Fuzzy match threshold
How closely a folder name must match the extracted case number before CaseDocMover considers it a match (0–100%). The default is 80%.
Lower this value if your folder names have slight variations (e.g. spaces vs. dashes). Raise it to avoid false matches in large folder trees.
Folders:  "CV-2024-0012", "CV-2024-00121"
Extracted: CV-2024-001

Threshold 80% → matches "CV-2024-0012" (score ≈83%)
Threshold 90% → no match (falls back to Review folder)
Folder cache TTL
How long (in minutes) to cache the list of folders fetched from storage before refreshing it. Default is 30 minutes. Increase this on large SharePoint drives to reduce API calls. Decrease it if new case folders are created frequently.

Inbox Monitoring

Real-time
For IMAP accounts: uses IMAP IDLE to be notified the moment a new email arrives. For Microsoft 365 and Gmail: polls every 30 seconds using a delta/change query. Lowest latency; uses a persistent connection.
Every N minutes
Polls the inbox on a fixed interval. Options: 1, 5, 10, 15, 30, or 60 minutes. A good balance between latency and resource use. Default is 5 minutes.
Daily
Polls once or several times per day at fixed times, calculated from an anchor hour.
Times per day: 2
Anchor hour:   08:00
→ Checks at 08:00 and 20:00 daily

Extraction Rules

Open Settings → Extraction Rules to define custom variables extracted from each email. These variables can then be used in the Filename template and in the Folder search template.

Each rule has four fields:

Namerequired
A short identifier used as a template placeholder, e.g. client_name becomes {client_name} in your filename template. Use lowercase letters, numbers, and underscores only.
Sourcerequired
Where to extract the value from:
  • subject — the email subject line
  • body — the plain-text email body
  • sender — the From address
  • date — the email date (returns YYYY-MM-DD)
Type
regex — apply a regular expression pattern to the source text. The first capturing group is used; if there are no groups, the whole match is used.
structured — use the entire source field as-is (useful with sender or date).
Pattern
The regex pattern (only used when Type is regex).
# Extract client surname from subject like "RE: Smith, John - CV-2024-001"
Name:     client_name
Source:   subject
Type:     regex
Pattern:  ^RE:s+([w]+),

# Extract court name from body
Name:     court
Source:   body
Type:     regex
Pattern:  Filed in thes+(.+?)s+Court

# Use sender domain as a variable
Name:     sender_domain
Source:   sender
Type:     regex
Pattern:  @([w.]+)$

Folder search template

Controls what string CaseDocMover searches for when looking up a matching folder in storage. Defaults to {case_number}.

You can combine multiple variables to build a more specific query, which helps avoid false matches in large folder structures.

# Default — search by case number only
Folder search template:  {case_number}

# Prefix with a client name to narrow results
Folder search template:  {client_name} {case_number}
# → searches for "Smith CV-2024-001"

# Use court name as folder prefix
Folder search template:  {court} {case_number}
# → searches for "District Court CV-2024-001"

If no folder matches the search template, the document is placed in the Review folder (if configured) or skipped with a desktop notification. Check the log window for details.

Still stuck? Contact support and include the log output from Settings → About / Logs.