> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ravenna.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Employee onboarding

> Automate new hire onboarding in Ravenna with one intake event, a parent ticket in People Ops, child tickets per team, and group-based provisioning timed off the start date.

Onboarding is the best first process to automate: it matters, and it happens the same way every time. One intake event can produce every account, every piece of hardware, and every checklist item, all timed off the start date.

## Mental model

Onboarding is one intake event fanned out to a parent ticket plus one child ticket per participating team. The parent is the status view. Each child is where a team's work and workflow live. Access is granted by requesting access levels bundled per department and role, not by assigning applications one at a time.

Scheduling is relative: every timed step is a `Wait Until` on the start date with an offset, negative for anything needing lead time.

Two account patterns:

| Pattern                        | Account creation                                               | Ravenna's first access step |
| ------------------------------ | -------------------------------------------------------------- | --------------------------- |
| HRIS is the source of truth    | Already exists upstream                                        | Add group memberships       |
| Ravenna is the source of truth | `Create User` in Okta, Google Workspace, or Microsoft Entra ID | Then add group memberships  |

***

## Intake field set

Produce these fields whatever the intake path: first name, last name, work email, personal email, employee ID, start date (date-only), manager, department, role or title, country, location, hardware needs.

Department plus role is the bundling key. Access levels are attached per department and role so the intake never has to enumerate applications.

***

## Build sequence

Parent-side workflow, in the People Ops workspace:

1. Trigger: `Webhook (AI Prompt Trigger)`, or `Ticket Created` on the alert channel, or `Form Submitted` filtered to the New hire form.
2. `Create Ticket` for the parent, on the webhook path only. On the form and alert paths the trigger ticket is the parent.
3. One `Create Ticket` per team, each with `Workspace` set to that team's, `Parent ticket` set to the parent, and `Form` set to the intake ticket's form so field values copy across.
4. `Send Message` to the onboarding channel, `Send Email` to the personal address.

Child-side workflow, one per team, owned by that team:

1. Trigger: `Ticket Created`, filtered to that team's lifecycle channel.
2. `Apply Task Template`.
3. `Create User` in the identity provider, on the Ravenna-as-source pattern only.
4. `If / Else` or `Conditional` per department, then request that department's access levels. The access level's provisioning method does the granting: `Group` adds the mapped group membership and the provider assigns everything behind it.
5. `Wait Until` the start date with a negative offset such as `-3d` for hardware, and a second branch on the date itself for activation.
6. `Send Message` on the parent ticket to report completion.

Failure path: a separate workflow on `Entitlement Status Changed` filtered to `Failed Provisioning`, posting to a triage channel.

***

## Approval design

Access levels with no attached access policy are auto-approved. Attach a policy with an approval template only to the tiers that need a human: production access, finance systems, admin roles. The hire itself is the approval for the standard bundle, so gating the whole bundle is the wrong default.

***

## Constraints and gotchas

* A same-workspace `Create Ticket` does not fire downstream triggers. The children must be in different workspaces for their `Ticket Created` workflows to run.
* `Update Ticket` has no workspace field, so configure the child fully on the create.
* Without the `Form` input pointed at the intake ticket's form, the child carries no field values and its workflow has nothing to branch on.
* Task templates cannot be reordered after creation, and importing one replaces the ticket's existing tasks. Apply once, early.
* A start date with a time component shifts every `Wait Until` offset by a day for anyone in another timezone.
* Manual-method access levels record the grant in Ravenna but do not touch the target system. Pair each with a task that has a named owner.
* HRIS employee sync runs every 24 hours, so a hire recorded today may not be a Ravenna user until tomorrow. Do not build the flow on the sync.


## Related topics

- [Tasks](/documentation/tickets/tasks.md)
- [Employee offboarding](/guides/playbooks/hr/employee-offboarding.md)
- [Employee lifecycle architecture](/guides/playbooks/hr/employee-lifecycle.md)
- [HR and People](/guides/playbooks/hr/overview.md)
- [Collections](/documentation/automate/workflows/collections.md)
