J2R Solutions

Training & Compliance

Setup guide

How the pieces tie together

A single training is just a record. A useful program is the relationships between records — what's required, who it applies to, what tier it rolls up to, when it expires. The dashboard is built on four custom objects, layered so each answers one question. Adding training to the org is a four-decision flow: What thing exists? → Who needs it? → What's the goal? → Did it happen?

Brand-new install? Start at the Install & setup guide first — it walks you through deploying the schema, exposing the new fields on layouts, the J2R-only contact list view, and the OAuth backend.

Don't see a field on the edit form? Salesforce deploys fields but doesn't auto-add them to page layouts. Install → step 3 lists exactly which fields each layout needs and how to drag them on.

The four objects, in order of orchestration

1 · Catalog

Training Programs

Training_Program__c

Open in SF ↗

The thing that exists. One row per course or accreditation. Vendor, Framework, Category, Cert Level, Validity Days. Decoupled from any specific person.

Examples: "ISO 27001 Awareness", "Palo Alto Networks Sales Accreditation 2025".

2 · Rule

Compliance Requirements

Compliance_Requirement__c

Open in SF ↗

The policy. Points at a Program and says who must hold it: either everyone (Applicability=All Employees) or a role match (By Role + Applicable_Roles).

Roles available: Sales, SE, Technical, DoD-Facing, Executive, Operations, HR. Multi-select on both sides.

3 · Goal

Vendor Tier Targets

Vendor_Tier_Target__c

Open in SF ↗

The vendor-side ambition. "We want to hit Gold tier with vendor X." Records the target, the portal URL for renewals, and notes. Tier attainment on the dashboard is computed against these.

Tiers: Authorized, Member, Bronze, Silver, Gold, Platinum, Premier, Diamond, Innovator, Pioneer, Advanced, Custom.

4 · Event

Trainings

Training__c

Open in SF ↗

The fact. One row per (Contact, Program, attempt). Says a person took (or was assigned) something. Required flag distinguishes mandatory vs. elective. Framework tags the audit context.

Drives every dashboard hero number — completion %, expirations, partner tier rollups.

Plus a fifth piece: Contact.Training_Role__c — a multi-select on each person (Sales, SE, Technical, DoD-Facing, Executive, Operations, HR). This is the join key for By Role applicability. A contact with no training role is in scope only for All Employees requirements.

How a number on the dashboard is computed

  1. 1

    A program is in the catalog.

    Without a Training_Program__c row, nothing else can reference it. Set Active=true to include it in dashboard rollups; old/retired programs flip to false rather than getting deleted.

  2. 2

    A requirement makes it mandatory for someone.

    Create a Compliance_Requirement__c with Program__c = your program, set Applicability__c to All Employees or By Role (with one or more Applicable_Roles__c). The dashboard's compliance hero ignores any program that has no active requirement.

  3. 3

    Contacts get scoped in.

    For By Role, a Contact with Training_Role__c matching any one of the requirement's roles is in scope. For All Employees, every active Contact is in scope. The "denominator" for compliance is the count of in-scope contacts × the number of programs they need.

  4. 4

    Trainings close the loop.

    A Training__c record (Contact + Program, status complete, within validity window) counts as compliant. Past the program's Validity_Days__c from completion, the dashboard treats it as expired and the contact slides back into "needs it." The Top Overdue and Expiring Soon lists on Home are exactly this.

  5. 5

    Vendor tiers roll up separately.

    For partner programs, tier attainment is an additional layer: Vendor_Tier_Target__c says "Gold needs N Sales accreditations + M Technical." The Partners page checks completed Trainings for that vendor's programs at the right Cert Level and shows a per-vendor met/total.

Task recipes

Add a new compliance framework (e.g. ISO 27001 next audit cycle)
  1. Catalog the courses. Create a Training_Program__c per course. Set Framework__c to a consistent string (e.g. "ISO 27001") — that string is what groups them on the dashboard. Pick a Category__c, set Validity_Days__c to how long a completion stays good (use 365 for annual cycles).
  2. Write the rule. For each program create one Compliance_Requirement__c pointing at it. Set Applicability__c: most ISO/security awareness items are All Employees; role-specific ones (e.g. CMMC for DoD-facing staff) use By Role with Applicable_Roles__c selected.
  3. Tag in-flight Trainings, optional. If you have existing Training__c rows that should count toward the new framework, set their Framework__c to match. New trainings created after this point will inherit the program's framework if you populate it.
  4. Verify. Open the dashboard Home. The compliance hero should drop (denominator just grew); affected contacts now appear in Top Overdue. That's expected — completing the new programs brings them back.
