Business Rules Register
Last updated: 2026-07-03.
This register tracks implemented workflows that mutate business data.
| Workflow | Business event | Records that may change | Current rule document | Technical references |
|---|---|---|---|---|
| Contact created MSP seat automation | A CRM Contact is created and the CRM workflow calls middleware. | Contact Lead_Status; MSP Seat creation. |
MSP contact lifecycle | app/automations/contact_created.py, zoho_crm/deluge/standalone.on_create_contact_automations.dg |
| Contact edited MSP seat automation | A CRM Contact is edited and the CRM workflow calls middleware. | MSP Seat Billing_Status / Billing_End; Contact Lead_Status / update_source; MSP Seat creation when missing. |
MSP contact lifecycle | app/automations/contact_edited.py, zoho_crm/deluge/standalone.on_edit_contact_automations.dg |
| Generate or refresh one MSP invoice | A user clicks the plan-level CRM button. | CRM Invoice; Xero draft invoice; CRM invoice Xero reference fields. | MSP invoicing | docs/dev/xero_crm_invoice_sync.md, msp_imports/msp_invoices/service.py |
| Generate or refresh monthly MSP invoices | A user clicks the list-level CRM button for all plans. | CRM Invoices; Xero draft invoices; CRM invoice Xero reference fields. | MSP invoicing | docs/dev/xero_crm_invoice_sync.md, msp_imports/msp_invoices/service.py |
| Reconcile one MSP invoice line | An MSP Invoice Line is created or edited. | MSP Invoice Line Start_Date, End_Date. |
MSP invoicing | docs/notes/2026-05-29_msp_invoice_line_crm_implementation_plan.md, msp_imports/msp_invoices/reconcile.py |
| Project from deal | A Deal workflow calls middleware to ensure a linked Zoho Project exists. | Zoho Project; Deal project link fields; project tasklists/tasks; Delivery Models. | Deals, projects, and delivery models | app/automations/projects_from_deal/project_bootstrap.py |
| Reserved / approval / payment pending deal setup | A Deal reaches Reserved, Approval and Payment Pending for an MSP or Tech Project category. |
Zoho Project tasklists; tasklist completion; Delivery Models; Deal Closing_Date. |
Deals, projects, and delivery models | app/automations/projects_from_deal/reserved_pending.py |
| Delivery Model alert evaluation | Delivery Model progress is evaluated, optionally with CRM updates and alert emails. | Delivery Model completion fields; Delivery Model mail action. | Deals, projects, and delivery models | app/delivery_models/alerts.py, app/automations/delivery_model_completion_calculations.py |
| Delivery Model state sync | Delivery Model progress is evaluated and optionally written without sending alert emails. | Delivery Model completion fields and Cumulated_Amount. |
Deals, projects, and delivery models | app/automations/delivery_model_completion.py |
| Archived timelog backfill cache reset | A reporting operator resets the archived timelog report cache. | Generated cached report files only; no CRM/Projects/Xero business records. | Reporting assumptions | docs/archived_timelog_backfill.md |
Not Process Rules
Some endpoints are intentionally excluded from the process-rule register:
- Read-only report exports.
- Health checks and internal debug pages.
- Thin technical proxy endpoints that forward a specific Projects update without applying Peppermint business rules.
- Compatibility endpoints that currently do not mutate records, including
POST /zoho/msp-invoices/reconcile-plan-lines. - One-off scripts unless they become repeatable business processes.