Requisitions → postings → applications with pipeline-stage lifecycle. Realizes REQ-MGMT and CANDIDATE-EXP (application flow slice). Embedded-masters candidates, optionally hcm_positions and org_units for canonical position/org context.
2. Entity summary
Name
Description
Applications
A candidate’s submission against a specific requisition. Carries pipeline stage, status (active / rejected / withdrawn / hired), source, and the full evaluation history.
Job Postings
Published, candidate-facing version of a requisition on a career site or job board. One requisition can have many postings (per board, language, or region).
Job Requisitions
Approved request to hire for a specific role. The master ATS work item, carries headcount, level, location, hiring manager, recruiter, and status (draft / open / on_hold / filled / cancelled).
Candidates
Person known to the recruiting org, with or without an active application. Carries contact details, resume, tags, GDPR consent, and source. Distinct from Employee until hired.
Job Profiles
Canonical role definition in the job catalog: title, family, level, responsibilities, required skills and competencies, pay range, FLSA classification. Distinct from positions (which are slots referencing a profile). Many positions share a single job profile.
Locations
-
Org Units
Node in the organizational hierarchy: division, business unit, department, team. Carries manager, cost center alignment, geographic scope, and parent/child relationships. HCM masters the operational hierarchy; EPM contributes the cost-center mapping (which would be Finance-mastered once a Finance/GL domain is loaded).
Positions
Approved slot in the org - a ‘chair’ with role definition, cost center, reporting line, location, and FTE allocation. Distinct from job_profiles (the catalog definition) and from employees (the person filling the slot). A position can be open, filled, or eliminated. SWP designs future positions via org_designs; HCM operationalizes them once approved.
Position Demand Forecasts
Projected need for specific roles derived from the capacity model: which positions, when, where, at what level. Feeds the requisition pipeline - approved demand becomes an authorised requisition in ATS via the headcount.approved handoff.
Predictive Models
ML / statistical model outputs deployed in PA: flight-risk scores, performance trajectory, internal-mobility likelihood. Carries the model identifier, training window, target metric, and the materialized scores per employee. Consumes employees and employment_events as features.
Project Resource Allocations
Forward-looking resource commitment plan (skill, planned utilisation %, effective period) - distinct from executed assignments.
Filled requisitions from ATS decrement open demand in SWP’s position forecasts and update plan-vs-actual fill metrics (time-to-fill, fill rate by role/geo). Lower friction than headcount.actuals_updated from HCM because the requisition→forecast mapping is more direct.
6.3 Inbound handoffs (events this scope reacts to)
target module
source domain
source module
trigger_event
payload
integration
friction
description
ATS-RECRUITMENT-PIPELINE
HCM
HCM-ORG-POSITIONS
org_unit.activated
org_units
api_call
low
-
ATS-RECRUITMENT-PIPELINE
ATS
ATS-CANDIDATE-CRM
job_application.submitted
job_applications
lifecycle_progression
low
-
ATS-RECRUITMENT-PIPELINE
HCM
HCM-ORG-POSITIONS
hcm_position.approved_for_creation
hcm_positions
event_stream
medium
Approved position flows to ATS as the basis for a requisition. Approval state must be in sync to avoid requisitions opened against unapproved positions.
ATS-RECRUITMENT-PIPELINE
HCM
HCM-ORG-POSITIONS
job_profile.published
job_profiles
event_stream
low
Canonical job profile feeds ATS posting templates and screening criteria.
ATS-RECRUITMENT-PIPELINE
HCM
HCM-ORG-POSITIONS
hcm_position.opened
hcm_positions
api_call
medium
-
ATS-RECRUITMENT-PIPELINE
HCM
HCM-ORG-POSITIONS
hcm_position.filled
hcm_positions
api_call
medium
-
ATS-RECRUITMENT-PIPELINE
HCM
HCM-ORG-POSITIONS
hcm_position.frozen
hcm_positions
api_call
high
-
ATS-RECRUITMENT-PIPELINE
HCM
HCM-ORG-POSITIONS
hcm_position.eliminated
hcm_positions
api_call
high
-
ATS-RECRUITMENT-PIPELINE
HCM
HCM-ORG-POSITIONS
job_profile.approved
job_profiles
api_call
low
-
ATS-RECRUITMENT-PIPELINE
HCM
HCM-ORG-POSITIONS
job_profile.activated
job_profiles
api_call
low
-
ATS-RECRUITMENT-PIPELINE
HCM
HCM-ORG-POSITIONS
job_profile.retired
job_profiles
api_call
high
-
ATS-RECRUITMENT-PIPELINE
HCM
HCM-CORE-WORKER
employee.terminated
job_requisitions
api_call
low
Employee termination in HCM optionally triggers backfill requisition consideration in ATS. Low friction when SWP-driven; some orgs auto-open a backfill req on regrettable losses, others route through SWP for approval first.
ATS-RECRUITMENT-PIPELINE
HCM
HCM-ORG-POSITIONS
org_unit.reorganized
org_units
api_call
high
-
ATS-RECRUITMENT-PIPELINE
HCM
HCM-ORG-POSITIONS
org_unit.closed
org_units
api_call
high
-
ATS-RECRUITMENT-PIPELINE
ATS
ATS-TALENT-POOLS
talent_pool.candidate_activated
job_applications
lifecycle_progression
low
-
ATS-RECRUITMENT-PIPELINE
ATS
ATS-INTERVIEWS
interview.completed
job_applications
lifecycle_progression
low
-
ATS-RECRUITMENT-PIPELINE
ATS
ATS-INTERVIEWS
candidate_assessment.passed
job_applications
lifecycle_progression
low
-
ATS-RECRUITMENT-PIPELINE
ATS
ATS-INTERVIEWS
candidate_assessment.failed
job_applications
lifecycle_progression
low
-
ATS-RECRUITMENT-PIPELINE
PA
PA-PREDICTIVE-MODELS
predictive_model.scored
predictive_models
api_call
medium
Hire-success and quality-of-hire scores inform ATS sourcing prioritization.
ATS-RECRUITMENT-PIPELINE
SWP
SWP-DEMAND-FORECAST
position_demand_forecast.updated
position_demand_forecasts
event_stream
high
Hiring demand sets ATS requisition-creation expectations. Plan-to-execute gap is a frequent friction source.
ATS-RECRUITMENT-PIPELINE
SWP
SWP-DEMAND-FORECAST
headcount.approved
job_requisitions
api_call
high
Approved headcount in SWP authorises requisition creation in ATS. THIS IS THE CO-MASTER BRIDGE: SWP masters the intent slice (approved position, budget, time window) and ATS masters the execution slice (pipeline, candidates, interviews, offer). High friction because SWP’s plan structure (org × geo × level × time) rarely matches ATS’s requisition template structure (job code × location × hiring manager × pay range), requiring mapping rules that drift as either side evolves.
ATS-RECRUITMENT-PIPELINE
PSA
PSA-RESOURCE-MGMT
project_resource_allocation.demand_unmet
project_resource_allocations
manual_handoff
high
Unmet allocation demand is the seed for a hiring requisition; the manual handoff between resource manager and recruiter is the dominant pattern.
ATS-RECRUITMENT-PIPELINE
HCM
HCM-ORG-POSITIONS
job_profile.updated
job_profiles
api_call
medium
-
ATS-RECRUITMENT-PIPELINE
HCM
HCM-ORG-POSITIONS
org_unit.created
org_units
api_call
medium
-
ATS-RECRUITMENT-PIPELINE
HCM
HCM-ORG-POSITIONS
org_unit.merged
org_units
api_call
high
-
ATS-RECRUITMENT-PIPELINE
HCM
HCM-ORG-POSITIONS
org_unit.disbanded
org_units
api_call
high
-
ATS-RECRUITMENT-PIPELINE
HCM
HCM-ORG-POSITIONS
hcm_position.approved
hcm_positions
api_call
medium
-
6.4 Master providers (modules / domains that own masters this scope embeds)
data_object
role here
necessity
canonical owner(s)
slice notes
candidates
embedded_master
required
ATS-CANDIDATE-CRM (ATS)
-
hcm_positions
embedded_master
optional
HCM-ORG-POSITIONS (HCM)
-
job_profiles
embedded_master
required
HCM-ORG-POSITIONS (HCM)
-
locations
embedded_master
optional
IWMS-LOCATION-MASTER (IWMS)
-
org_units
embedded_master
optional
HCM-ORG-POSITIONS (HCM)
-
position_demand_forecasts
consumer
required
SWP-DEMAND-FORECAST (SWP)
-
predictive_models
consumer
optional
PA-PREDICTIVE-MODELS (PA)
-
project_resource_allocations
consumer
optional
PSA-RESOURCE-MGMT (PSA)
-
7. Lifecycle states (per touched entity)
candidates (Candidate)
This scope holds candidates as embedded_master; the canonical state machine is owned by ATS-CANDIDATE-CRM.
order
state_name
initial?
terminal?
requires_permission?
derived gate
description
1
prospect
✓
-
-
-
Person known to the recruiting org with no active application.
2
active
-
-
-
-
Candidate has at least one open application or is actively engaged.
3
hired
-
✓
✓
ats-candidate-crm:hire_candidate
Candidate accepted an offer and converted to employee.
4
do_not_hire
-
✓
✓
ats-candidate-crm:flag_do_not_hire
Candidate flagged as ineligible for future consideration; gated decision.
5
archived
-
✓
-
-
Candidate kept in the database but not active in any pipeline.
hcm_positions (Position)
This scope holds hcm_positions as embedded_master; the canonical state machine is owned by HCM-ORG-POSITIONS.
order
state_name
initial?
terminal?
requires_permission?
derived gate
description
1
proposed
✓
-
-
-
Position has been designed but not yet approved against the headcount plan.
2
approved
-
-
✓
hcm-org-positions:approved_position
Cleared by headcount/finance owner; eligible to spawn a requisition.
3
open
-
-
✓
hcm-org-positions:open_position
Approved and actively being recruited against; not yet filled.
4
filled
-
-
✓
hcm-org-positions:filled_position
An employee occupies the position.
5
frozen
-
-
✓
hcm-org-positions:frozen_position
Temporarily not fillable (hiring freeze, budget hold); retains the slot.
6
eliminated
-
✓
✓
hcm-org-positions:eliminated_position
Removed from the org structure permanently.
job_applications (Application)
order
state_name
initial?
terminal?
requires_permission?
derived gate
description
1
applied
✓
-
-
-
Candidate submitted an application against the requisition.
2
screening
-
-
-
-
Recruiter is reviewing resume and qualifications.
3
interviewing
-
-
-
-
Candidate is progressing through interview loops.
4
offer_extended
-
-
-
-
An offer has been generated and is in flight for this application.
5
hired
-
✓
✓
ats-pre-employee-record:hire_candidate
Candidate accepted the offer and was hired; gated transition.
6
rejected
-
✓
-
-
Application closed without progression by recruiter or hiring manager.
7
withdrawn
-
✓
-
-
Candidate withdrew their application.
job_postings (Job Posting)
order
state_name
initial?
terminal?
requires_permission?
derived gate
description
1
draft
✓
-
-
-
Posting being composed against a requisition for a specific board or region.
2
published
-
-
✓
ats-recruitment-pipeline:publish_posting
Posting is live on the target channel; gated publish step.
3
paused
-
-
-
-
Posting temporarily hidden from the channel.
4
expired
-
✓
-
-
Posting reached its scheduled end date.
5
closed
-
✓
-
-
Posting taken down because the requisition is filled or cancelled.
job_profiles (Job Profile)
This scope holds job_profiles as embedded_master; the canonical state machine is owned by HCM-ORG-POSITIONS.
order
state_name
initial?
terminal?
requires_permission?
derived gate
description
1
draft
✓
-
-
-
Profile is being authored or revised; not yet available for position assignment.
2
approved
-
-
✓
hcm-org-positions:approved_job_profile
Cleared by the catalog owner; ready to be referenced by positions and postings.
3
active
-
-
✓
hcm-org-positions:active_job_profile
In production use; positions and postings can reference it.
4
retired
-
✓
✓
hcm-org-positions:retired_job_profile
No longer assignable to new positions; historical references preserved.
job_requisitions (Job Requisition)
order
state_name
initial?
terminal?
requires_permission?
derived gate
description
1
draft
✓
-
-
-
Hiring manager is drafting the requisition.
2
pending_approval
-
-
-
-
Requisition routed for headcount and budget approval.
Allocation withdrawn before commitment (forecast change, project delayed or descoped).
8. Permissions and business rules (derived)
8.1 Permissions
permission
tier
description
included in :admin?
ats-recruitment-pipeline:read
baseline-read
Read access to every entity in the module
✓
ats-recruitment-pipeline:manage
baseline-manage
Edit operational records
✓
ats-recruitment-pipeline:admin
baseline-admin
Edit reference data and inherit every workflow gate below
-
ats-recruitment-pipeline:approve_requisition
workflow-gate (lifecycle)
Transition job_requisitions into state open
✓
ats-recruitment-pipeline:close_requisition
workflow-gate (lifecycle)
Transition job_requisitions into state filled
✓
ats-recruitment-pipeline:publish_posting
workflow-gate (lifecycle)
Transition job_postings into state published
✓
ats-recruitment-pipeline:view_all_applications
override (personal_content)
View all job_applications rows beyond row-scope
✓
ats-recruitment-pipeline:manage_all_applications
override (personal_content)
Manage all job_applications rows beyond row-scope
✓
8.2 Business rules
rule_name
data_object
source flag
intent
approve_job_requisition_requires_approver
job_requisitions
has_single_approver
Exactly one explicit approver required; uses the module’s approval gate (ats-recruitment-pipeline:approve_job_requisition if surfaced as a lifecycle workflow gate).
application_edit_scope
job_applications
has_personal_content
Row-scope by default; override via ats-recruitment-pipeline:view_all_applications / ats-recruitment-pipeline:manage_all_applications
We use cookies
We use cookies to enhance your browsing experience and analyze our traffic. By clicking "Accept", you consent to our use of cookies.