Field Mappings — Rules → Existing Schema

Proposed mapping of every field referenced by the YAML rules to existing or new Salesforce fields.

56Total rules
23Existing fields reused
9Existing renamed/converted
15Genuinely new fields
3Picklist value extensions
REUSE existing field works as-is RENAME existing field, different name in YAML DECISION blocked on Q1–Q10 NEW needs creating

Account

RuleYAML referenceStatusExisting field / proposedNotes
BR-026 Name REUSE Account.Name Standard field
BR-027 ParentId REUSE Account.ParentId Standard field
BR-028 Xero_Contact_Id__c REUSE Account.Xero_Contact_Id__c Already in use by sync
BR-029, BR-030 Billing_Entity__c RENAME Contract.Business_Line__c (picklist) Billing entity is on Contract not Account. Values: C9, Kaizen, Kaizen BV, LRH, Red Deer, SDS, SRB, CloudSinc
BR-021 Supplier_Portal_Required__c + Invoice_Delivery_Method__c RENAME Account.Invoicing_platforms__c (picklist) Existing values: Ariba, Catylyst, Client's own, Coupa, Tualia, Tungsten
BR-019 Invoice_Format__c DECISION ? "Consolidated vs separate per service line" — does this exist already? Worth asking.
BR-040 Region__c NEW Region__c (picklist) — see Q6 Existing What_regions_are_you_based_in__c is free text. New restricted picklist needed.
BR-041 L1_Account_Name__c NEW L1_Account_Name__c (formula or text) Top-level parent account name. Could be a formula based on ParentId chain.
BR-002 RM_Name__c RENAME Account.Primary_RM__c Existing picklist of RM names. Secondary_RM__c also exists.

Opportunity

RuleYAML referenceStatusExisting field / proposedNotes
BR-001 StageName REUSE StageName Standard. "Closed Won" target value exists.
BR-002, BR-007 CloseDate, AccountId REUSE Standard fields
BR-003 ACV__c REUSE Opportunity.ACV__c Currency, exists
BR-002 ARR__c REUSE Opportunity.ARR__c Currency, exists. Plus ARR_delta__c.
BR-002, BR-003 TCV__c NEW Opportunity.TCV__c (currency) Per BR-052: TCV = sum of Year_N_Total across Assets. Could be a rollup.
BR-008 Service_Start_Date__c DECISION Opportunity.Service_Commencement_Date_Contract__c (existing) or Asset.Service_Commencement_Date__c See Q4 (source of truth) and Q5 (testing-date cleanup)
BR-009 Service_End_Date__c DECISION Opportunity.Service_End_Date_Contract__c (existing) or Asset.Service_End_Date__c Same as above
BR-002 Billing_Frequency__c RENAME Asset.Billing_Schedule__c picklist Frequency is per Asset not Opportunity. Values: Annual, Quarterly, Monthly, Tri-Annual, Semi-Annual, One-Off, Type 3 (Partners).
BR-002 Product_Name__c RENAME OpportunityLineItem.Product2IdProduct2.Name Standard product hierarchy — already there
BR-022 SOW_Currency__c NEW Opportunity.SOW_Currency__c OR derive from Contract — needs decision
BR-006 Supersedes_SOW__c DECISION Contract.Previous_Contract__c? Contract already has Previous/Next Contract lookups. Can we reuse?
BR-034 Value_Change_Notes__c NEW Opportunity.Value_Change_Notes__c (long text) Required when TCV/ACV changes
BR-024 Revenue_Source__c DECISION ? Eventbrite vs SF-originated. Could be derived from Product2 family.
BR-003 Invoice_Status__c (flag target) NEW Opportunity.Invoice_Status__c (picklist) Values: No Invoice Required, Pending, Invoiced, etc.

OpportunityLineItem (the line-level rules)

RuleYAML referenceStatusExisting field / proposedNotes
BR-005 OLI count on Opp REUSE Standard child relationship
BR-048 Discount REUSE OLI.Discount (standard)
BR-050, BR-051, BR-053, BR-055, BR-056 Type__c DECISION OLI.Movement_Type__c (new picklist) — see Q3 Existing Type__c is a 1300-char string. Recommend new restricted picklist.
BR-053 Previous_Asset__c REUSE OLI.Previous_Asset__c (lookup → Asset) ✓ Already exists
BR-020 PO_Number__c REUSE OLI.PO_Number__c (or Contract.PO_Number__c) Both exist
BR-054 (DEFERRED) ARR_Change_Reason__c, ARR_Delta__c NEW OLI.ARR_Change_Reason__c ARR_delta__c already exists. ARR_Change_Reason__c is new but this rule is deferred OOS for MVP.
BR-056 Is_Delayed_Renewal__c, Contract_Signed__c NEW Opportunity.Is_Delayed_Renewal__c (boolean) Could derive from Close Date vs Previous Asset End Date

Asset

