Onboarding schema¶
Current data contract for Onboarding's ServiceNow-side tables, read directly
from nova-onboarding-sn-app's live dictionary XML on main. Note the
actual table prefix is x_novaw_onb_*, not x_novaw_onboarding_* —
worth knowing before writing a Feature's spec.md for this domain.
Reverse-engineered per the 2026-08-07 decision retiring schema/pending/ —
goes directly here with status: applied, since this reflects real,
committed, shipped code, not a proposal.
Every table carries sys_domain (ServiceNow Domain Separation) — omitted
from the entity blocks below for readability; assume present unless shown
otherwise.
Diagram¶
erDiagram
OnboardingPlan }o--|| CorehrWorker : "manager_id / worker_id / hr_id (cross-repo)"
OnboardingTask }o--|| OnboardingPlan : "plan_id"
OnboardingTask }o--|| TaskGroup : "task_group"
OnboardingTask }o--|| TaskDefinitions : "task_definition"
OnboardingTask ||--|| SuperagentTasks : "extends (cross-repo)"
TaskDefinitions }o--|| TaskGroup : "task_group"
TaskApplicability }o--|| TaskDefinitions : "task_def"
GuestTokens }o--|| OnboardingPlan : "plan_id"
GuestTokens }o--|| CorehrPerson : "person_id (cross-repo)"
GuestTokens }o--|| CorehrWorker : "worker_id (cross-repo)"
GuestTokenAudit }o--|| GuestTokens : "token"
OnboardingPlan {
ref manager_id
ref worker_id
ref hr_id
string status
string hr_approval
string manager_approval
string thread_id
date joining_date
}
OnboardingTask {
string task_type
string owner
string phase
ref task_group
ref plan_id
string source
boolean skipped
ref task_definition
}
TaskDefinitions {
string description
string task_type
boolean active
string name
string phase
string owner
ref task_group
int days_after_joining
}
TaskGroup {
string name
list depends_on
int order
}
TaskApplicability {
boolean active
string conditions
ref task_def
}
GuestTokens {
ref plan_id
ref person_id
string email
date expiry_date
string scope
boolean revoked
ref worker_id
string trigger
string token
}
GuestTokenAudit {
string details
string performed_by
ref token
string action
}
Cross-repo dependencies¶
OnboardingPlan.manager_id/worker_id/hr_id→x_novaw_corehcm_worker.GuestTokens.person_id→x_novaw_corehcm_person;.worker_id→x_novaw_corehcm_worker.OnboardingTaskextendsx_novaw_superagent_tasks— aspecs-superagentdependency, outside this bootstrap's three-repo scope.specs-superagentalready exists; this is a real coupling worth knowing about, not something to resolve here.
All Core HR references are on tables already covered by core-hr-schema.md
in this same repo.
Discrepancies vs. github-private's component KB¶
github-private/docs/profile/repos/nova-onboarding-sn-app/tables.md names
fields that don't match the live dictionary: it uses plan_sys_id/worker_sys_id
on GuestTokens where the live fields are plan_id/worker_id, and
describes a plan_approved field on OnboardingPlan that isn't present in
the live dictionary. It also lists an assigned_to/due_date/state/
task_meta_data field set on OnboardingTask not present in this table's
own dictionary export — likely inherited from x_novaw_superagent_tasks
rather than defined here, but not confirmed from this pass.
Open items¶
OnboardingTask.owner(4 choice values, includingadmin) andTaskDefinitions.owner(3 choice values, noadmin) diverge on the same conceptual field — confirm whether that's intentional (a task instance can be admin-owned but a task definition template can't) or drift.