Proposed mapping of every field referenced by the YAML rules to existing or new Salesforce fields.
| Rule | YAML reference | Status | Existing field / proposed | Notes |
|---|---|---|---|---|
| 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. |
| Rule | YAML reference | Status | Existing field / proposed | Notes |
|---|---|---|---|---|
| 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.Product2Id → Product2.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. |
| Rule | YAML reference | Status | Existing field / proposed | Notes |
|---|---|---|---|---|
| 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 |
| Rule | YAML reference | Status | Existing field / proposed | Notes |
|---|---|---|---|---|
| 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 |
| Rule | Concept | Status | Existing field | Notes |
|---|---|---|---|---|
| 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 |
| Rule | YAML reference | Status | Existing field / proposed | Notes |
|---|---|---|---|---|
| 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 |
| Field | Current values | Proposed addition / replacement | Note |
|---|---|---|---|
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 |
Assuming the meeting agrees the recommended answers in Open Questions, here's the full list of fields that need creating.
| Object | Field | Type | Required by |
|---|---|---|---|
| Opportunity | TCV__c | currency (rollup) | BR-002, BR-003 |
| Opportunity | SOW_Currency__c | currency / picklist | BR-022 |
| Opportunity | Value_Change_Notes__c | long text | BR-034 |
| Opportunity | Invoice_Status__c | picklist | BR-003 |
| Opportunity | Is_Delayed_Renewal__c | boolean | BR-056 |
| OpportunityLineItem | Movement_Type__c | picklist | BR-050, 051, 053, 055, 056 |
| OpportunityLineItem | ARR_Change_Reason__c | picklist (deferred MVP) | BR-054 |
| Account | Region__c | picklist | BR-040 |
| Account | L1_Account_Name__c | formula or text | BR-041 |
| Asset | Year_N_Total__c | currency | BR-052 |
| Asset | Recurring_ACV__c | currency (if needed) | BR-052 |
| Asset | Testing_Start_Date__c | date | BR-010 |
| Asset | Testing_End_Date__c | date | BR-010 |
| Xero_Invoice__c | Is_Intercompany__c | boolean | BR-031, 047 |
| Xero_Invoice__c | Is_First_Invoice__c | boolean | BR-035 |
| Xero_Invoice__c | SOW_Check_Completed__c | boolean | BR-035 |
~16 new fields. Plus picklist value additions to existing fields (Movement_Type, Region — both new picklists).