AI-powered Workday integration health monitor with Claude diagnostics and Teams alerts
Workday Integration Health Monitor
What Is This?
If you manage Workday integrations, you know the pain:
- An integration silently fails at 2am
- Nobody knows until payroll is wrong or benefits aren't updated
- You spend hours digging through logs trying to understand a cryptic error message
This tool fixes that.
It monitors your Workday integrations automatically, and when something fails, it uses Claude AI to read the error and send your team a plain English diagnosis in Microsoft Teams — including what went wrong, why, and how to fix it.
What It Does
- ✅ Polls your Workday tenant for integration failures on a schedule
- ✅ Sends each failure to Claude AI for intelligent diagnosis
- ✅ Posts a formatted alert card to your Microsoft Teams channel
- ✅ Explains errors in plain English — no technical jargon
- ✅ Suggests step-by-step fix instructions automatically
- ✅ Logs all events locally for audit and review
- ✅ Prevents duplicate alerts for the same failure
- ✅ Sends an "All Clear" message when everything is healthy
Example Teams Alert
When an integration fails, your Teams channel receives:
Integration Failure Detected
Detected at 2026-05-22 02:14:33
Integration Name: Benefits_Feed_ADP
Status: Failed
Failed At: 2026-05-22 02:13:00
Raw Error: SFTP connection refused at host 10.0.0.45:22
AI Diagnosis (Claude)
Plain English: The Benefits integration could not connect to the
ADP server because the SFTP connection was refused. This typically
happens when credentials have expired or the server address has changed.
Root Cause: Expired SFTP credentials or incorrect host configuration.
Steps to Fix:
1. Log into Workday and go to the Benefits_Feed_ADP integration
2. Navigate to Integration System > Connection Details
3. Verify the SFTP host, username, and password are correct
4. Re-enter credentials if they have changed
5. Run the integration manually to test the connection
Urgency: HIGH — This affects benefits data feed timing
Before you begin, make sure you have:
- Python 3.10 or higher installed
- Access to a Workday tenant (sandbox recommended for testing)
- Workday Integration System Administrator access
- An Anthropic API key (free to get — see Step 3 below)
- Microsoft Teams channel where you want alerts
- Git installed on your computer
Setup Guide — Step By Step
Open your terminal or command prompt and run:
git clone https://github.com/adithyasekhar/Workday-Monitor.git
cd Workday-Monitorpip install anthropic requests python-dotenv scheduleOr using the requirements file:
pip install -r requirements.txt- Go to https://console.anthropic.com
- Sign up or log in
- Click API Keys in the left menu
- Click Create Key — name it
workday-monitor - Copy the key (starts with
sk-ant-...) - Save it — you'll need it in Step 6
This gives the monitor permission to read your integration data.
- Log into your Workday tenant
- Search for "Register API Client"
- Fill in:
- Client Name:
Integration Monitor Agent - Client Grant Type:
Bearer Token - Access Token Type:
Bearer - Scope: tick
Integration SystemandSystem
- Client Name:
- Click OK — save the Client ID and Client Secret
- Search "View API Clients" → find your client
- Click Actions → Generate Refresh Token
- Select your integration user
- Copy and save the Refresh Token
Your Workday Token URL format is:
https://wd2.myworkday.com/ccx/oauth2/YOUR_TENANT_NAME/token
Your Workday Base URL format is:
https://wd2.myworkday.com/ccx/api/v1/YOUR_TENANT_NAME
Replace YOUR_TENANT_NAME with your actual Workday tenant name.
This is the report the monitor uses to pull integration run data.
- Search "Create Custom Report" in Workday
- Fill in:
- Name:
INT_Monitor_Agent_Report - Report Type:
Simple - Data Source:
Integration System User Activity
- Name:
- Add these columns:
- Integration System Name
- Initiated On
- Completed On
- Integration Status
- Error Message
- Add a filter: Initiated On = Last 1 day
- Save the report
- Click Share → share with your API client user
- Click Actions → Web Service → View URLs
- Copy the JSON URL — it looks like:
https://wd2.myworkday.com/ccx/service/data/YOUR_TENANT/INT_Monitor_Agent_Report/1
- Open Microsoft Teams
- Go to the channel where you want failure alerts
- Click the three dots (...) next to the channel name
- Click Connectors
- Search for "Incoming Webhook" → click Configure
- Name it:
Workday Monitor - Click Create
- Copy the Webhook URL that appears — save it
Important: Keep this webhook URL private. Anyone with it can post to your Teams channel.
Copy the example environment file:
cp .env.example .envOpen .env and fill in all your values:
# Workday Credentials
WORKDAY_TENANT=your_company_name
WORKDAY_BASE_URL=https://wd2.myworkday.com/ccx/api/v1/your_company_name
WORKDAY_TOKEN_URL=https://wd2.myworkday.com/ccx/oauth2/your_company_name/token
WORKDAY_CLIENT_ID=your_client_id_here
WORKDAY_CLIENT_SECRET=your_client_secret_here
WORKDAY_REFRESH_TOKEN=your_refresh_token_here
WORKDAY_REPORT_URL=your_custom_report_json_url_here
# Anthropic (Claude AI)
ANTHROPIC_API_KEY=sk-ant-your_key_here
# Microsoft Teams
TEAMS_WEBHOOK_URL=https://your_company.webhook.office.com/...
# How often to check (in minutes)
POLL_INTERVAL_MINUTES=30The .env file is in .gitignore — it will never be uploaded to GitHub. Your credentials stay on your machine only.
python main.pyYou should see:
==================================================
Workday Integration Health Monitor
Powered by Claude AI
==================================================
Polling every 30 minutes
Press CTRL+C to stop
==================================================
[Workday] Getting access token...
[Workday] Access token obtained successfully.
[Workday] Fetching integration run report...
[Workday] Found 12 integration run(s).
[Workday] 1 failed integration(s) found.
[Claude] Analyzing failure for: Benefits_Feed_ADP
[Claude] Diagnosis complete.
[Teams] Alert sent successfully.
Check your Teams channel — you should see the alert card.
| Setting | Default | Description |
|---|---|---|
POLL_INTERVAL_MINUTES |
30 | How often to check for failures |
To check every 15 minutes, change to:
POLL_INTERVAL_MINUTES=15
To check every hour:
POLL_INTERVAL_MINUTES=60
Project Structure
Workday-Monitor/
├── src/
│ ├── workday_client.py # Handles Workday API connection
│ ├── claude_analyzer.py # Sends failures to Claude for diagnosis
│ ├── teams_notifier.py # Posts alerts to Microsoft Teams
│ └── monitor.py # Main monitoring logic
├── logs/
│ └── monitor_log.json # Local audit log of all events
├── main.py # Entry point — run this to start
├── requirements.txt # Python dependencies
├── .env # Your credentials (never shared)
├── .env.example # Template for credentials
├── .gitignore # Keeps your .env safe from GitHub
└── README.md # This file
Security Notes
- Your
.envfile is never uploaded to GitHub — it is in.gitignore - All credentials are stored locally on your machine only
- The Workday API client uses scoped permissions — read only for integration data
- Consider creating a dedicated Workday integration user for this monitor
- Rotate your Anthropic API key periodically from console.anthropic.com
Troubleshooting
Error: 401 Unauthorized from Workday
- Your refresh token may have expired — regenerate it in Workday
- Double-check Client ID and Client Secret in
.env
Error: Could not resolve import schedule
- Run
pip install schedulein your terminal
Teams alert not arriving
- Verify your Webhook URL in
.envis complete and correct - Check that the Incoming Webhook connector is still active in Teams
Report returns empty data
- Verify the custom report is shared with your API client user
- Check that the report filter covers the correct date range
Claude not analyzing errors
- Verify your
ANTHROPIC_API_KEYin.envis correct - Check your API usage at console.anthropic.com
Roadmap
- Convert to MCP server for direct Claude Desktop integration
- Add support for email notifications (SMTP)
- Add Slack notification support
- Build a web dashboard for failure history
- Add Workday Studio integration monitoring
- Add Prism pipeline failure detection
- Support for Workday Extend app monitoring
Contributing
Contributions are welcome! If you work with Workday and want to improve this tool:
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Commit your changes:
git commit -m "Add your feature" - Push to the branch:
git push origin feature/your-feature - Open a Pull Request
Author
Adithyasekhar
- GitHub: @adithyasekhar
- Built by a Workday HRIS Analyst for the Workday community
License
MIT License — free to use, modify, and distribute.
If This Helped You
If this saved you time or caught a failure before it caused problems, please give this repo a star on GitHub — it helps others find it!
Built for the Workday-community