RuleYAML referenceStatusExisting field / proposedNotes
BR-008 Contracted_Asset_Start_Date__c RENAME Asset.Service_Commencement_Date__c Already exists. Per Q5, reclaim from testing-date misuse.
BR-009 Contracted_Asset_End_Date__c RENAME Asset.Service_End_Date__c Already exists. Same caveat.
BR-010 Testing_Start_Date__c, Testing_End_Date__c NEW Asset.Testing_Start_Date__c, Asset.Testing_End_Date__c Net new fields to separate testing from service dates
BR-052 Year_N_Total__c NEW Asset.Year_N_Total__c (currency) Or formula = Recurring_ACV + One_Off (per Ethan)
BR-052 Recurring_ACV__c RENAME Asset.ACV__c exists, but a dedicated Recurring_ACV__c may be needed to distinguish recurring from one-off Decision needed
BR-052 One_Off_Items__c RENAME Asset.One_Off__c Already exists — small naming alignment
BR-052 CPI_Escalator_Pct__c RENAME Contract.Trackers__c + Contract.Price_increase__c Already on Contract

Contract (referenced indirectly by several rules)

RuleConceptStatusExisting fieldNotes
BR-007 Contract signed date REUSE Contract.SOW_executed__c "Date contract was formally signed"
BR-012 Year 3000 retirement / rolling contracts RENAME Contract.Renewal_Clause__c picklist Values: None / Auto renew (Annual) / Rolling / Other / Approval Auto-Renew
BR-029, BR-030 Billing entity REUSE Contract.Business_Line__c The "billing entity" 8-value picklist
BR-052 CPI / RPI escalator REUSE Contract.Trackers__c + Price_increase__c Already there
BR-006 SOW supersession RENAME Contract.Previous_Contract__c + Next_Contract__c + Is_Contract_Reissued__c Existing infrastructure for supersession

Xero_Invoice__c

RuleYAML referenceStatusExisting field / proposedNotes
BR-016 Status__c REUSE Xero_Invoice__c.Status__c Picklist: Draft, Submitted, Authorised, Paid, Voided
BR-013, BR-014 Invoice_Date__c, Due_Date__c REUSE Both exist
Multiple Account__c lookup REUSE Xero_Invoice__c.Account__c Exists (was hidden by FLS in describe)
BR-018 Billing_Country__c, Tax_Rate__c DECISION Source from Account or duplicate? Probably read from Account.BillingCountry at sync time, no field needed on Xero_Invoice__c
BR-020 PO_Number__c DECISION Source from OLI/Contract or copy? Probably read from OLI/Contract at sync time
BR-031, BR-047 Is_Intercompany__c NEW Xero_Invoice__c.Is_Intercompany__c (boolean) Or derive from Business_Line
BR-033 VAT_Correction_Required__c, Service_Restructure__c, Currency_Correction__c NEW Xero_Invoice__c.Credit_Note_Trigger__c (picklist?) Could be a single picklist instead of 3 booleans
BR-035 Is_First_Invoice__c, SOW_Check_Completed__c NEW Xero_Invoice__c.Is_First_Invoice__c, SOW_Check_Completed__c Both booleans

Picklist value extensions

FieldCurrent valuesProposed addition / replacementNote
Account.Region__c (NEW field) EMEA, Americas, APAC + sub-regions BR-040 — Q6 (string → picklist conversion)
OLI.Movement_Type__c (NEW field) New Logo, Upsell, Renewal, Downsell, Churn, Reactivation BR-050 — Q3 (string → picklist)
Opportunity.Type (existing) Renewal, Up-sell, New Business, Renewal w/ Up-sell, Whitespace Per Q7: leave as-is, become derived rollup of OLI Movement_Type BR-050

Summary: net-new fields to create

Assuming the meeting agrees the recommended answers in Open Questions, here's the full list of fields that need creating.

ObjectFieldTypeRequired by
OpportunityTCV__ccurrency (rollup)BR-002, BR-003
OpportunitySOW_Currency__ccurrency / picklistBR-022
OpportunityValue_Change_Notes__clong textBR-034
OpportunityInvoice_Status__cpicklistBR-003
OpportunityIs_Delayed_Renewal__cbooleanBR-056
OpportunityLineItemMovement_Type__cpicklistBR-050, 051, 053, 055, 056
OpportunityLineItemARR_Change_Reason__cpicklist (deferred MVP)BR-054
AccountRegion__cpicklistBR-040
AccountL1_Account_Name__cformula or textBR-041
AssetYear_N_Total__ccurrencyBR-052
AssetRecurring_ACV__ccurrency (if needed)BR-052
AssetTesting_Start_Date__cdateBR-010
AssetTesting_End_Date__cdateBR-010
Xero_Invoice__cIs_Intercompany__cbooleanBR-031, 047
Xero_Invoice__cIs_First_Invoice__cbooleanBR-035
Xero_Invoice__cSOW_Check_Completed__cbooleanBR-035

~16 new fields. Plus picklist value additions to existing fields (Movement_Type, Region — both new picklists).