Mercy Ships — Status Dashboard

Generated 2026-05-18 06:52 CT · Source: scripts/verify/prod-verifications.yml + 3-org live check (MSPROD, MSMO, MSUSFULL) · Refresh: python3 scripts/verify/check-prod-now.py --status-md
✅ 27 Closed 🟢 4 In Prod (Open) 🟠 10 In Development (Sandbox) 🆕 1 New
🆕 New1
ty-letter-spec-alignment
TY Letter — refactor against client call notes 2026-04-29
MSMO · MSUSFULL · Prod ⚪
Next:
🟠 In Development (Sandbox)10
ty-letter-5bucket-delivery
Mailing Deliverability automation – auto-select correct template based on contact
MSMO ✅ MSUSFULL ✅ Prod ❌
Next: manifest cleanup: collapse into ty-letter-rollup-async (same class)
ty-letter-rollup-async
Thank You letter codes for Recurring Donation Opportunities
MSMO ✅ MSUSFULL ✅ Prod ⏳
Next: touch-update 591 SFJobs miscoded Opps via Searchable_Record_Id__c self-write (architect-gated)
allocation-fdc-batchable-deploy
Allocation FDC backfill at scale (Apex Batchable + bypass wiring)
MSMO — MSUSFULL ✅ Prod ⏳
Next:
eoy-tax-receipt
End of year Tax Statement Email Templates
MSMO · MSUSFULL · Prod ⚪
Next: Waiting for Dryad feedback
opp-bulk-import-cpu-limit
Opportunity bulk-import lock-row + data-skew failures
MSMO · MSUSFULL · Prod ⚪
Next:
gomeddo-position-commitment-level
[GoMeddo] Add Position Commitment Level field on positions (GM-001)
MSMO — MSUSFULL — Prod ⏳
Next:
gomeddo-sub-position-category
[GoMeddo] Add Sub-Position Category field on positions (GM-002)
MSMO — MSUSFULL — Prod ⏳
Next:
gomeddo-minimum-commitment
[GoMeddo] Add Minimum Commitment field on positions (GM-003)
MSMO — MSUSFULL — Prod ⏳
Next:
msus-sharepoint-integration
Research into how Mercy Ships can integrate with SharePoint and users can view SharePoint files inside of Salesforce
MSMO · MSUSFULL · Prod ⚪
Next:
donor-external-lookup-lwc
Donor lookup LWC — search a Donor by ID against the Donor__x external object and one-click create a Contact + Account in MSUS from those external fields
MSMO ✅ MSUSFULL ✅ Prod ⏳
Next:
🟢 In Prod (Open)4
opp-close-date-flow-limit
CloseDate update fails on heavy donor Accounts (NCF, DAFs, anonymous-aggregator households)
MSMO ✅ MSUSFULL ✅ Prod ✅
Next:
opportunity-restore-aftermdelete-npe
Opportunity Restore Failure (After Undelete Trigger Error)
MSMO ✅ MSUSFULL ✅ Prod ✅
Next:
allocation-financedept-tdtm
RDM Account assignment – auto-population on GAU Allocation
MSMO ✅ MSUSFULL ✅ Prod ✅
Next: release pipeline to Prod
tribute-type-on-opportunity
Tribute Type on Opportunity — auto-populate from Tribute Allocations so Dryad receipts render tribute text
MSMO ✅ MSUSFULL ✅ Prod ✅
Next:
✅ Closed27
anon-01-bucket-pool-routing
US Anonymous Account year-split — 36,071 Opportunities reorganized from a single 36K-record catchall into 15 year-based Anonymous Accounts (Pre-2000 + 2000-2013 + per-year 2014-2025 + 2026 Anonymous MSUS Household), each under the 7,500 soft cap and the 10K hard skew threshold
MSMO · MSUSFULL · Prod ⚪
Next:
woo-store-tribute-allocation
Woo Store donations with In Honor / In Memory text now create structured Tribute + Tribute_Allocation records (closes the gap where 4 of 5 last-90-day Woo+tribute donations had only the text marker)
MSMO ✅ MSUSFULL ✅ Prod ✅
Next:
msid-multiline
MSID multi-line MailingStreet
MSMO ✅ MSUSFULL ✅ Prod ✅
Next: 242-Contact silent-failure sweep · MSUSFULL APIM key repaste
protect-4-opp-fields
Protect 4 Opportunity fields on migrated records
MSMO ✅ MSUSFULL ✅ Prod ✅
Next: 30-day silent-overwrite drift scan ~2026-05-23
campaign-fdc-tdtm
Campaign hierarchy – auto-population of Finance Department Code from parent to child campaigns
MSMO ✅ MSUSFULL ✅ Prod ✅
Next: watch for orphan/inactive Campaign feedback (Davis 109-row cohort) → decide on default-FDC rule or status quo
asc-aam-tdtm
RDM Account assignment – auto-population on Account Soft Credits (ASC AAM)
MSMO ✅ MSUSFULL ✅ Prod ✅
Next:
psc-financedept-tdtm
RDM Account assignment – auto-population on Account Soft Credits (PSC AAM)
MSMO ✅ MSUSFULL ✅ Prod ✅
Next: release pipeline to Prod
searchable-record-id
Global Search to support searching by Salesforce Record ID
MSMO ✅ MSUSFULL ✅ Prod ✅
Next: weekly health check via scripts/verify/verify-searchable-id-scheduler.sh — confirm CronTrigger WAITING + 0 NULL records in 7-30d drift band
dupe-rules-woocommerce
Optimize MSUS Account & MSUS Contact duplicate rules (WooCommerce integration) + drop Email-as-hard-dependency in matching
MSMO ✅ MSUSFULL ⚠ Prod ✅
Next:
woo-processor-normalizer
Normalize raw WooCommerce gateway slugs on Opportunity.Processor__c (CMDT-backed)
MSMO ✅ MSUSFULL ✅ Prod ✅
Next:
woocommerce-opp-fields
Map new fields Processor__c and ReferenceCheck_Number__c to Opportunity from WooCommerce
MSMO ✅ MSUSFULL ✅ Prod ✅
Next: spin up dedicated session → confirm `Processor__c` + `ReferenceCheck_Number__c` exist on Opportunity in MSPROD, locate WooCommerce Apex mapping point → architect call
searchable-record-id-extension
Global Search — extended to Recurring Donation (Campaign / GAU dropped from scope)
MSMO ⚠ MSUSFULL ✅ Prod ✅
Next: parked — pick up when business asks for record-Id search on Campaign / RD / GAU
ocr-scanline-image
OCR-A scan-line image in Dryad receipts
MSMO ⚠ MSUSFULL ✅ Prod ✅
Next:
task-delete-restriction
Task Delete Restriction (10 named users only)
MSMO ✅ MSUSFULL ✅ Prod ✅
Next: Client sign-off on 2 scope questions → architect gate → Copado push to PROD (6 metadata + 1 TDTM data row + permset assignments)
dryad-templates
Fix all email templates (Next Donation button hyperlink and broken images)
MSMO · MSUSFULL · Prod ⚪
Next: quarterly link-rot audit (in-prod data, not source-controlled)
smartystreets-account-verify
Address Verification button on Account: 'No address in the setting' error
MSMO · MSUSFULL · Prod ⚪
Next:
diane-contact-merge-blocked
Contact Merge blocked by Update Next Birthday flow
MSMO ✅ MSUSFULL ✅ Prod ✅
Next:
merge-and-delete-access-audit
Merge & Delete Access — audit 33 users vs Brian's worksheet
MSMO · MSUSFULL · Prod ⚪
Next:
key-donor-fields-readonly
Make Key Donor Fields Read-Only for MSUS users
MSMO · MSUSFULL · Prod ⚪
Next:
contact-account-address-inherit
Contact Not Inheriting Account Address
MSMO · MSUSFULL · Prod ⚪
Next:
mailing-address-subpremise-autocomplete
Apt 2 dropped by Salesforce standard Lightning autocomplete (Google Places subpremise limitation)
MSMO · MSUSFULL · Prod ⚪
Next:
gau-allocation-refund-error
GAU Allocation refund error via US New Refund button
MSMO ✅ MSUSFULL ✅ Prod ✅
Next:
woocommerce-source-system-mapping
Map Source_System__c on WooCommerce-converted Opportunities + retire Volusion picklist value
MSMO ✅ MSUSFULL ✅ Prod ✅
Next:
missing-campaign-members
Missing Campaign Members on Opportunities — Primary Contacts on Opps not added as Campaign Members for some historical and recent records
MSMO · MSUSFULL · Prod ⚪
Next:
deceased-contact-household-account-behavior
NPSP Household Account behavior when sole Contact is marked Deceased
MSMO · MSUSFULL · Prod ⚪
Next:
c21-donorfile-closedate-rewrite
C21/Payology donor-file flow stamps Opportunity CloseDate to today's date instead of the actual gift date
MSMO · MSUSFULL · Prod ⚪
Next:
xl-connector-contact-import-householding
XL Connector contact import — review + safer NPSP-householding process
MSMO · MSUSFULL · Prod ⚪
Next:

