# Cross-Reference Appendix Quick-reference tables mapping Customer Portal features to their corresponding records in WHMCS and Salesforce. Use this when you need to quickly look up where to verify something. ## How the Systems Link Together Understanding how WHMCS and Salesforce are connected is essential for UAT. Here is the linking chain: ### Customer Linking (established during signup) ``` Portal User ID ←→ WHMCS Client ID ←→ Salesforce Account ID (portal database stores this three-way mapping) ``` | System | Field | What It Stores | | ------------------ | ------------------------------------- | ----------------------------------------------------- | | WHMCS Client | Custom Field #198 ("Customer Number") | The Salesforce Account Number (`SF_Account_No__c`) | | Salesforce Account | `WH_Account__c` | The WHMCS Client ID in format "#1234 - Customer Name" | | Salesforce Account | `SF_Account_No__c` | The Customer Number (same value as WHMCS field #198) | **To verify the link:** Open the WHMCS Client's custom fields and find the Customer Number. Then search Salesforce for an Account with that same `SF_Account_No__c`. The Account's `WH_Account__c` field should contain the WHMCS Client ID. ### Subscription / Opportunity Linking (established during provisioning) ``` WHMCS Service ←→ Salesforce Opportunity ``` | System | Field | What It Stores | | ---------------------- | ---------------------------- | ----------------------------- | | WHMCS Service | Custom Field "OpportunityId" | The Salesforce Opportunity ID | | Salesforce Opportunity | `WHMCS_Service_ID__c` | The WHMCS Service/Product ID | **To verify the link:** Open a WHMCS Service's custom fields and find the OpportunityId. Then open that Opportunity in Salesforce and check `WHMCS_Service_ID__c` matches the WHMCS Service ID. This bidirectional link is what makes cancellation work -- the portal uses it to find the right Opportunity to update. ### Order Linking (established during provisioning) ``` Salesforce Order → WHMCS Order Salesforce OrderItem → WHMCS Service ``` | System | Field | What It Stores | | -------------------- | --------------------- | --------------------------------------- | | Salesforce Order | `WHMCS_Order_ID__c` | The WHMCS Order ID | | Salesforce OrderItem | `WHMCS_Service_ID__c` | The WHMCS Service ID for each line item | --- ## Salesforce Account Fields Reference These are the key fields on the Salesforce Account record that the portal reads and writes: ### Portal-Specific Fields | Field Label | API Name | Set By | When | Values | | -------------------------- | ------------------------------- | ---------- | ---------------- | -------------------------------------------- | | Customer Number | `SF_Account_No__c` | Salesforce | Account creation | Unique identifier (matches WHMCS field #198) | | Portal Status | `Portal_Status__c` | Portal | Signup | "Active" | | Portal Registration Source | `Portal_Registration_Source__c` | Portal | Signup | "New Signup" or "Migrated" | | Portal Last Sign-In | `Portal_Last_SignIn__c` | Portal | Each login | Timestamp | | WHMCS Account | `WH_Account__c` | Portal | Signup | "#1234 - Customer Name" format | ### Internet Eligibility Fields | Field Label | API Name | Set By | When | Values | | -------------------- | ------------------------------------------- | -------- | ---------------------------- | ----------------------------------------------------- | | Internet Eligibility | `Internet_Eligibility__c` | SF Agent | After manual NTT check | Speed value (e.g., "Cross 10G", "Hikari 1G") or empty | | Eligibility Status | `Internet_Eligibility_Status__c` | SF Agent | After review | Status of the check | | Request Date | `Internet_Eligibility_Request_Date_Time__c` | Portal | When customer requests check | Timestamp | | Checked Date | `Internet_Eligibility_Checked_Date_Time__c` | SF Agent | When agent completes review | Timestamp | ### ID Verification Fields | Field Label | API Name | Set By | When | Values | | ------------------- | ---------------------------------------- | ----------------- | ------------------ | ---------------------------------------------------- | | Verification Status | `Id_Verification_Status__c` | Portal / SF Agent | Upload / Review | "Not Submitted", "Submitted", "Verified", "Rejected" | | Submitted Date | `Id_Verification_Submitted_Date_Time__c` | Portal | On document upload | Timestamp | | Verified Date | `Id_Verification_Verified_Date_Time__c` | SF Agent | After approval | Timestamp | | Note | `Id_Verification_Note__c` | SF Agent | After review | Internal notes | | Rejection Message | `Id_Verification_Rejection_Message__c` | SF Agent | If rejected | Reason shown to customer | ### Standard Fields | Field Label | API Name | Description | | --------------- | ------------------------------------------------------------------------------------- | ----------------------------------------- | | Email | `PersonEmail` | Customer email address | | Phone | `Phone` | Customer phone number | | Billing Address | `BillingStreet`, `BillingCity`, `BillingState`, `BillingPostalCode`, `BillingCountry` | Customer address (snapshot at order time) | --- ## WHMCS Client Custom Fields Reference | Field ID | Field Name | What It Stores | Where to Find It | | -------- | --------------- | -------------------------------------------------------------------------------- | -------------------------------- | | **198** | Customer Number | Salesforce Account Number (`SF_Account_No__c`) -- the critical cross-system link | Client > Profile > Custom Fields | | **200** | Gender | Customer gender (Male, Female, Other) | Client > Profile > Custom Fields | | **201** | Date of Birth | Customer DOB | Client > Profile > Custom Fields | --- ## Salesforce Opportunity Stage Reference | Stage | Display | Meaning | | --------------- | --------------- | ------------------------------------------------------------------------ | | Introduction | Introduction | Initial interest (e.g., eligibility check requested) | | WIKI | WIKI | Low-priority lead | | Ready | Ready | Customer is eligible and ready to order | | Post Processing | Post Processing | Order has been placed, being reviewed | | Active | Active | Service is live | | △Cancelling | Cancelling | Cancellation requested, service still running until end of billing cycle | | 〇Cancelled | Cancelled | Service has been cancelled | | Completed | Completed | Service lifecycle complete | | Void | Void | Lost or not eligible | | Pending | Pending | On hold | --- ## Salesforce Case Origin Reference | Origin Value | Created By | Visible to Customer? | When Created | | ------------------- | --------------------------- | --------------------------------------- | ------------------------------------------------------------------------------------- | | Portal Support | Customer (via support page) | Yes -- appears in customer's cases list | Customer creates a support ticket | | Portal Notification | Portal (automatic) | No -- internal only | Order placed, eligibility requested, cancellation requested, ID verification uploaded | | Web | Public contact form | No -- unlinked to account | Guest submits contact form | --- ## Portal Action → WHMCS Records | Portal Action | WHMCS Object | Where to Find It | Key Fields to Check | | ----------------------------------- | --------------------- | --------------------------------------- | --------------------------------------------------------------------------------------------------------- | | **Sign up (new customer)** | Client | Clients > Client List > search by email | First Name, Last Name, Email, Phone, Address, Custom Fields (#198 Customer Number, #200 Gender, #201 DOB) | | **Sign up (migrate WHMCS account)** | Client (existing) | Clients > Client List > search by email | Confirm no duplicate created; Custom Field #198 now has Salesforce Account Number | | **Edit profile (email/phone)** | Client | Clients > Client List > open client | Email Address, Phone Number updated | | **Edit address** | Client | Clients > Client List > open client | Address 1, Address 2, City, State, Postcode, Country | | **Order provisioned** | Product/Service | Client > Products/Services tab | Product name, Status (Active), Billing Cycle, Amount, Custom Field "OpportunityId" = SF Opportunity ID | | **Order provisioned** | Order | Client > Orders tab | WHMCS Order created with line items | | **SIM plan change** | Product/Service | Client > Products/Services tab | Product name updated to new plan, Amount updated (takes effect 1st of next month) | | **SIM data top-up** | Invoice | Billing > Invoices > search by client | New invoice for top-up amount (500 JPY per GB), Status Paid | | **SIM reissue** | Product/Service | Client > Products/Services tab | Same WHMCS service ID -- no new service created | | **Voice feature toggle** | Add-on Services | Client > Products/Services tab | Voice Mail (pid 119), Call Waiting (pid 123) updated | | **View invoices** | Invoices | Billing > Invoices > search by client | Invoice Number, Status, Amount, Due Date match portal | | **Pay invoice** | Invoice + Transaction | Billing > Invoices > open invoice | Status changes to Paid; Transaction record created | | **Cancel subscription** | Product/Service | Client > Products/Services tab | Status changes to Cancelled at end of billing cycle | ## Portal Action → Salesforce Records | Portal Action | Salesforce Object | Where to Find It | Key Fields to Check | | -------------------------------- | ----------------- | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | | **Sign up** | Account | Search by email or `SF_Account_No__c` | `Portal_Status__c` = Active, `Portal_Registration_Source__c`, `WH_Account__c` contains WHMCS Client ID | | **Sign up** | Contact | Under the Account record | Email, First Name, Last Name | | **Place an order** | Order | Account > Related > Orders | `Status`, `Type`, `OpportunityId`, service-specific fields (see doc 05 for full field list) | | **Place an order** | Opportunity | Account > Related > Opportunities | `StageName` = "Post Processing", `CommodityType__c`, `Opportunity_Source__c` contains "Portal" | | **Place an order** | OrderItem | Under the Order | `Product2Id`, `UnitPrice`, `Quantity`, `Billing_Cycle__c` | | **Place an order** | Case | Cases tab (not visible to customer) | Origin = "Portal Notification", Subject contains order info | | **Order provisioned** | Order | Same Order | `WHMCS_Order_ID__c` populated, `Activation_Status__c` = "Activated" | | **Order provisioned** | OrderItem | Under the Order | `WHMCS_Service_ID__c` populated for each item | | **Order provisioned** | Opportunity | Same Opportunity | `WHMCS_Service_ID__c` populated, `StageName` = "Active" | | **Create support case** | Case | Cases tab > search by Account | Origin = "Portal Support", `Subject`, `Priority`, `Status` | | **Reply to support case** | CaseComment | Under the Case | Comment body, Created Date | | **Upload residence card** | Account | Search by `SF_Account_No__c` | `Id_Verification_Status__c` = "Submitted" | | **Upload residence card** | ContentVersion | Account > Related > Files | Uploaded document file | | **ID approved by agent** | Account | Same Account | `Id_Verification_Status__c` = "Verified", `Id_Verification_Verified_Date_Time__c` set | | **ID rejected by agent** | Account | Same Account | `Id_Verification_Status__c` = "Rejected", `Id_Verification_Rejection_Message__c` has reason | | **Internet eligibility request** | Account | Search by `SF_Account_No__c` | `Internet_Eligibility_Request_Date_Time__c` set | | **Internet eligibility request** | Case | Cases tab | Origin = "Portal Notification", new Case created each time | | **Eligibility checked by agent** | Account | Same Account | `Internet_Eligibility__c` populated with speed value, `Internet_Eligibility_Checked_Date_Time__c` set | | **Cancel SIM** | Opportunity | Account > Opportunities | `StageName` = "△Cancelling", `SIMScheduledCancellationDateAndTime__c` set, `WHMCS_Service_ID__c` matches WHMCS service | | **Cancel SIM** | Case | Cases tab (not visible to customer) | Origin = "Portal Notification" | | **Cancel Internet** | Opportunity | Account > Opportunities | `StageName` = "△Cancelling", `ScheduledCancellationDateAndTime__c` set, `CancellationNotice__c`, `LineReturn__c` for equipment | | **Cancel Internet** | Case | Cases tab (not visible to customer) | Origin = "Portal Notification" | ## Portal Feature → Data Source This table shows where each portal feature gets its data from. Useful for understanding which system to check when something looks wrong. | Portal Feature | Primary Data Source | Secondary Source | | --------------------------------- | --------------------------------------- | --------------------------------------- | | Dashboard - Active Services count | WHMCS (subscriptions) | -- | | Dashboard - Open Cases count | Salesforce (cases) | -- | | Dashboard - Recent Orders | Salesforce (orders) | -- | | Dashboard - Recent Activity | Portal database (aggregated) | WHMCS + Salesforce | | Dashboard - Task Cards | Portal (computed from multiple sources) | WHMCS + Salesforce | | Service Catalog / Plans | Salesforce (Product2, PricebookEntry) | -- | | Eligibility Status | Salesforce (Account fields) | -- | | Checkout / Order Submission | Salesforce (Order, Opportunity) | -- | | Order Real-time Tracking | Salesforce Platform Events → Portal SSE | -- | | Subscription List | WHMCS (Products/Services) | -- | | SIM Management (usage, voice) | Freebit (via portal backend) | WHMCS for billing | | SIM Plan Change | Freebit (execution) | WHMCS (billing update) | | SIM Data Top-up | Freebit (execution) | WHMCS (invoice creation) | | Invoices | WHMCS (Invoices) | -- | | Payments | WHMCS (Transactions) | -- | | Support Cases | Salesforce (Cases) | -- | | Identity Verification | Salesforce (Account + ContentVersion) | -- | | Notifications | Portal database | Triggered by Salesforce Platform Events | | Address | WHMCS (Client record) | Japan Post API (for lookup) | | Profile (name, DOB, gender) | WHMCS (Client record) | -- | | Profile (Customer Number) | Salesforce (Account `SF_Account_No__c`) | -- | ## WHMCS Navigation Quick Reference | What You're Looking For | Where to Go in WHMCS | | --------------------------------------- | --------------------------------------------------------------- | | A customer's record | Clients > Client List > search by name or email | | A customer's services | Open Client > Products/Services tab | | Service custom fields (OpportunityId) | Open Client > Products/Services > click service > Custom Fields | | A customer's invoices | Open Client > Invoices tab, or Billing > Invoices | | A specific invoice | Billing > Invoices > search by invoice number | | Payment transactions | Open an Invoice > Transactions section | | Client custom fields (#198, #200, #201) | Open Client > Profile > Custom Fields section | | Payment methods | Open Client > Pay Methods tab | ## Salesforce Navigation Quick Reference | What You're Looking For | Where to Go in Salesforce | | -------------------------------- | ----------------------------------------------------------------------------------------- | | A customer's account | Search globally by email or Customer Number (`SF_Account_No__c`), or Accounts tab | | Portal status fields | Open Account > check `Portal_Status__c`, `Portal_Registration_Source__c`, `WH_Account__c` | | WHMCS link verification | Open Account > check `WH_Account__c` contains WHMCS Client ID | | Internet eligibility | Open Account > check `Internet_Eligibility__c` and related date fields | | ID verification status | Open Account > check `Id_Verification_Status__c` and related fields | | Orders for a customer | Open Account > Related > Orders | | Opportunities for a customer | Open Account > Related > Opportunities | | Opportunity → WHMCS link | Open Opportunity > check `WHMCS_Service_ID__c` | | Cancellation status | Open Opportunity > check `StageName` for "△Cancelling" or "〇Cancelled" | | Support cases (customer-visible) | Cases tab > filter Origin = "Portal Support" | | Internal notification cases | Cases tab > filter Origin = "Portal Notification" | | Case comments/replies | Open a Case > Related > Case Comments or Email Messages | | Uploaded documents | Open Account > Related > Files (ContentVersion) | | Product catalog | Products tab (Product2 records) > check `Portal_Accessible__c` = true |