AdemeroHelp

Remind the owner 30 days before a contract expires

A daily check that emails whoever owns a contract when its expiration date is within 30 days — a scheduled Content Query on a date field with a day offset, a message template, and a Send E-mail action — including the date math that makes reminders fire once instead of never or forever.

Catalog administratorsContent Central 7.8+25 minutesVerified 2026-09-05

Before you begin

  • The document type has a Date field holding the expiration or renewal date
  • Outgoing email works, and a Workflow Access email template exists (see Customize notification message templates)

When you're done, Content Central checks every morning for contracts whose expiration date is within the next 30 days and emails the owner once about each one — then stays quiet until the next one comes due.

The planDocument type scope
  1. Trigger
    1. Content Query › Content in this Document TypeQuery: by Field Value(s) · Field: Expiration Date · Field-Match Type: Less Than or Equal to (Current Date Plus Offset Days) · Offset Days: 30 · Process Interval: Every Day on Hour 6 · Reprocess Matching Records After: 60 Days
  2. Action
    1. Send E-mailMessage Template: "Contract expiring soon" (Email, Workflow Access)
  3. Rule
    1. "Contract expiring within 30 days → email owner", enabled

The date math, in one paragraph

The trigger asks, on each run: is the expiration date less than or equal to today plus 30 days? A contract expiring on the 25th of next month starts matching 30 days before that and keeps matching every day afterward — including long after it has expired. Two settings tame that: Reprocess Matching Records After decides how long a document that already fired must wait before it can fire again (set it longer than your reminder window, so each contract gets one email), and the optional second trigger in Variations stops matching once the date has passed. Get the offset direction wrong (Greater Than or Equal to when you meant Less Than or Equal to) and the reminder can never fire for a future date — the most common reason "my reminder never sent."

Build the message template

Create an Email template with Visibility Workflow Access whose To is the owner. If the owner varies per contract, put the owner-email field into To as an insert code; if it's one person, type the address. Use insert codes in the body for the contract name and the expiration date so the email says which contract and when. Details: Customize notification message templates.

Build the trigger

  1. Go to Administration > Catalogs & Document Types, pick the Catalog and the contract Document Type, click the Workflow tile, then Triggers > New Trigger.

  1. Type: Content Query and Content in this Document Type. Trigger Name: Contracts expiring within 30 days.

  1. Query: by Field Value(s). Return: All Matching Content (Multiple Records) — every contract in the window, not just the newest.

  1. Field Evaluation: Selected Field Value(s). Field: your expiration date field.

  1. Field-Match Type: Less Than or Equal to (Current Date Plus Offset Days). Offset Days (negative values allowed): 30.

  1. Process Interval: Every Day, on Hour 6, on Minute 0 — early enough to be in the morning's inbox. Process Start: On First Interval.

  1. Reprocess Matching Records After: 60 Days — longer than the 30-day window, so a contract that already triggered isn't emailed again the next morning.

A scheduled Content Query trigger on a date field
The date match type and Offset Days set the window; Process Interval sets the schedule; Reprocess Matching Records After is what keeps one contract from being reported every single day. Pick the "Content in this Document Type" sub-type so the query stays inside this type.
  1. Click Save.

What you should see: a trigger with Event Scheduled in the Triggers list.

Build the action

  1. Click Actions > New Action. Type: Send E-mail. Action Name: Email owner — contract expiring.

  1. Scope Type: where the template lives (Document Type or Global), then pick it under Message Template:. Content Attachment: Do Not Attach unless the owner needs the file. Save.

Wire the rule

  1. Click Rules > New Rule. Rule Name: Contract expiring within 30 days → email owner.

  1. Add Trigger: Contracts expiring within 30 days. Add Action: Email owner — contract expiring. Apply.

Test it — with one document, safely

  1. Create one test contract with an expiration date 10 days from today. Don't test on the live population: a wide window plus a fresh trigger would email about every contract that's already inside it on the first run.

  1. Wait for the next scheduled run, or temporarily set Process Interval to Every 5 Minutes on the trigger, and set it back afterward.

What you should see: one email about the test contract, and the workflow rule in the document's View History. The next run should not email again about the same contract. If it never fires, walk through A scheduled workflow didn't run — it covers the server-date, interval, and offset mistakes in order.

Variations

Want this insteadChange this
Stop reminding once the contract has actually expiredTick Use Multiple Triggers, Combine Method: AND, and add a second Content Query: same field, Field-Match Type: Greater Than or Equal to Current Date
A second reminder at 7 daysA second trigger with Offset Days: 7 and its own rule and template (subject "expires in one week")
Remind after a date has passed (overdue)Field-Match Type: Less Than or Equal to Current Date, or …Plus Offset Days with a negative offset
Put it in a work queue instead of emailAction Work Queue - Assign to the owner (recipe)
Remind on the document's age, not a fieldTrigger Content Age › Age of Content in this Document Type (recipe)
Weekly digest instead of dailyProcess Interval: Every Week — and a report template (Create a report that runs on a schedule) if you want one email listing them all