Onboard a new vendor partnership (e.g. just signed with vendor X)
  1. Make the partner an Account. The single source of truth for "is a partner" is Account.Type = 'OEM Partner'. Find or create the vendor's Account and set Type accordingly. Tick Track_Partner_Status__c if this is a partner you want on the tracked-partner health view (untracked partners are ignored by that dashboard).
  2. Add the accreditations to the catalog. Typical pattern is three Training_Program__c rows per vendor: Sales Accreditation (Cert_Level=Sales), Technical Accreditation (Cert_Level=Technical), and optionally Specialist Certification (Cert_Level=Specialist). Set Partner__c to the partner Account and Framework__c to "Partner Vendor Cert". (Vendor__c free text is legacy — only kept as a migration fallback; new records should use Partner__c.)
  3. Set the tier goal. Create a Vendor_Tier_Target__c with Partner__c = the partner Account, Target_Tier__c = your aim (e.g. Gold), Required_Revenue__c = the revenue the tier needs (optional gate), Vendor_Portal_URL__c = the partner portal. Achieved_Revenue__c fills in automatically — it mirrors the partner Account's DLRS-rolled Closed-Won revenue; don't type into it.
  4. Wire revenue attribution. Set Product2.OEM_Account__c = the partner Account on every product whose sales should count toward that partner. Closed-Won Opportunity Line Items for those products then roll up into Account.Partner_Achieved_Revenue__c automatically (DLRS + the OLI partner-stamp trigger).
  5. Decide who's required. For partner accreditations the Compliance Requirement layer is optional but recommended. Create one Compliance_Requirement__c per program with Applicability=By Role and Applicable_Roles__c = Sales (for Sales accred) or SE/Technical (for Technical accred). This is what makes them show up as "owed" on individual profiles.
  6. Assign + track. As people complete vendor training, log Training__c rows. The Partners page rolls up holders per Cert Level, computes tier attainment, and the tracked-partner health card flags this partner if its program/target/revenue is incomplete.
Assign a one-off training (short path: skip the rule layer)
  1. Make sure the program exists. If it's a known course, find the Training_Program__c. If it's brand new, create it — even one-offs benefit from being in the catalog so completions can be reused later.
  2. Skip the requirement (or don't). If only this person needs to take it, no Compliance_Requirement__c is necessary. The training will count as an elective — visible on their profile, but not pulling down compliance.
  3. Log the training. Create a Training__c with Account__c = the contact's account (often via the Contact's parent), Program__c = the program, Required__c = false (it's elective), Framework__c blank or whatever audit you want to credit.

Field cheat sheet

Object Key fields Required
Training_Program__c Name (program name), Vendor, Framework, Category, Cert_Level, Validity_Days, Active, Description Name only
Compliance_Requirement__c Program (lookup), Applicability (All Employees | By Role), Applicable_Roles (multi), Tier_Target, Required_Count, Active, Description, Guidance, Compliance_Deadline, Effective_Start_Date Program, Applicability, Required_Count
Vendor_Tier_Target__c Vendor, Target_Tier, Vendor_Portal_URL, Notes, Active, Tier_Deadline, Required_Revenue, Current_Revenue Vendor
Training__c Program, Account, Required, Framework (plus standard who/when fields) Program
Contact Training_Role (multi: Sales, SE, Technical, DoD-Facing, Executive, Operations, HR) —

Mental model

Programs exist. Requirements oblige. Roles scope. Trainings satisfy. Tier targets aspire. Deadlines pressurize. Revenue gates. Anything you see on the dashboard is one of those seven verbs in motion — if a number looks wrong, walk the chain backwards from it. Year-over-year transitions: bump Compliance_Deadline__c/Tier_Deadline__c; set Effective_Start_Date__c if old completions shouldn't carry over.

Use the Edit in Salesforce menu (top-right) to jump straight to any list view.