Sam asked to bring home the Salesforce/Litify phone-number standardization project. The live target was LITIFY_ORG, and the execution run used stamp 2026-04-24-1941.
Activated the 10 previously inactive phone-format before-save FlowDefinitions. Contact_BeforeSave_Format_Phone was already active, so it was left active. Live readback now confirms all 11 approved Account and Contact phone-format FlowDefinitions have ActiveVersionId populated. Activation deploy id: 0AfUV000001VCxB0AW.
Ran rollback-safe Apex smoke testing against existing Codex SmokeTest Account and Contact records. The final one-field-at-a-time smoke passed and rolled back all test changes. Pass marker: P01_ACTIVE_PHONE_FLOW_SMOKE AccountId=001UV00000l8gLfYAI ContactId=003UV00000hzCd6YAE PASS.
Captured fresh rollback snapshots before data updates and copied them to /Users/samaguiar/Documents/Projects/.backups/P01-phone-standardization-2026-04-24-1941/backups/.
Ran canary and full bulk updates. Account completed with 164,346 successful field updates and 430 failures. Contact completed with 17,491 successful field updates and 57,066 failures.
Account side is effectively brought home for raw 10-digit drift. Account.Phone, Fax, litify_pm__Phone_Home__c, litify_pm__Phone_Mobile__c, and Emergency_Contact_Phone__c now have 0 raw 10-digit values. Only 7 raw 10-digit Account values remain across litify_pm__Phone_Other__c and litify_pm__Phone_Work__c.
Contact side improved but remains blocked at scale. Final raw 10-digit residuals are Contact.Phone 5,131, Contact.MobilePhone 10,794, Contact.HomePhone 631, and Contact.OtherPhone 5.
Deploying the flow XML alone created draft/latest versions but did not activate the 10 inactive flows. The working path was to deploy FlowDefinition activation metadata with activeVersionNumber = 2.
The first smoke test updated Account phone fields together and exposed a Litify Account Phone / Mobile sync collision. The final smoke test moved to one field per savepoint and rollback, which passed.
Direct Contact bulk updates cannot finish the remaining Contact cleanup because Litify blocks many rows with litify_pm.AllContactTriggerHandler.ContactHandlerException: You can't create another contact for an Litify Individual Account.
Do not retry failed Contact rows through direct Contact DML. The next pass must use a Litify-safe Individual Account / synced Contact remediation path.
Keep the before-save flows active. They now prevent new ordinary-save drift across the approved phone fields.
Handoff: /Users/samaguiar/Documents/Projects/Repos/sail-litify/workspaces/salesforce-cleanup-projects/P01-phone-number-standardization/HANDOFF-p01-phone-standardization-live-closeout-2026-04-24.md
Final counts: /Users/samaguiar/Documents/Projects/Repos/sail-litify/workspaces/salesforce-cleanup-projects/P01-phone-number-standardization/logs/final-counts-2026-04-24-1941.csv