e-SafetyPro Multi-Company Admin
1. System Overview
This page documents the multi-company architecture for all e-SafetyPro tools
(Safety Prompter, JHA Prompter, SCI, OSHA, Inspections, Quizzes, and Analytic Surveys) and provides
a simple JSON console for managing the shared master_structure.json.
- Public users (not logged in) operate in DEMO mode.
- Logged-in users operate in REAL mode using their assigned company code.
- All tools consume the same Company β Division β Project β Task Order (TO) structure.
Public Users DEMO
β’ See only DEMO companies in dropdowns.
β’ Cannot add their own company.
β’ All submissions are stored under DEMO in dashboards.
Logged-In Users REAL
β’ See only their own company, divisions, projects, and TOs.
β’ Submissions feed REAL company dashboards.
β’ Culture surveys remain anonymous by design.
2. Data Model β Company / Division / Project / TO / Role
The shared organizational structure is:
Company β Division β Project β Task Order (TO)
- Company: top-level organization (Demo and Real).
- Division: business unit or department within a company.
- Project: specific job, contract, or program.
- Task Order (TO): optional sub-project under one project (e.g., ESP-TO-801A).
- Role: declared project role for OSHA logic (Engineer (1), CM as Agent (3), CMAR (5), etc.).
TOs inherit company and division from their parent project. Roles are independent and used primarily by OSHA & risk tools.
3. Field Requirements by Tool & User Type
3.1 Public User (Not Logged-In)
| Field | Tools (JHA, Safety Prompter, SCI, OSHA, Inspections) | Quizzes | Analytic Surveys β Culture | Analytic Surveys β Personal Hazard Exposure & Training |
|---|---|---|---|---|
| company | Required β DEMO only | Default to DEMO | Required β DEMO only | Required β DEMO only |
| division | Required β DEMO only | Default to DEMO | Required | Required |
| project | Required β DEMO only | Default to DEMO | Optional | Optional |
| role | Required | Not used | Not used | Not used |
| user_name | Optional | Optional (needed for cert) | Anonymous | Optional |
| user_email | Optional (good for contact) | Optional (needed for cert) | Anonymous | Optional (good for contact) |
| date | Required | Required | Required | Required |
3.2 Logged-In User
| Field | Tools (JHA, Safety Prompter, SCI, OSHA, Inspections) | Quizzes | Analytic Surveys β Culture | Analytic Surveys β Personal Hazard Exposure & Training |
|---|---|---|---|---|
| company | Required β REAL | Required β REAL | Required β REAL | Required β REAL |
| division | Required β REAL | Required β REAL | Required β REAL | Required β REAL |
| project | Required | Optional | Optional | Optional |
| role | Required | Not used | Not used | Not used |
| user_name | Required | Required | Anonymous (not stored) | Required |
| user_email | Required | Required | Anonymous (not stored) | Required |
| date | Required | Required | Required | Required |
4. master_structure.json β Shared Structure
All tools that use organizational context load it from a single JSON file:
master_structure.json.
- Location:
/wp-content/uploads/2025/11/master_structure.json - Contains:
companies,divisions,projects,task_orders,roles. - Used by: Safety Prompter, JHA Prompter, future Inspections, OSHA HTML/JS, analytic dashboards.
4.1 JSON Console β Download & Inspect
Important: This page cannot save files back to the server.
To update the structure, edit your JSON locally, then upload a new
master_structure.json via Media β Add New and update the link if the folder or file name changes.
5. User & Company Assignment Logic
- Create or approve a company in
master_structure.jsonwith a unique company_code. - Add divisions, projects, and task orders linked to that company_code.
- In WordPress, for each user:
- Open Users β Edit.
- Set
company_code(e.g., ESP, PWR, WTR). - Optionally set
division_code/project_codedefaults.
- Tools read these values and filter dropdowns so users only see their own company.