{
  "id": "20260722_credits_notify_prod_bindings",
  "created_at": "2026-07-22T00:00:00Z",
  "title": "Credits approval email notifications: bind the four notify Flows to both Credits approval processes + install their email templates (prod)",
  "description": "Closes issue #4340 incident 2. Every component of Credits approval email is already live in prod EXCEPT two seed-only pieces: the four _System_EmailTemplate rows the notify Flows reference by id, and the ten process-level Flow-type ProcessAction rows binding those Flows to PoC_Credits_Approval_Process / Credits_Topup_Approval_Process. Both live in credits-approvals.seed.json, which prod never runs (the Seed Dispatcher production profile dispatches only pack_reference_data). The four notify Flows are installed and Active in prod (pack content); SMTP delivery is verified working (Account approval mail since 2026-07-16); prod ProcessAction rows for Credits are the hand-patch FieldUpdate set only. This bundle is generated verbatim from the seed (ids included) so a future production Dispatcher run adopts every row in place by PRIMARY id. Bindings are PROCESS-LEVEL (ProcessNodeId NULL) as required for the gated 3-step chains and impossible to author via the Setup UI for StepApproval; ProcessDefinitionId is resolved live by DeveloperName so an absent process inserts zero rows. ProcessAction carries only PRIMARY(Id), so upsert-by-id is authoritative. Idempotent, additive; existing FieldUpdate actions (Order=1) are untouched and the new actions run after them (Order 2-3, submitter mail before ops mail on FinalApproval). No metadata-cache refresh needed: approval ProcessDefinition/Action reads are real-time (QueryWithFilter), not schema-cache fed.",
  "sql_files": [
    "001_credits_notify_email_templates.sql",
    "002_credits_notify_flow_bindings.sql",
    "099_verify_credits_notify.sql"
  ]
}
