DTS Dev Docs

Workflow

Email system (confirmation + notification)

Serve System sends confirmation emails to volunteers and notification emails to recipients configured per opportunity. Both use Rock System Communications with merge fields provided by the sign-up service.

Flow summary

Volunteer signs up
|- confirmation path -> system comm on opportunity -> send to volunteer
|  |- optional ContentTemplate (hierarchical template match)
|- notification path -> filter signups by recipient campus/role -> send to people/groups

Template hierarchy

Content template resolution is implemented in ServeOpportunityNotificationContentTemplateService.GetMostSpecificTemplate with this order:

  1. Role + Campus
  2. Role only
  3. Role Category + Campus
  4. Role Category only
  5. Campus only
  6. Default template (no role/category/campus)

Key merge fields

Field Confirmation Notification
Person Volunteer who signed up Email recipient person
ServeOpportunity Yes Yes
ServeOpportunityInstance Yes Yes
ServeOpportunityRole Selected role Role from grouped sign-ups
Campus Selected campus Campus from grouped sign-ups
ShiftDetails List of shift items Grouped shift objects with people/signups
ContentTemplate Yes (if matched) No
NotificationRole / NotificationCampus No Yes, based on recipient filters
People / SignUps No Yes

Implementation source

  • serve-system/org.tpcc.ServeSystem/Model/ServeOpportunityInstanceSignUp/ServeOpportunityInstanceSignUpService.cs
  • serve-system/org.tpcc.ServeSystem/Model/ServeOpportunityNotificationContentTemplate/ServeOpportunityNotificationContentTemplateService.cs
  • serve-system/org.tpcc.ServeSystem/ServeHelper.cs

Canonical long-form documentation is mirrored at reference/TPCC_ServeSystem_Email_Documentation.md.

Troubleshooting quick list

  • Missing confirmations: verify ConfirmationSystemEmailId and active System Communication.
  • Missing notifications: verify NotificationSystemEmailId and recipient filters.
  • Empty template output: add at least a default content template for fallback.
  • Unexpected template: verify role/category/campus specificity precedence.