Skip to content

Automation  ·  People operations

How to build employee onboarding provisioning

Somebody starts on Monday and spends Tuesday asking for access to things nobody thought to grant. This is the design behind provisioning that does not do that, the prompts that build it, and what production adds.

Built with Tray Headless

  1. System Workday
  2. Step Role profile
  3. Step Sequence to start date
  4. System Okta
  5. System Google Workspace
Also Jamf Evidence per grant

Access comes from a role profile instead of a copied colleague, and grants are timed against day one.

The short answer

What is onboarding provisioning?

Onboarding provisioning breaks into four parts: the HRIS as the trigger instead of a form somebody remembers to fill in, access derived from the role rather than copied from a colleague, a sequence tied to the start date rather than fired all at once, and evidence that each grant happened. Most of these come apart on copying a colleague. Cloning access from whoever sits nearby propagates every over-permission in the company, quietly, forever.

What matters here

  • Never clone access from an existing employee. It propagates every over-permission that person accumulated, and nobody ever audits the copy.
  • Derive access from a role profile held as data. When the role changes, the profile changes, not a script.
  • Sequence around the start date. An account created three weeks early is an unused credential sitting in the open.
  • Record evidence per grant, not per person. Audit asks which system, when, and on whose authority.
  • Handle the amendments, because start dates move. A plan that cannot absorb a date change becomes a manual process again.

Who this is for

You run IT operations or people operations. Onboarding runs on a checklist somebody maintains, provisioning happens the morning somebody starts, and access requests trickle in for a fortnight afterwards.

How it works in practice

The sequence, from a signed contract to a productive first day.

  1. 1

    The HRIS is the trigger, not a form

    A new hire record with a start date begins the process. Nothing depends on somebody remembering to raise a ticket.

  2. 2

    A role profile resolves what access is needed

    Department, level and location map to a set of systems and entitlements, held as data rather than in code.

  3. 3

    Grants are sequenced against the start date

    Identity and email a few days ahead, everything else on day one, elevated access only after the training it depends on.

  4. 4

    Hardware and licences are reserved, not just requested

    A laptop ordered on day one arrives in week three, so it is ordered when the contract is signed.

  5. 5

    Each grant records evidence

    System, entitlement, timestamp and the role profile that authorised it, ready for the access review that will ask.

  6. 6

    Date changes replan instead of break

    A start date moving by a week moves the whole sequence, and nothing has to be undone by hand.

What provisioning is made of

Provisioning is not a checklist. It is four parts, and the second one is the security decision.

An HRIS trigger

The new hire record with its start date. Anything that starts with a person remembering will eventually be forgotten.

Role-derived access

A profile per role, held as data. Never a copy of a colleague, because a copy inherits every exception that colleague accumulated.

Start-date sequencing

Grants timed relative to day one, not all fired at contract signature. An early account is an unmonitored credential.

Evidence per grant

What was granted, when, and under which profile. Access review is coming and it asks per system, not per person.

The Tray Headless prompts

Paste these into Claude Code or Codex with the Tray Headless plugin installed. Each stage runs on its own. The systems named in them are the worked example rather than a requirement, and every prompt says so.

Once per project, run /tray-workflows:set-workspace to pick the workspace these build in. Point it at a sandbox first.

  1. 1

    First, read the two sources of truth

    The HRIS knows who, the directory knows what. Both, before anything.

    Headless skills build-workflow

    Use build-workflow. The systems in play are Workday, Okta, Google
    Workspace, Jira, Slack, Jamf and Snowflake, or whatever we run in
    those seats. Before you plan anything, tell me which of them are
    already authenticated in the workspace, because I do not want a
    connector stubbed that I have not authenticated. I expect Workday and
    Okta at minimum.
    
    The two that carry the build are Workday and Okta. From Workday I need
    the worker record with start date, department, job profile, manager
    and location. From Okta I need groups, applications and how group
    assignment actually works.
    
    Do not assume a mapping between a Workday job profile and an Okta
    group. Show me both lists and I will map them.
  2. 2

    Build the role profile as data, never as a copy

    The single decision that keeps the access model clean.

    Headless skills build-workflow

    Use build-workflow. Trigger on a Workday worker record with a future
    start date.
    
    Resolve access from a role profile table keyed on department, job profile
    and location. Each profile lists the systems, the group memberships and
    the licence types.
    
    Do not offer a copy-from-colleague path, and refuse if I ask for one
    later. Cloning access propagates every exception the colleague
    accumulated, and nobody ever reviews a copy.
    
    If no profile matches the combination, stop and ask. An unmatched role is
    a profile that needs writing, not a reason to guess.

    This is the difference between an access model you can audit and one that drifts. Everything downstream depends on the profile being data somebody owns.

  3. 3

    Sequence it against the start date

    Because an account created three weeks early is an open credential.

    Schedule grants relative to the start date rather than firing everything
    at once:
    
      start minus 5 days   hardware ordered, laptop build requested
      start minus 2 days   identity created but disabled, email provisioned
      start minus 1 day    welcome message with first day logistics
      day one 09:00        identity enabled, core application access granted
      day one              manager notified that provisioning completed
      week two             elevated or regulated access, only where the
                           required training is recorded as complete
    
    An identity created three weeks early and left enabled is a credential
    sitting in the open with nobody watching it.
  4. 4

    Handle the amendments, because they always happen

    A plan that cannot absorb a date change becomes a manual process again.

    Headless skills tray-gotchas

    Use tray-gotchas, then handle these explicitly:
    
    Start date moves. Replan the whole sequence rather than firing missed
    steps immediately. A date moving forward should not dump five days of
    grants at once.
    
    Offer withdrawn before the start date. Reverse everything already
    granted, and confirm the reversal rather than assuming it.
    
    Role changes between signing and starting. Re-resolve the profile and
    show the difference before applying it.
    
    Contractor instead of employee. A different profile with an expiry date
    attached from the start.
    
    Rehire. The old identity may still exist. Never silently reactivate an
    account with its historical access intact.
  5. 5

    Record evidence, and reconcile against reality

    Because the access review asks per system, not per person.

    Record for every grant: the system, the entitlement, the timestamp, the
    role profile that authorised it and the run that performed it.
    
    Then reconcile weekly. Compare what the profile says a person should have
    against what each system reports they actually have, and report both
    directions: missing grants, and access nobody granted through this
    process.
    
    That second list is the interesting one. It is how manually granted
    access, which is the access nobody reviews, becomes visible.
  6. 6

    Test it, then hand the profiles to IT

    So a new role is a data change, not an engineering ticket.

    Run the per-step schema checks and the whole-workflow audit before this
    touches production.
    
    Then open the same workflow in Tray Build so IT operations can maintain
    the role profiles and the sequence timings in the visual canvas. New
    roles appear monthly, and none of them should need a coding assistant.

