---
apiVersion: data-spec/v1
id: opportunity-listfields-20260405
description: "Set org-specific Opportunity list columns for production (#421)"
issue: "#421"
created: 2026-04-05
scope: production-only
status: pending
tables: [_System_Object]
depends_on: []
---

# Opportunity List Fields — Production-Only Data Spec

## Summary

Set the Opportunity object's list view columns to org-specific values for this
production deployment. These columns include custom Salesforce-migrated fields
(`Launch_Date__c`, `ARR_Amount_USD__c`) that are specific to this org — they do
NOT belong in bootstrap (`standard_listfields.json`) because a fresh NexusCRM
instance won't have these custom fields.

This is a `production-only` data spec, not a bootstrap change. See issue #422
comment for the design rationale: bootstrap configs are for universal defaults
(standard Salesforce fields only); org-specific column preferences use data specs.

## Changes

### 1. Set Opportunity ListFields to the org-specific column set

```sql
UPDATE _System_Object
SET ListFields = '["Name","AccountId","OwnerId","StageName","Launch_Date__c","ARR_Amount_USD__c","LastActivityDate"]'
WHERE ApiName = 'opportunity';
```

**Idempotency**: SET value is the desired final state. Re-running produces
identical results. The WHERE clause targets only the Opportunity object.

**Why these columns:**
- `Name`, `AccountId`, `OwnerId`, `StageName` — standard Salesforce fields
- `Launch_Date__c` — custom field: launch date for this org's opportunities
- `ARR_Amount_USD__c` — custom field: net new ARR in USD (this org's key metric)
- `LastActivityDate` — standard field: last activity date

## Rollback

```sql
UPDATE _System_Object
SET ListFields = '["Name","AccountId","Amount","StageName","CloseDate","OwnerId"]'
WHERE ApiName = 'opportunity';
```
