Daily
Get a daily list of new and removed accounts
Each morning you see which Okta users were created and which were deactivated the day before.
- Runs
- Daily
- Apps
- Okta
- AI
- Not needed
- Access
- read
Send this to your assistant
Create a ClickRuntime automation: every morning at 8am, email me the Okta users created yesterday and the ones deactivated yesterday, with name, email and who did it.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A security analyst at a growing SaaS company gets asked the same question every few weeks: who joined and who left this month, and was access removed on time? Okta admins answer by scrolling the System Log or guessing from HR emails. A new hire provisioned with the wrong group goes unnoticed, and someone who left on Friday is still active on Wednesday because no one was looking.
Each day, the Okta System Log is queried for user.lifecycle.create and user.lifecycle.deactivate events from the previous 24 hours. The accounts created and deactivated are put into one email, with the user, the time and the admin or system that performed it, so you can see the day's joiners and leavers in a minute.
It fits IT teams, HR operations and compliance leads who must show joiner and leaver controls are working.
What you get out of it
Leavers lose access on the same day
If an employee departure appears in the log on Friday but not in your records, you see the mismatch Monday morning and not weeks later when someone remarks that the person still has access.
New accounts are checked at creation
A joiner who was created by mistake, or by an unexpected admin, stands out in a short daily list. You catch provisioning errors while the account is still unused. That is the cheapest moment to fix a mistake, before the account has any activity.
Proof of joiner-mover-leaver controls
Auditors ask for evidence that onboarding and offboarding follow policy. A saved daily digest shows each creation and deactivation with a timestamp and actor. That gives you a dated paper trail for each person without hunting through log pages.
Finance and HR get reliable counts
Headcount questions are answered from identity data. When a team lead asks how many people joined in the quarter, the digests add up to an answer. That makes workforce planning conversations quicker and less dependent on guesswork.
Odd admin behavior shows up
A flurry of accounts created at 2 am by one admin is hard to see inside raw log pages, but obvious in a one-page daily summary. That kind of pattern deserves a question, and the digest makes sure someone asks.
How it works
What happens, step by step
Every morning, ClickRuntime checks the Okta log for users created or deactivated the day before.
You get an email with two lists: new users with who created them, and deactivated users with who removed them.
If nothing changed that day, the list shows none, so you know the check still ran.
Before it runs live
- Connect Okta
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Run it at a different time, more or less often, or only on weekdays
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Okta steps into one automation
Under the hood
The code that runs this automation
from datetime import date, timedelta
from clickruntime import on_trigger, credentials, http, notify
ORG = "northwind"
def okta(path, **params):
resp = http.get(f"https://{ORG}.okta.com/api/v1/{path}", params=params,
headers={"Authorization": f"SSWS {credentials.secret('OKTA_API_TOKEN')}", "Accept": "application/json"})
resp.raise_for_status()
return resp.json()
@on_trigger
def run(event):
y = date.today() - timedelta(days=1)
sections = []
for label, kind in [("Created", "user.lifecycle.create"), ("Deactivated", "user.lifecycle.deactivate")]:
events = okta("logs", since=f"{y}T00:00:00Z", until=f"{date.today()}T00:00:00Z", filter=f'eventType eq "{kind}"')
rows = [f" {t.get('displayName')} <{t.get('alternateId')}> by {e['actor']['displayName']}"
for e in events for t in e.get("target", []) if t.get("type") == "User"]
sections.append(f"{label} ({len(rows)}):\n" + ("\n".join(rows) or " none"))
notify.email_me(f"Okta users created and deactivated on {y}", "\n\n".join(sections))
return {"day": str(y)}FAQ
Common questions
Are suspended users counted as deactivated?
Will it show who deactivated the account?
What if no one was created or deactivated that day?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Find accounts with no login in 90 days
Once a month you get the users who haven't signed in for 90 days, ready for review.
See how it worksAlert your security channel on lockouts and admin grants
Account lockouts, MFA resets and new admin roles appear in chat within minutes.
See how it worksKnow the moment your website goes down
Your team hears in Slack when the site stops responding or slows down, and again when it's back.
See how it worksKeep exploring
Set up “Get a daily list of new and removed accounts” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.