What it connects to

Provisioning reads the people system and writes to everything a person needs.

Workday

Read the new hire with start date, department, job profile, manager and location. The trigger for everything else.

Reads

Okta

Create the identity, assign groups and applications from the role profile, and enable it on day one instead of at signature.

Reads and writes

Google Workspace

Provision the mailbox, calendar and shared drive access the role profile calls for.

Reads and writes

Jira

Raise the tasks that cannot be automated, so they are tracked instead of remembered.

Writes

Slack

Create the account, add the role channels, and tell the manager when provisioning is complete.

Reads and writes

Jamf

Pre-stage and enrol the device so it is configured before the start date. Ordering it is procurement, and a laptop ordered on day one arrives in week three.

Reads and writes

Snowflake

Land every grant with its evidence, so the access review is a query rather than six exports.

Writes

Same build, other stacks

The design does not change if you run something else in one of these seats. The same prompts build it against Google BigQuery, Microsoft Teams, Azure Active Directory, SAP SuccessFactors, ServiceNow or Databricks.

Named systems are the ones most teams run, not the only ones that work. Each is an authentication in your Tray workspace, referenced by name, so the workflow never holds a credential. Where we have a connector page, the name links to it.

Running it in production

Provisioning grants access to production systems. It is audited, and it is a security control.

It lives on the platform, not in a terminal window

Grants scheduled days ahead of a start date have to actually fire. They run on the platform with retries, not on a cron somebody set up once.

Every grant is evidence

System, entitlement, timestamp and authorising profile, with the platform audit trail behind it. That is what an access review needs.

Credentials are managed, never in code

Provisioning holds admin rights across the estate. Every one is an authentication in your workspace, and none of them belong in code.

IT owns the role profiles

Profiles and sequence timings open in Tray Build, maintained by the team that owns the access model.

The reconciliation is the control

Weekly comparison of intended against actual access. Manually granted access is the access nobody reviews, and this is how it surfaces.

Questions people ask

Why not copy access from an existing employee?

Because it propagates every exception that person accumulated over years. The copy inherits access nobody remembers granting, nobody reviews it, and the pattern compounds with each new hire.

Why sequence rather than provision everything at once?

Because an identity created at contract signature and left enabled is an unmonitored credential, sometimes for weeks. Identity a couple of days ahead, access on day one, elevated access after the training it requires.

What happens when a start date moves?

The sequence replans. Grants scheduled relative to day one shift with it, and a date moving forward does not dump a week of missed steps at once.

What evidence should provisioning record?

Per grant: the system, the entitlement, the timestamp, the role profile that authorised it and the run that performed it. Access reviews ask per system, so per person is not enough.

Can IT maintain the role profiles without engineering?

Yes. Profiles and timings open in Tray Build, so a new role or a changed entitlement is a data edit by the team that owns the access model.

Vibe-coding app guides

Vibe-code an entire app with Helix

This moves the data between systems. It does not give anybody a screen to work in. Build that app in Claude Code, Codex or Cursor, then deploy and run it governed on Tray Helix. Same kind of guide, same kind of prompts.

How to build an onboarding and offboarding tracker (opens helix.tray.ai in a new tab)

Further reading

Background on the same subject, for the case rather than the build.

Related guides

People operations

How to build employee offboarding deprovisioning

Revoke on the leave date, cover every system instead of the ones you remember, transfer what they owned, and prove it. The Headless prompts that build it.

Customer success

How to build a closed-won to onboarding handoff

Carry what was promised, not only what was sold. Generate the plan from the deal, and start the clock at close. The Headless prompts that build it.

People operations

How to build an HRIS to payroll sync

Sync effective-dated changes, respect the payroll cutoff, hold anything ambiguous instead of guessing, and reconcile every cycle. The prompts that build it.

IT and security

How to build IT service desk fulfilment

Catalogue the requests worth automating, fulfil the safe ones end to end, and route the rest with everything already gathered. The prompts that build it.

People operations

How to build an org hierarchy sync

Propagate a reporting change everywhere it decides something, handle the reorganisation, and never leave an approval routed to somebody who left. The prompts.

Legal and compliance

How to build policy attestation tracking

Assign from the HRIS continuously, version what was accepted, chase without nagging everybody, and keep evidence a person can point at. The prompts.

People operations

How to build an ATS to HRIS sync

Move a signed offer into a worker record without rekeying, keep candidate data out of HR, and trigger onboarding from the start date. The prompts.

People operations

How to build a training completion sync

Assign from role rather than a spreadsheet, carry completions into the HRIS, and produce evidence per person instead of a percentage. The Headless prompts.

Last reviewed September 2026.