J2R Solutions

Training & Compliance

Data Model

Partner Tracking — Data Model Guide

How the Salesforce objects connect, and three worked examples. Everything hangs off the partner Account — or, for plain compliance, off a Compliance Requirement with no tier.

Account (Partner) Vendor Tier Target (the pursuit) Compliance Requirement (the gate) Catalog Completion Revenue Universal compliance

How the objects link

Account  (Type = OEM Partner)
The partner — single source of truth. Partner_Achieved_Revenue__c is rolled up by Apex.
↓ Vendor_Tier_Target.Partner__c
Vendor Tier Target
"We are pursuing THIS vendor tier." Holds Target_Tier__c, Required_Revenue__c, Tier_Deadline__c, Committed__c. Achieved_Revenue__c mirrors the Account's rolled-up revenue.
↓ Compliance_Requirement.Tier_Target__c
Compliance Requirement
"For this tier, you need N of X." Required_Count__c = N. Requirement_Type__c picks the branch below.
↓ Type = Training · Program__c
Training Program
Catalog of certs/courses. Cert_Level__c (Sales/Technical/…), Partner__c.
↑ counts of · Training.Program__c
Training
A person holds the cert. Contact__c, Credential_Issued__c, Expiry_Date__c.
↓ Type = Activity · Activity_Type__c
Activity Type
Catalog of activities (Tech Talk, Lab, Deal Reg, Agreement…).
↑ counts of · Partner_Activity.Activity_Type__c
Partner Activity
An activity was completed. Completed__c, Contact__c, Completed_Date__c.
Revenue lane (separate from requirements): Closed Won Opportunity → Opportunity Product (line) → its Product carries OEM_Account__c = the partner. The PartnerRevenueRollup Apex batch sums those lines into Account.Partner_Achieved_Revenue__c, which the tier target mirrors as Achieved_Revenue__c and compares to Required_Revenue__c.
A tier is GREEN when every requirement's completions ≥ its Required_Count__c, revenue (if gated) is met, and the deadline hasn't passed.

Example 1 — Gold: 2 trainings + revenue

Two people must hold a cert, and the partner must hit a revenue number.

AccountAcme Corp · Type = OEM Partner
↓ Partner__c
Vendor Tier TargetAcme — Gold · Required_Revenue = $250,000 · Committed
↓ Tier_Target__c
Compliance RequirementTraining: Acme Sales Cert · Required_Count = 2
Training Jane D. — Acme Sales Cert (issued)
Training Raj P. — Acme Sales Cert (issued)
Revenue Won opps with Acme products → Partner_Achieved_Revenue__c ≥ $250k
GREEN when: 2 Sales Cert holders and achieved revenue ≥ $250,000.

Example 2 — Platinum: 6 certs (3 technical + 3 sales) + 2 tech talks + revenue

One pursuit, FOUR requirement rows (each its own gate) plus the revenue gate.

AccountGlobex · Type = OEM Partner
↓ Partner__c
Vendor Tier TargetGlobex — Platinum · Required_Revenue = $1,000,000 · Committed
↓ Tier_Target__c · four requirement rows
RequirementTraining: Technical Cert · Cert_Level Technical · Required_Count = 3
RequirementTraining: Sales Cert · Cert_Level Sales · Required_Count = 3
RequirementActivity: Tech Talk · Activity_Type = Tech Talk · Required_Count = 2
3× Training Technical Cert holders
3× Training Sales Cert holders
2× Partner Activity Tech Talks (Completed)
Revenue Won opps with Globex products → Partner_Achieved_Revenue__c ≥ $1,000,000
GREEN when: 3 Technical + 3 Sales cert holders and 2 completed Tech Talks and revenue ≥ $1,000,000.

Example 3 — Plain compliance (no partner, no tier)

No Account and no Vendor Tier Target. The requirement stands alone and applies to people by role — the "compliance" use of the same Compliance Requirement object.

Compliance RequirementTraining: ISO 27001 Awareness · Tier_Target__c = (blank) · Applicability = All Employees · Required_Count = 1
↓ Program__c
Training Program ISO 27001 Awareness (no Partner)
↓ applies to · Contact.Training_Role__c
Contact Every active employee
Training Jane D. — ISO 27001 (issued)
Training Raj P. — ISO 27001 (issued)
Compliant when: each in-scope person has 1 valid (issued, unexpired) ISO 27001 training. No revenue, no tier, no Account involved.
Set Tier_Target__c → a partner pursuit (Examples 1 & 2), or leave it blank → org/role compliance (Example 3). That single lookup is what makes a requirement partner-related or not.