Pipeline matrix

TicketSummaryMSMOMSUSFULLProdStageNext
anon-01-bucket-pool-routing US Anonymous Account year-split — 36,071 Opportunities reorganized from a single 36K-record catchall into 15 year-based Anonymous Accounts (Pre-2000 + 2000-2013 + per-year 2014-2025 + 2026 Anonymous MSUS Household), each under the 7,500 soft cap and the 10K hard skew threshold · · ✅ Closed
woo-store-tribute-allocation Woo Store donations with In Honor / In Memory text now create structured Tribute + Tribute_Allocation records (closes the gap where 4 of 5 last-90-day Woo+tribute donations had only the text marker) ✅ Closed
msid-multiline MSID multi-line MailingStreet ✅ Closed 242-Contact silent-failure sweep · MSUSFULL APIM key repaste
protect-4-opp-fields Protect 4 Opportunity fields on migrated records ✅ Closed 30-day silent-overwrite drift scan ~2026-05-23
campaign-fdc-tdtm Campaign hierarchy – auto-population of Finance Department Code from parent to child campaigns ✅ Closed watch for orphan/inactive Campaign feedback (Davis 109-row cohort) → decide on default-FDC rule or status quo
asc-aam-tdtm RDM Account assignment – auto-population on Account Soft Credits (ASC AAM) ✅ Closed
psc-financedept-tdtm RDM Account assignment – auto-population on Account Soft Credits (PSC AAM) ✅ Closed release pipeline to Prod
searchable-record-id Global Search to support searching by Salesforce Record ID ✅ Closed weekly health check via scripts/verify/verify-searchable-id-scheduler.sh — confirm CronTrigger WAITING + 0 NULL records in 7-30d drift band
dupe-rules-woocommerce Optimize MSUS Account & MSUS Contact duplicate rules (WooCommerce integration) + drop Email-as-hard-dependency in matching ✅ Closed
woo-processor-normalizer Normalize raw WooCommerce gateway slugs on Opportunity.Processor__c (CMDT-backed) ✅ Closed
woocommerce-opp-fields Map new fields Processor__c and ReferenceCheck_Number__c to Opportunity from WooCommerce ✅ Closed spin up dedicated session → confirm `Processor__c` + `ReferenceCheck_Number__c` exist on Opportunity in MSPROD, locate WooCommerce Apex mapping point → architect call
searchable-record-id-extension Global Search — extended to Recurring Donation (Campaign / GAU dropped from scope) ✅ Closed parked — pick up when business asks for record-Id search on Campaign / RD / GAU
ocr-scanline-image OCR-A scan-line image in Dryad receipts ✅ Closed
task-delete-restriction Task Delete Restriction (10 named users only) ✅ Closed Client sign-off on 2 scope questions → architect gate → Copado push to PROD (6 metadata + 1 TDTM data row + permset assignments)
dryad-templates Fix all email templates (Next Donation button hyperlink and broken images) · · ✅ Closed quarterly link-rot audit (in-prod data, not source-controlled)
smartystreets-account-verify Address Verification button on Account: 'No address in the setting' error · · ✅ Closed
diane-contact-merge-blocked Contact Merge blocked by Update Next Birthday flow ✅ Closed
merge-and-delete-access-audit Merge & Delete Access — audit 33 users vs Brian's worksheet · · ✅ Closed
key-donor-fields-readonly Make Key Donor Fields Read-Only for MSUS users · · ✅ Closed
contact-account-address-inherit Contact Not Inheriting Account Address · · ✅ Closed
mailing-address-subpremise-autocomplete Apt 2 dropped by Salesforce standard Lightning autocomplete (Google Places subpremise limitation) · · ✅ Closed
gau-allocation-refund-error GAU Allocation refund error via US New Refund button ✅ Closed
woocommerce-source-system-mapping Map Source_System__c on WooCommerce-converted Opportunities + retire Volusion picklist value ✅ Closed
missing-campaign-members Missing Campaign Members on Opportunities — Primary Contacts on Opps not added as Campaign Members for some historical and recent records · · ✅ Closed
deceased-contact-household-account-behavior NPSP Household Account behavior when sole Contact is marked Deceased · · ✅ Closed
c21-donorfile-closedate-rewrite C21/Payology donor-file flow stamps Opportunity CloseDate to today's date instead of the actual gift date · · ✅ Closed
xl-connector-contact-import-householding XL Connector contact import — review + safer NPSP-householding process · · ✅ Closed
opp-close-date-flow-limit CloseDate update fails on heavy donor Accounts (NCF, DAFs, anonymous-aggregator households) 🟢 In Prod (Open)
opportunity-restore-aftermdelete-npe Opportunity Restore Failure (After Undelete Trigger Error) 🟢 In Prod (Open)
allocation-financedept-tdtm RDM Account assignment – auto-population on GAU Allocation 🟢 In Prod (Open) release pipeline to Prod
tribute-type-on-opportunity Tribute Type on Opportunity — auto-populate from Tribute Allocations so Dryad receipts render tribute text 🟢 In Prod (Open)
ty-letter-5bucket-delivery Mailing Deliverability automation – auto-select correct template based on contact 🟠 In Development (Sandbox) manifest cleanup: collapse into ty-letter-rollup-async (same class)
ty-letter-rollup-async Thank You letter codes for Recurring Donation Opportunities 🟠 In Development (Sandbox) touch-update 591 SFJobs miscoded Opps via Searchable_Record_Id__c self-write (architect-gated)
allocation-fdc-batchable-deploy Allocation FDC backfill at scale (Apex Batchable + bypass wiring) 🟠 In Development (Sandbox)
eoy-tax-receipt End of year Tax Statement Email Templates · · 🟠 In Development (Sandbox) Waiting for Dryad feedback
opp-bulk-import-cpu-limit Opportunity bulk-import lock-row + data-skew failures · · 🟠 In Development (Sandbox)
gomeddo-position-commitment-level [GoMeddo] Add Position Commitment Level field on positions (GM-001) 🟠 In Development (Sandbox)
gomeddo-sub-position-category [GoMeddo] Add Sub-Position Category field on positions (GM-002) 🟠 In Development (Sandbox)
gomeddo-minimum-commitment [GoMeddo] Add Minimum Commitment field on positions (GM-003) 🟠 In Development (Sandbox)
msus-sharepoint-integration Research into how Mercy Ships can integrate with SharePoint and users can view SharePoint files inside of Salesforce · · 🟠 In Development (Sandbox)
donor-external-lookup-lwc Donor lookup LWC — search a Donor by ID against the Donor__x external object and one-click create a Contact + Account in MSUS from those external fields 🟠 In Development (Sandbox)