Skip to main content
Onboarding and offboarding are the same machine pointed in opposite directions. Two decisions shape both: how the event gets in, and how work reaches each team. Settle them here and the onboarding and offboarding playbooks become build instructions.

Who does what

Ravenna coordinates

Intake, tickets, the cross-team handoff, checklists, approvals, notifications, and the audit trail.

Your provider provisions

Add someone to a group in Okta, Google Workspace, or Entra ID and it assigns every application mapped to that group.
That split is why Group is the default provisioning method on an access level. One membership fans out to everything behind it, and the application list stays in your provider rather than in every workflow you write. Application covers the Okta apps you would rather assign directly.

Pick your pattern

Only the first step differs, so you can change the trigger later without touching the rest.

Three ways in

Prefer the first one your stack supports.
Webhook (AI Prompt Trigger) gives you a URL to register with your HRIS and a prompt that pulls the fields out of whatever it sends, so the payload shape is not your problem.This is the strongest option because it acts the moment the event happens. HRIS employee data syncs every 24 hours, so a webhook is what buys you a full day of lead time to ship a laptop.
Treat the URL as a secret, since anyone holding it can start the workflow. To rotate it, delete the trigger and add a new one.
Learn more about the webhook trigger, agent rules, and request channels

The employee record

Capture the same fields whichever intake you use, because every branch downstream reads them.
Keep the dates date-only, so every Wait Until offset lands on the day you meant. Bundle access by department plus role and this list stays short permanently.

One parent, one child per team

Give the work the same shape as your org: a parent ticket in the workspace of the team that owns the event, and a child ticket in each team that has a part in it. Creating a child fires that team’s own workflow, so each team owns and maintains their half.The parent answers “where is this up to”. The children are where the work happens. People Ops owns the parent when both teams are on Ravenna, otherwise whichever team is.

Building the fan-out

One Create Ticket step per team does all of it:Create Ticket also sets requester, assignee, followers, category, tags, due date, and status, so the child arrives already routed.
Ticket attribute pickers list the workflow’s own workspace, so send destination-specific values through the copied form or the description. Update Ticket works within its own workspace, so set what you need on the create.
Learn more about Create Ticket

Let Copilot build it

Describe the end state and Copilot returns a plan before it creates anything:

When the New hire form is submitted in the People Ops workspace, create a child ticket in the IT workspace, one in Facilities, and one in Finance. Set each child's parent to the ticket that triggered the workflow, and set each child's form to the New hire form so the field values carry across.

Copilot builds the draft. You review it and publish.

Where teams get this wrong

Give each team a child ticket and let them own the workflow it triggers.
Set the Form input, or every responder opens two tickets and the child’s workflow has no fields to branch on.
Add “do not reply in the channel” to the rule and the agent files the ticket quietly.
Every scheduled step drifts by a day for someone. Use date-only fields.
It runs every 24 hours. To act on the day of the event, intake has to be a webhook, an alert, or a form.

Next

Employee onboarding

Build the joiner side, timed off the start date.

Employee offboarding

The same machinery in reverse, with a real deadline.
Last modified on September 17, 2026