# 0028 — Lead — Module Triage

**Milestone:** M3
**Owner:** TBD
**Status:** planning

## Goal

Consolidates 33 legacy issues from the
`MetaDrivenPlatform4AI` repo that share the same module / area label,
so they can be triaged together by the corresponding domain IC.

Module label scope: `module/lead`.

## Acceptance criteria

- [ ] All `ported` children below have a Story or Bug filed in pingcap-pack
- [ ] All filed Stories / Bugs have a linked test (existing or to-write task with scaffold)
- [ ] Engineering review confirms which children are still applicable under the new project's design

## Stories / Bugs (filed as GitHub issues)

33 children classified `ported`. Phase 3/4 will file each as
a Story (capability) or Bug (defect) in this repo and back-reference the
legacy issue. Initial child list:

- [ ] #TBD — legacy MetaDrivenPlatform4AI#516 — Lead edit fails with 400: Vertical__c picklist value double-encoded (&amp;amp;)
- [ ] #TBD — legacy MetaDrivenPlatform4AI#518 — Lead Owner lookup returns no results for any search query
- [ ] #TBD — legacy MetaDrivenPlatform4AI#838 — fix: P0/P1 issues from post-merge QG review of PR #814 (metadata-driven Lead Convert)
- [ ] #TBD — legacy MetaDrivenPlatform4AI#1306 — Convert Lead modal missing mandatory account fields (Industry; Vertical; Employee Numbers; Revenue; Address; Website)
- [ ] #TBD — legacy MetaDrivenPlatform4AI#1307 — Lead Status picklist contains typo: 'No Enagement' should be 'No Engagement'
- [ ] #TBD — legacy MetaDrivenPlatform4AI#1318 — Lead Page Layouts API returns null — Setup UI broken; edit form renders all 292 fields
- [ ] #TBD — legacy MetaDrivenPlatform4AI#1319 — Lead List View column picker shows Selected(0) despite 6 visible columns
- [ ] #TBD — legacy MetaDrivenPlatform4AI#1387 — [Lead Detail] Lead Status path/progress bar missing in Nexus CRM
- [ ] #TBD — legacy MetaDrivenPlatform4AI#1424 — Lead detail page Campaign Members related list Name column shows empty dashes
- [ ] #TBD — legacy MetaDrivenPlatform4AI#1428 — APAC region has no active Lead assignment Flow
- [ ] #TBD — legacy MetaDrivenPlatform4AI#1429 — Lead list search does not match Email field
- [ ] #TBD — legacy MetaDrivenPlatform4AI#1441 — Feature request: Merge Leads (match Salesforce duplicate-merge workflow)
- [ ] #TBD — legacy MetaDrivenPlatform4AI#1443 — Lead Convert: multiple failures — JSON insert error + missing UI fields + pre-existing issues
- [ ] #TBD — legacy MetaDrivenPlatform4AI#1463 — Lead Convert blocked by Account_ID__c required-field validation — mapping engine doesn't populate custom required fields
- [ ] #TBD — legacy MetaDrivenPlatform4AI#1490 — Lead.Name is not synthesized on write — NULL in DB breaks search / sort / Report / Convert / Formula
- [ ] #TBD — legacy MetaDrivenPlatform4AI#1526 — Lead form reference(user) fields (Owner / AE / SDR / Partner Sales Owner / Partner Regional Ops) display raw SFDC User IDs instead of human names
- [ ] #TBD — legacy MetaDrivenPlatform4AI#1547 — Activity logging on Lead page not available (Log a Call; Email; Engagement) — blocked by Activity infrastructure
- [ ] #TBD — legacy MetaDrivenPlatform4AI#1555 — REGRESSION  Lead creation fully broken — POST /sobjects/lead returns 400 'required field(s) missing: Name' (partial fix of #1490 broke create)
- [ ] #TBD — legacy MetaDrivenPlatform4AI#1606 — Field capability denylist is hardcoded Go; not spec metadata — violates meta-driven architecture
- [ ] #TBD — legacy MetaDrivenPlatform4AI#2094 — fix(flow): Lead_Auto_Create_Org AfterSave does not dispatch on Lead Create with Portal_ID__c=NULL (#1789 / #1792 sibling)
- [ ] #TBD — legacy MetaDrivenPlatform4AI#2107 — REGRESSION  Lead creation fails 500 — protected Flow 'Lead_StatusChangeTimestamp' blocks beforeCreate event
- [ ] #TBD — legacy MetaDrivenPlatform4AI#2109 — Convert Lead UI button is unresponsive — clicking 'Convert' in modal fires no /actions/standard/convertLead request
- [ ] #TBD — legacy MetaDrivenPlatform4AI#2110 — Convert Lead defaults gap: Contact/Opp OwnerId not inherited from Lead; OpportunityContactRole.Role not populated from default
- [ ] #TBD — legacy MetaDrivenPlatform4AI#2129 — Lead detail Status field inline-edit unresponsive — picklist never opens on click
- [ ] #TBD — legacy MetaDrivenPlatform4AI#2133 — Convert Lead modal retains stale state across opens — Account/Contact/Opportunity selections persist between Convert clicks
- [ ] #TBD — legacy MetaDrivenPlatform4AI#2137 — Convert Lead: new Opportunity.CampaignId selection diverges from 'newest CampaignMember' contract — picks lifecycle Campaign instead
- [ ] #TBD — legacy MetaDrivenPlatform4AI#2139 — Sales and SDR Profiles missing ConvertLeads permission — Sales reps cannot convert their own Leads
- [ ] #TBD — legacy MetaDrivenPlatform4AI#2153 — Convert Lead: existing primary OpportunityContactRole not demoted when reusing Opportunity — multiple IsPrimary=true rows persist
- [ ] #TBD — legacy MetaDrivenPlatform4AI#2156 — Convert Modal: Opportunity Name missing required (*) marker + no Lead.Company prefill in UI
- [ ] #TBD — legacy MetaDrivenPlatform4AI#2157 — Convert success: Modal does not close + no auto-navigate to new Opportunity / Account
- [ ] #TBD — legacy MetaDrivenPlatform4AI#2159 — Convert Modal Account section: missing 'Create Account' link + Section B/C not disabled when Account-not-found
- [ ] #TBD — legacy MetaDrivenPlatform4AI#2167 — Std_ConvertLead flow not visible/active to non-admin users — Sales/SDR Convert API returns NOT_FOUND despite ConvertLeads permission
- [ ] #TBD — legacy MetaDrivenPlatform4AI#2187 — Formula evaluator panics on nil operand in equality comparison — null == 'literal' should evaluate to false; not panic

## Non-goals

- Re-port legacy fixes that are no longer relevant under the new project's
  pure-platform design — engineering identifies these case-by-case
- Layer-belonging classification (L0 / L1 / L2) — engineering's job

## History

- 2026-05-03 — created during Phase 2 from clustered orphan issues.

## Stories (filed in Phase 3)

_Pending Phase 3 synthesis._
