Set up Workday new hires in Okta before their first day
Every weekday at 7am we spot who is starting soon, create their accounts, grant the right apps, and tell their manager what is ready.
Every weekday at 7am, find the people joining the company in the next few days and get their accounts and applications ready before their first morning. This workflow only ever grants access. It must never deactivate a user, unassign an application, or remove access of any kind, even if a record looks wrong or out of date. If something seems off, provision what is safe and flag the rest for a human.
Start in Workday. Use Staffing – List Workers to retrieve workers whose hire date is today or falls within the next three business days, and page through the collection until you have everyone in that window. For each person, capture their full name, preferred name, work email, hire date, job profile, department, supervisory organization and work location. Use Staffing – Get Worker when you need more detail on an individual than the list returns.
Identify each new hire's manager. Take the supervisory organization from the worker record and resolve who leads it with Common – Get Supervisory Organization, and confirm the reporting relationship using Common – List Workers Supervisory Organizations Managed, which returns the supervisory organizations a given worker manages. Capture the manager's name and work email. If you cannot confidently determine the manager, continue provisioning and note the gap in the summary rather than stopping.
Then check Okta. Look each new hire up by their work email with Retrieve User, and fall back to List Users with a search on the email or profile attributes if the direct lookup does not find them. If the person already exists, keep their account as it is and do not modify their profile. If they do not exist, create the account with Create User using their name, their work email as both login and username, and their job title and department from Workday, then run Activate User so they can set a password ahead of their start date.
Now decide which applications each person should receive. Use List Applications to see what app integrations exist in the org, then map the person's job profile, department and work location onto the right bundle. Apply judgement rather than an exact string match. A sales job profile should get the sales tooling bundle such as the CRM, dialer and sales engagement apps. An engineering job profile should get the engineering bundle such as source control, CI and error tracking. Everyone should get the baseline apps that all employees receive, such as email, chat and the HR portal. Take work location into account where an app is region specific. If a job profile does not map cleanly to any bundle, grant only the baseline apps and flag the person for a human decision.
Before assigning anything, check what the person already has, using List Application Users on the target app or List User App Links on the user. Only call Assign User to Application for apps they are not already assigned to. If a new hire already has an active account and every application in their bundle, treat them as fully provisioned, skip them, and do not post about them again. This is what makes repeated runs safe, so never assume a fresh start.
Finish with two Slack messages sent as the bot. First, post a welcome message in the team channel using Send a Message, introducing the person by name along with their role, department, team and start date, written warmly in a couple of sentences so the team knows who is arriving and what they will be working on. Second, send the hiring manager a direct message: find them with Look Up User by Email using their work email, get the DM channel with Open a Conversation, then use Send a Message to deliver a short summary listing exactly which applications were newly provisioned, which were already in place, and anything still needing a human, such as hardware, a licence that has to be purchased, or an app the workflow could not match confidently.
If there are no new hires in the window, or everyone found is already fully provisioned, post nothing at all.
What does this prompt do?
- Checks Workday every weekday morning for anyone whose start date is today or falls within the next three working days
- Creates and activates their Okta account if they do not have one yet, and leaves any existing account exactly as it is
- Grants the set of apps that matches their role, department and location, skipping anything they already have
- Posts a welcome note in your team channel and sends the hiring manager a direct message listing what is ready and what still needs a person
What do I need to use this?
- A Workday connection that can read worker and organization records
- An Okta account with admin rights to create people and give them apps
- A Slack workspace with our bot added, and the channel where welcome posts should appear
- A rough idea of which apps each kind of role should get, for example what a new salesperson needs versus a new engineer
How can I customize it?
- Change how far ahead it looks. Three working days gives IT a buffer, but you can narrow it to people starting today or widen it to a full week
- Describe your own app bundles in plain language, so a new recruiter, designer or field technician gets the right set instead of a generic one
- Pick which channel gets the welcome post, and decide whether managers get a direct message or whether it all goes to one IT channel
FAQs
What happens if someone already has an account?
Can this also remove access when someone leaves?
How does it know a salesperson needs different apps than an engineer?
Do we need a developer to set this up?
What if nobody is starting that week?
Related templates
When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.
Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.
Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.
Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.
Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.
When you merge a fix in GitHub, this agent checks the matching dead-letter queue, replays the failed messages, and reports back on the pull request and in Slack.
Have accounts ready before new hires walk in
Let this run every weekday morning so nobody spends their first day waiting on a login.