- Adjusted YAML and JSON files for consistent formatting, including healthcheck commands and package exports. - Enhanced readability in various TypeScript files by standardizing string quotes and improving line breaks. - Updated documentation across multiple files to improve clarity and consistency, including address system and logging levels. - Removed unnecessary package-lock.json from shared package directory to streamline dependencies.
26 KiB
26 KiB
Salesforce Product2 Setup - Complete Portal Products
This document provides the complete list of Product2 records to create in Salesforce with all field values specified, including edge case handling and validation rules.
Core Fields Reference
All products require these core fields:
StockKeepingUnit(Text, 255) - External ID, Unique (standard Salesforce field)Product2Categories1__c(Picklist) - "Internet", "SIM", "VPN", "Other"Portal_Catalog__c(Checkbox) - Show in main catalogPortal_Accessible__c(Checkbox) - Can be used in ordersItem_Class__c(Picklist) - "Service", "Installation", "Add-on", "Activation"Billing_Cycle__c(Picklist) - "Monthly", "Onetime"WH_Product_ID__c(Number, 18, 0) - WHMCS Product IDWH_Product_Name__c(Text, 255) - WHMCS Product Name
Edge Case Handling Fields
Product Disambiguation Fields
-- Handle multiple activation fees or installation options
Is_Default__c Checkbox -- Default choice when multiple options exist
Display_Order__c Number(18,0) -- Ordering for UI selection (0 = first)
Auto_Add__c Checkbox -- Automatically add to orders (required fees)
Regional/Conditional Fields
-- Handle region-specific products (VPN, Internet eligibility)
VPN_Region__c Picklist -- "USA-SF", "UK-London", "Global", null
Internet_Region__c Text(255) -- Geographic restriction
Eligibility_Condition__c Text(1000) -- JSON conditions for availability
Product Relationship Fields
-- Handle complex dependencies and conflicts
Required_Products__c Text(1000) -- JSON array of required SKUs
Dependent_Products__c Text(1000) -- JSON array of auto-added SKUs
Mutually_Exclusive__c Text(1000) -- JSON array of conflicting SKUs
Internet Products
Main Service Plans
Internet Silver - Home 1G
Name: Internet Silver Plan (Home 1G)
StockKeepingUnit: INTERNET-SILVER-HOME-1G
Product2Categories1__c: Internet
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 181
WH_Product_Name__c: SonixNet via NTT Optical Fiber (Home 1G) [SILVER]
Internet_Plan_Tier__c: Silver
Internet_Offering_Type__c: Home 1G
Internet_Monthly_Price__c: 6000
Display_Order__c: 1
Internet Gold - Home 1G
Name: Internet Gold Plan (Home 1G)
StockKeepingUnit: INTERNET-GOLD-HOME-1G
Product2Categories1__c: Internet
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 182
WH_Product_Name__c: SonixNet via NTT Optical Fiber (Home 1G) [GOLD]
Internet_Plan_Tier__c: Gold
Internet_Offering_Type__c: Home 1G
Internet_Monthly_Price__c: 6500
Display_Order__c: 2
Internet Platinum - Home 1G
Name: Internet Platinum Plan (Home 1G)
StockKeepingUnit: INTERNET-PLATINUM-HOME-1G
Product2Categories1__c: Internet
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 183
WH_Product_Name__c: SonixNet via NTT Optical Fiber (Home 1G) [PLATINUM - Base Plan]
Internet_Plan_Tier__c: Platinum
Internet_Offering_Type__c: Home 1G
Internet_Monthly_Price__c: 6500
Display_Order__c: 3
Internet Silver - Apartment 1G
Name: Internet Silver Plan (Apartment 1G)
StockKeepingUnit: INTERNET-SILVER-APT-1G
Product2Categories1__c: Internet
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 184
WH_Product_Name__c: SonixNet via NTT Optical Fiber (APT 1G) [SILVER]
Internet_Plan_Tier__c: Silver
Internet_Offering_Type__c: Apartment 1G
Internet_Monthly_Price__c: 4800
Display_Order__c: 4
Internet Gold - Apartment 1G
Name: Internet Gold Plan (Apartment 1G)
StockKeepingUnit: INTERNET-GOLD-APT-1G
Product2Categories1__c: Internet
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 185
WH_Product_Name__c: SonixNet via NTT Optical Fiber (APT 1G) [GOLD]
Internet_Plan_Tier__c: Gold
Internet_Offering_Type__c: Apartment 1G
Internet_Monthly_Price__c: 5300
Display_Order__c: 5
Internet Platinum - Apartment 1G
Name: Internet Platinum Plan (Apartment 1G)
StockKeepingUnit: INTERNET-PLATINUM-APT-1G
Product2Categories1__c: Internet
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 186
WH_Product_Name__c: SonixNet via NTT Optical Fiber (APT 1G) [PLATINUM - Base Plan]
Internet_Plan_Tier__c: Platinum
Internet_Offering_Type__c: Apartment 1G
Internet_Monthly_Price__c: 5300
Display_Order__c: 6
Internet Silver - Apartment 100M
Name: Internet Silver Plan (Apartment 100M)
StockKeepingUnit: INTERNET-SILVER-APT-100M
Product2Categories1__c: Internet
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 187
WH_Product_Name__c: SonixNet via NTT Optical Fiber (APT 100M) [SILVER]
Internet_Plan_Tier__c: Silver
Internet_Offering_Type__c: Apartment 100M
Internet_Monthly_Price__c: 4800
Display_Order__c: 7
Internet Gold - Apartment 100M
Name: Internet Gold Plan (Apartment 100M)
StockKeepingUnit: INTERNET-GOLD-APT-100M
Product2Categories1__c: Internet
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 188
WH_Product_Name__c: SonixNet via NTT Optical Fiber (APT 100M) [GOLD]
Internet_Plan_Tier__c: Gold
Internet_Offering_Type__c: Apartment 100M
Internet_Monthly_Price__c: 5300
Display_Order__c: 8
Internet Platinum - Apartment 100M
Name: Internet Platinum Plan (Apartment 100M)
StockKeepingUnit: INTERNET-PLATINUM-APT-100M
Product2Categories1__c: Internet
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 189
WH_Product_Name__c: SonixNet via NTT Optical Fiber (APT 100M) [PLATINUM - Base Plan]
Internet_Plan_Tier__c: Platinum
Internet_Offering_Type__c: Apartment 100M
Internet_Monthly_Price__c: 5300
Display_Order__c: 9
Internet Silver - Flets X (Home 10G)
Name: Internet Silver Plan (Flets X)
StockKeepingUnit: INTERNET-SILVER-FLETS-X
Product2Categories1__c: Internet
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 239
WH_Product_Name__c: SonixNet via NTT Optical Fiber (Flets X) [SILVER]
Internet_Plan_Tier__c: Silver
Internet_Offering_Type__c: Home 10G
Internet_Monthly_Price__c: 8000
Display_Order__c: 10
Internet Gold - Flets X (Home 10G)
Name: Internet Gold Plan (Flets X)
StockKeepingUnit: INTERNET-GOLD-FLETS-X
Product2Categories1__c: Internet
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 214
WH_Product_Name__c: SonixNet via NTT Optical Fiber (Flets X) [GOLD]
Internet_Plan_Tier__c: Gold
Internet_Offering_Type__c: Home 10G
Internet_Monthly_Price__c: 8500
Display_Order__c: 11
Internet Platinum - Flets X (Home 10G)
Name: Internet Platinum Plan (Flets X)
StockKeepingUnit: INTERNET-PLATINUM-FLETS-X
Product2Categories1__c: Internet
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 213
WH_Product_Name__c: SonixNet via NTT Optical Fiber (Flets X) [PLATINUM - Base Plan]
Internet_Plan_Tier__c: Platinum
Internet_Offering_Type__c: Home 10G
Internet_Monthly_Price__c: 8500
Display_Order__c: 12
Installation Options
Single Installation
Name: NTT Installation Fee (Single Payment)
StockKeepingUnit: INTERNET-INSTALL-SINGLE
Product2Categories1__c: Internet
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Installation
Billing_Cycle__c: Onetime
WH_Product_ID__c: 242
WH_Product_Name__c: NTT Installation Fee (Single Installment)
Is_Default__c: true
Auto_Add__c: false
Display_Order__c: 1
12-Month Installation
Name: NTT Installation Fee (12-Month Plan)
StockKeepingUnit: INTERNET-INSTALL-12M
Product2Categories1__c: Internet
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Installation
Billing_Cycle__c: Monthly
WH_Product_ID__c: 243
WH_Product_Name__c: NTT Installation Fee (12-Month Installment)
Is_Default__c: false
Auto_Add__c: false
Display_Order__c: 2
24-Month Installation
Name: NTT Installation Fee (24-Month Plan)
StockKeepingUnit: INTERNET-INSTALL-24M
Product2Categories1__c: Internet
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Installation
Billing_Cycle__c: Monthly
WH_Product_ID__c: 244
WH_Product_Name__c: NTT Installation Fee (24-Month Installment)
Is_Default__c: false
Auto_Add__c: false
Display_Order__c: 3
Internet Add-ons (Hidden from Catalog)
Weekend Installation
Name: NTT Weekend Installation Fee
StockKeepingUnit: INTERNET-INSTALL-WEEKEND
Product2Categories1__c: Internet
Portal_Catalog__c: false
Portal_Accessible__c: true
Item_Class__c: Add-on
Billing_Cycle__c: Onetime
WH_Product_ID__c: 245
WH_Product_Name__c: NTT Installation Fee (Weekend Additional)
Auto_Add__c: true
Mutually_Exclusive__c: ["INTERNET-INSTALL-WEEKDAY"]
Hikari Denwa Service
Name: Hikari Denwa (Home Phone)
StockKeepingUnit: INTERNET-ADDON-HOME-PHONE
Product2Categories1__c: Internet
Portal_Catalog__c: false
Portal_Accessible__c: true
Item_Class__c: Add-on
Billing_Cycle__c: Monthly
WH_Product_ID__c: 246
WH_Product_Name__c: Hikari Denwa Monthly Service
Required_Products__c: ["INTERNET-ADDON-HIKARI-DENWA-INSTALL"]
Hikari Denwa Installation
Name: Hikari Denwa Installation Fee
StockKeepingUnit: INTERNET-ADDON-HIKARI-DENWA-INSTALL
Product2Categories1__c: Internet
Portal_Catalog__c: false
Portal_Accessible__c: true
Item_Class__c: Add-on
Billing_Cycle__c: Onetime
WH_Product_ID__c: 247
WH_Product_Name__c: Hikari Denwa Installation Fee
Auto_Add__c: true
SIM Products
Data-only Plans
SIM Data-only 5GB
Name: SIM Data-only 5GB
StockKeepingUnit: SIM-DATA-ONLY-5GB
Product2Categories1__c: SIM
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 97
WH_Product_Name__c: SonixNet SIM Service Data-only/5GB (Monthly)
SIM_Data_Size__c: 5GB
SIM_Plan_Type__c: DataOnly
SIM_Has_Family_Discount__c: false
Display_Order__c: 1
SIM Data-only 10GB
Name: SIM Data-only 10GB
StockKeepingUnit: SIM-DATA-ONLY-10GB
Product2Categories1__c: SIM
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 219
WH_Product_Name__c: SonixNet SIM Service Data-only/10GB (Monthly)
SIM_Data_Size__c: 10GB
SIM_Plan_Type__c: DataOnly
SIM_Has_Family_Discount__c: false
Display_Order__c: 2
SIM Data-only 25GB
Name: SIM Data-only 25GB
StockKeepingUnit: SIM-DATA-ONLY-25GB
Product2Categories1__c: SIM
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 248
WH_Product_Name__c: SonixNet SIM Service Data-only/25GB (Monthly)
SIM_Data_Size__c: 25GB
SIM_Plan_Type__c: DataOnly
SIM_Has_Family_Discount__c: false
Display_Order__c: 3
SIM Data-only 30GB (3GB/3days)
Name: SIM Data-only 30GB (3GB/3days)
StockKeepingUnit: SIM-DATA-ONLY-30GB-3DAY
Product2Categories1__c: SIM
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 98
WH_Product_Name__c: SonixNet SIM Service Data-only/30GB (3GB/3days) (Monthly)
SIM_Data_Size__c: 30GB
SIM_Plan_Type__c: DataOnly
SIM_Has_Family_Discount__c: false
Display_Order__c: 4
SIM Data-only 50GB
Name: SIM Data-only 50GB
StockKeepingUnit: SIM-DATA-ONLY-50GB
Product2Categories1__c: SIM
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 252
WH_Product_Name__c: SonixNet SIM Service Data-only/50GB (Monthly)
SIM_Data_Size__c: 50GB
SIM_Plan_Type__c: DataOnly
SIM_Has_Family_Discount__c: false
Display_Order__c: 5
Data+Voice Plans (Regular)
SIM Data+Voice 5GB
Name: SIM Data+Voice 5GB
StockKeepingUnit: SIM-DATA-VOICE-5GB
Product2Categories1__c: SIM
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 105
WH_Product_Name__c: SonixNet SIM Service Data+Voice/5GB (Monthly)
SIM_Data_Size__c: 5GB
SIM_Plan_Type__c: DataSmsVoice
SIM_Has_Family_Discount__c: false
Display_Order__c: 1
SIM Data+Voice 10GB
Name: SIM Data+Voice 10GB
StockKeepingUnit: SIM-DATA-VOICE-10GB
Product2Categories1__c: SIM
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 216
WH_Product_Name__c: SonixNet SIM Service Data+Voice/10GB (Monthly)
SIM_Data_Size__c: 10GB
SIM_Plan_Type__c: DataSmsVoice
SIM_Has_Family_Discount__c: false
Display_Order__c: 2
SIM Data+Voice 25GB
Name: SIM Data+Voice 25GB
StockKeepingUnit: SIM-DATA-VOICE-25GB
Product2Categories1__c: SIM
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 247
WH_Product_Name__c: SonixNet SIM Service Data+Voice/25GB (Monthly)
SIM_Data_Size__c: 25GB
SIM_Plan_Type__c: DataSmsVoice
SIM_Has_Family_Discount__c: false
Display_Order__c: 3
SIM Data+Voice 30GB (3GB/3days)
Name: SIM Data+Voice 30GB (3GB/3days)
StockKeepingUnit: SIM-DATA-VOICE-30GB-3DAY
Product2Categories1__c: SIM
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 107
WH_Product_Name__c: SonixNet SIM Service Data+Voice/30GB (3GB/3days) (Monthly)
SIM_Data_Size__c: 30GB
SIM_Plan_Type__c: DataSmsVoice
SIM_Has_Family_Discount__c: false
Display_Order__c: 4
SIM Data+Voice 50GB
Name: SIM Data+Voice 50GB
StockKeepingUnit: SIM-DATA-VOICE-50GB
Product2Categories1__c: SIM
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 250
WH_Product_Name__c: SonixNet SIM Service Data+Voice/50GB (Monthly)
SIM_Data_Size__c: 50GB
SIM_Plan_Type__c: DataSmsVoice
SIM_Has_Family_Discount__c: false
Display_Order__c: 5
Voice-Only Plan
SIM Voice-Only
Name: SIM Voice-Only
StockKeepingUnit: SIM-VOICE-ONLY
Product2Categories1__c: SIM
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 142
WH_Product_Name__c: SonixNet SIM Service Voice-Only (Monthly)
SIM_Data_Size__c: Voice-Only
SIM_Plan_Type__c: VoiceOnly
SIM_Has_Family_Discount__c: false
Display_Order__c: 0
Family Discount Plans (Hidden from Catalog)
SIM Data+Voice 5GB (Family)
Name: SIM Data+Voice 5GB (Family Discount)
StockKeepingUnit: SIM-DATA-VOICE-5GB-FAMILY
Product2Categories1__c: SIM
Portal_Catalog__c: false
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 108
WH_Product_Name__c: SonixNet SIM Service Data+Voice/5GB (Family Discount/Monthly)
SIM_Data_Size__c: 5GB
SIM_Plan_Type__c: DataSmsVoice
SIM_Has_Family_Discount__c: true
Display_Order__c: 1
SIM Data+Voice 10GB (Family)
Name: SIM Data+Voice 10GB (Family Discount)
StockKeepingUnit: SIM-DATA-VOICE-10GB-FAMILY
Product2Categories1__c: SIM
Portal_Catalog__c: false
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 217
WH_Product_Name__c: SonixNet SIM Service Data+Voice/10GB (Family Discount/Monthly)
SIM_Data_Size__c: 10GB
SIM_Plan_Type__c: DataSmsVoice
SIM_Has_Family_Discount__c: true
Display_Order__c: 2
SIM Data+Voice 25GB (Family)
Name: SIM Data+Voice 25GB (Family Discount)
StockKeepingUnit: SIM-DATA-VOICE-25GB-FAMILY
Product2Categories1__c: SIM
Portal_Catalog__c: false
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 249
WH_Product_Name__c: SonixNet SIM Service Data+Voice/25GB (Family Discount/Monthly)
SIM_Data_Size__c: 25GB
SIM_Plan_Type__c: DataSmsVoice
SIM_Has_Family_Discount__c: true
Display_Order__c: 3
SIM Data+Voice 30GB (Family)
Name: SIM Data+Voice 30GB (Family Discount)
StockKeepingUnit: SIM-DATA-VOICE-30GB-3DAY-FAMILY
Product2Categories1__c: SIM
Portal_Catalog__c: false
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 109
WH_Product_Name__c: SonixNet SIM Service Data+Voice/30GB (3GB/3days) (Family Discount/Monthly)
SIM_Data_Size__c: 30GB
SIM_Plan_Type__c: DataSmsVoice
SIM_Has_Family_Discount__c: true
Display_Order__c: 4
SIM Data+Voice 50GB (Family)
Name: SIM Data+Voice 50GB (Family Discount)
StockKeepingUnit: SIM-DATA-VOICE-50GB-FAMILY
Product2Categories1__c: SIM
Portal_Catalog__c: false
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 251
WH_Product_Name__c: SonixNet SIM Service Data+Voice/50GB (Family Discount/Monthly)
SIM_Data_Size__c: 50GB
SIM_Plan_Type__c: DataSmsVoice
SIM_Has_Family_Discount__c: true
Display_Order__c: 5
SIM Add-ons (Hidden from Catalog)
Voice Mail Option
Name: SIM Voice Mail Option
StockKeepingUnit: SIM-ADDON-VOICE-MAIL
Product2Categories1__c: SIM
Portal_Catalog__c: false
Portal_Accessible__c: true
Item_Class__c: Add-on
Billing_Cycle__c: Monthly
WH_Product_ID__c: 119
WH_Product_Name__c: SonixNet SIM Service Voice Mail Option (Monthly)
SIM_Plan_Type__c: Add-on
Display_Order__c: 1
Call Waiting Option
Name: SIM Call Waiting Option
StockKeepingUnit: SIM-ADDON-CALL-WAITING
Product2Categories1__c: SIM
Portal_Catalog__c: false
Portal_Accessible__c: true
Item_Class__c: Add-on
Billing_Cycle__c: Monthly
WH_Product_ID__c: 123
WH_Product_Name__c: SonixNet SIM Service Call Waiting Option (Monthly)
SIM_Plan_Type__c: Add-on
Display_Order__c: 2
Unlimited Calling Option (Clean naming - no V2)
Name: SIM Unlimited Calling Option
StockKeepingUnit: SIM-ADDON-UNLIMITED-CALLING
Product2Categories1__c: SIM
Portal_Catalog__c: false
Portal_Accessible__c: true
Item_Class__c: Add-on
Billing_Cycle__c: Monthly
WH_Product_ID__c: 125
WH_Product_Name__c: SonixNet SIM Service Unlimited 15 (Domestic) Free Calling Option (Monthly)
SIM_Plan_Type__c: Add-on
Display_Order__c: 3
SIM Activation Fee (Hidden from Catalog)
SIM Activation Fee
Name: SIM Activation Fee
StockKeepingUnit: SIM-ACTIVATION-FEE
Product2Categories1__c: SIM
Portal_Catalog__c: false
Portal_Accessible__c: true
Item_Class__c: Activation
Billing_Cycle__c: Onetime
WH_Product_ID__c: 99
WH_Product_Name__c: SonixNet SIM Service (Activation Fee)
Is_Default__c: true
Auto_Add__c: true
Display_Order__c: 1
VPN Products
VPN Service Plans
VPN USA-SF
Name: VPN Remote Access (USA-SF)
StockKeepingUnit: VPN-REMOTE-ACCESS-USA-SF
Product2Categories1__c: VPN
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 33
WH_Product_Name__c: SonixNet USA Remote Access VPN Service (Monthly)
VPN_Region__c: USA-SF
Display_Order__c: 1
VPN UK-London
Name: VPN Remote Access (UK-London)
StockKeepingUnit: VPN-REMOTE-ACCESS-UK-LONDON
Product2Categories1__c: VPN
Portal_Catalog__c: true
Portal_Accessible__c: true
Item_Class__c: Service
Billing_Cycle__c: Monthly
WH_Product_ID__c: 54
WH_Product_Name__c: SonixNet UK Remote Access VPN Service (Monthly)
VPN_Region__c: UK-London
Display_Order__c: 2
VPN Activation Fee (Hidden from Catalog)
VPN Activation Fee
Name: VPN Account Activation Fee
StockKeepingUnit: VPN-ACTIVATION-FEE
Product2Categories1__c: VPN
Portal_Catalog__c: false
Portal_Accessible__c: true
Item_Class__c: Activation
Billing_Cycle__c: Onetime
WH_Product_ID__c: 37
WH_Product_Name__c: SonixNet VPN Services (Account Activation Fee)
Is_Default__c: true
Auto_Add__c: true
Display_Order__c: 1
Edge Case Examples
Multiple Activation Fees
-- SIM Activation Fee (default)
Name: "SIM Activation Fee"
StockKeepingUnit: "SIM-ACTIVATION-FEE"
Item_Class__c: "Activation"
Is_Default__c: true
Auto_Add__c: true
Display_Order__c: 1
-- SIM Premium Activation (optional upgrade)
Name: "SIM Premium Activation"
StockKeepingUnit: "SIM-ACTIVATION-PREMIUM"
Item_Class__c: "Activation"
Is_Default__c: false
Auto_Add__c: false
Display_Order__c: 2
Regional Products
-- VPN Activation for USA
Name: "VPN Activation Fee (USA)"
StockKeepingUnit: "VPN-ACTIVATION-USA"
VPN_Region__c: "USA-SF"
Is_Default__c: true
-- Global VPN Activation (fallback)
Name: "VPN Activation Fee"
StockKeepingUnit: "VPN-ACTIVATION-GLOBAL"
VPN_Region__c: "Global"
Is_Default__c: false
Display_Order__c: 2
Product Dependencies
-- Hikari Denwa service requires installation
Name: "Hikari Denwa (Home Phone)"
StockKeepingUnit: "INTERNET-ADDON-HOME-PHONE"
Required_Products__c: '["INTERNET-ADDON-HIKARI-DENWA-INSTALL"]'
-- Weekend installation conflicts with weekday
Name: "Weekend Installation"
StockKeepingUnit: "INTERNET-INSTALL-WEEKEND"
Mutually_Exclusive__c: '["INTERNET-INSTALL-WEEKDAY"]'
-- Premium SIM includes voice mail
Name: "SIM Premium Plan"
StockKeepingUnit: "SIM-PREMIUM-10GB"
Dependent_Products__c: '["SIM-ADDON-VOICE-MAIL"]'
Setup Instructions
1. Create Custom Fields
First, create these custom fields on the Product2 object:
Core Fields
StockKeepingUnit(Text, 255, External ID, Unique) - Standard Salesforce fieldProduct2Categories1__c(Picklist: Internet, SIM, VPN, Other)Portal_Catalog__c(Checkbox, Default: false)Portal_Accessible__c(Checkbox, Default: true)Item_Class__c(Picklist: Service, Installation, Add-on, Activation)Billing_Cycle__c(Picklist: Monthly, Onetime)WH_Product_ID__c(Number, 18, 0)WH_Product_Name__c(Text, 255)
Edge Case Handling Fields
Is_Default__c(Checkbox, Default: false)Display_Order__c(Number, 18, 0)Auto_Add__c(Checkbox, Default: false)VPN_Region__c(Picklist: USA-SF, UK-London, Global)Internet_Region__c(Text, 255)Required_Products__c(Text, 1000)Dependent_Products__c(Text, 1000)Mutually_Exclusive__c(Text, 1000)
Internet Fields
Internet_Plan_Tier__c(Picklist: Silver, Gold, Platinum)Internet_Offering_Type__c(Picklist: Home 1G, Home 10G, Apartment 1G, Apartment 100M)Internet_Monthly_Price__c(Currency)
SIM Fields
SIM_Data_Size__c(Text, 50)SIM_Plan_Type__c(Picklist: DataOnly, DataSmsVoice, VoiceOnly, Add-on)SIM_Has_Family_Discount__c(Checkbox, Default: false)
2. Create Products
Use the product definitions above to create each Product2 record with the specified field values.
3. Create Pricebook Entries
For each product, create a PricebookEntry in the "Portal" pricebook with appropriate pricing.
4. Migration from Existing Data
Phase 1: Add New Fields (Non-Breaking)
-- Add new fields to Product2 object
ALTER TABLE Product2 ADD COLUMN Is_Default__c BOOLEAN DEFAULT false;
ALTER TABLE Product2 ADD COLUMN Display_Order__c NUMBER(18,0);
ALTER TABLE Product2 ADD COLUMN Auto_Add__c BOOLEAN DEFAULT false;
ALTER TABLE Product2 ADD COLUMN VPN_Region__c VARCHAR(255);
ALTER TABLE Product2 ADD COLUMN Required_Products__c VARCHAR(1000);
ALTER TABLE Product2 ADD COLUMN Dependent_Products__c VARCHAR(1000);
ALTER TABLE Product2 ADD COLUMN Mutually_Exclusive__c VARCHAR(1000);
Phase 2: Populate Default Values
-- Mark existing activation fees as default
UPDATE Product2
SET Is_Default__c = true, Auto_Add__c = true, Display_Order__c = 1
WHERE Item_Class__c = 'Activation'
AND StockKeepingUnit IN ('SIM-ACTIVATION-FEE', 'VPN-ACTIVATION-FEE', 'INTERNET-INSTALL-SINGLE');
-- Set VPN regions
UPDATE Product2
SET VPN_Region__c = 'Global'
WHERE Product2Categories1__c = 'VPN' AND VPN_Region__c IS NULL;
Phase 3: Add Product Relationships
-- Hikari Denwa requires installation
UPDATE Product2
SET Required_Products__c = '["INTERNET-ADDON-HIKARI-DENWA-INSTALL"]'
WHERE StockKeepingUnit = 'INTERNET-ADDON-HOME-PHONE';
-- Weekend installation conflicts
UPDATE Product2
SET Mutually_Exclusive__c = '["INTERNET-INSTALL-WEEKDAY"]'
WHERE StockKeepingUnit = 'INTERNET-INSTALL-WEEKEND';
Validation Rules
1. Default Product Validation
-- Ensure only one default per category/class combination
-- Salesforce Validation Rule
AND(
Is_Default__c = true,
ISBLANK(
VLOOKUP(
Product2Categories1__c & Item_Class__c,
$CustomObject.Product_Defaults__c.Category_Class__c,
$CustomObject.Product_Defaults__c.Default_SKU__c
)
)
)
2. JSON Field Validation
-- Validate JSON format in relationship fields
-- Apex Trigger validation
if (trigger.isInsert || trigger.isUpdate) {
for (Product2 p : trigger.new) {
if (p.Required_Products__c != null) {
try {
List<String> skus = (List<String>) JSON.deserialize(p.Required_Products__c, List<String>.class);
} catch (Exception e) {
p.addError('Required_Products__c must be valid JSON array');
}
}
}
}
Validation Checklist
After creating all products, verify:
- ✅ All SKUs use detailed format (e.g., INTERNET-SILVER-APT-1G)
- ✅ All catalog products have
Portal_Catalog__c = true - ✅ All add-ons have
Portal_Catalog__c = false, Portal_Accessible__c = true - ✅ All activation fees have
Is_Default__c = true, Auto_Add__c = true - ✅ All WHMCS Product IDs match your WHMCS setup
- ✅ All products have corresponding PricebookEntry records
- ✅ No V2 suffixes in clean product naming
- ✅ All field names use correct Salesforce conventions
Summary
Total Products to Create: 48
- Internet: 15 products (12 services + 3 installations + 3 add-ons)
- SIM: 30 products (11 main + 5 family + 3 add-ons + 1 activation)
- VPN: 3 products (2 services + 1 activation)
This setup provides a complete product catalog with proper edge case handling, validation rules, and detailed SKU naming strategy for your portal.