Skip to content

adithyasekhar/Workday-Monitor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Workday-Monitor

AI-powered Workday integration health monitor with Claude diagnostics and Teams alerts

Workday Integration Health Monitor

AI-Powered Integration Failure Detection with Claude + Microsoft Teams

Python Workday Claude Teams License


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

🔧 Prerequisites

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

Step 1 — Clone This Repository

Open your terminal or command prompt and run:

git clone https://github.com/adithyasekhar/Workday-Monitor.git
cd Workday-Monitor

Step 2 — Install Python Dependencies

pip install anthropic requests python-dotenv schedule

Or using the requirements file:

pip install -r requirements.txt

Step 3 — Get Your Anthropic API Key

  1. Go to https://console.anthropic.com
  2. Sign up or log in
  3. Click API Keys in the left menu
  4. Click Create Key — name it workday-monitor
  5. Copy the key (starts with sk-ant-...)
  6. Save it — you'll need it in Step 6

Step 4 — Set Up Workday API Client

This gives the monitor permission to read your integration data.

  1. Log into your Workday tenant
  2. Search for "Register API Client"
  3. Fill in:
    • Client Name: Integration Monitor Agent
    • Client Grant Type: Bearer Token
    • Access Token Type: Bearer
    • Scope: tick Integration System and System
  4. Click OK — save the Client ID and Client Secret
  5. Search "View API Clients" → find your client
  6. Click Actions → Generate Refresh Token
  7. Select your integration user
  8. 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.


Step 5 — Create the Workday Custom Report

This is the report the monitor uses to pull integration run data.

  1. Search "Create Custom Report" in Workday
  2. Fill in:
    • Name: INT_Monitor_Agent_Report
    • Report Type: Simple
    • Data Source: Integration System User Activity
  3. Add these columns:
    • Integration System Name
    • Initiated On
    • Completed On
    • Integration Status
    • Error Message
  4. Add a filter: Initiated On = Last 1 day
  5. Save the report
  6. Click Share → share with your API client user
  7. Click Actions → Web Service → View URLs
  8. Copy the JSON URL — it looks like:
https://wd2.myworkday.com/ccx/service/data/YOUR_TENANT/INT_Monitor_Agent_Report/1

Step 6 — Set Up Microsoft Teams Webhook

  1. Open Microsoft Teams
  2. Go to the channel where you want failure alerts
  3. Click the three dots (...) next to the channel name
  4. Click Connectors
  5. Search for "Incoming Webhook" → click Configure
  6. Name it: Workday Monitor
  7. Click Create
  8. Copy the Webhook URL that appears — save it

Important: Keep this webhook URL private. Anyone with it can post to your Teams channel.


Step 7 — Configure Your Credentials

Copy the example environment file:

cp .env.example .env

Open .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=30

The .env file is in .gitignore — it will never be uploaded to GitHub. Your credentials stay on your machine only.


Step 8 — Run the Monitor

python main.py

You 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.


⚙️ Configuration Options

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 .env file 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 schedule in your terminal

Teams alert not arriving

  • Verify your Webhook URL in .env is 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_KEY in .env is 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:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/your-feature
  3. Commit your changes: git commit -m "Add your feature"
  4. Push to the branch: git push origin feature/your-feature
  5. 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

About

AI-powered Workday integration health monitor with Claude diagnostics and Teams alerts

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors