Skip to content

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_idx_novaw_corehcm_worker.
  • GuestTokens.person_idx_novaw_corehcm_person; .worker_idx_novaw_corehcm_worker.
  • OnboardingTask extends x_novaw_superagent_tasks — a specs-superagent dependency, outside this bootstrap's three-repo scope. specs-superagent already 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, including admin) and TaskDefinitions.owner (3 choice values, no admin) 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.