How to Automate Change Request Management
Process change requests with automated routing, approval, and tracking.
Jay Banlasan
The AI Systems Guy
Change requests get lost in email threads and Slack messages. I built a system to automate change request management that captures every request, classifies its impact, routes it to the right approver, and tracks implementation. Every change is documented and traceable.
No more "who approved this?" questions.
What You Need Before Starting
- Python 3.8+
- SQLite for request tracking
- An AI API key for impact classification
- Notification system (Slack or email)
Step 1: Define Change Categories and Routing
CHANGE_CATEGORIES = {
"low_impact": {
"examples": ["copy changes", "minor UI tweaks", "config updates"],
"approval": "team_lead",
"sla_hours": 24
},
"medium_impact": {
"examples": ["new feature addition", "workflow changes", "integration updates"],
"approval": "department_head",
"sla_hours": 72
},
"high_impact": {
"examples": ["database changes", "security changes", "pricing changes"],
"approval": "director",
"sla_hours": 120
}
}
Step 2: Create the Change Request Tracker
import sqlite3
from datetime import datetime
def init_change_db(db_path="changes.db"):
conn = sqlite3.connect(db_path)
conn.execute("""
CREATE TABLE IF NOT EXISTS change_requests (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT,
description TEXT,
requester TEXT,
category TEXT,
impact_level TEXT,
status TEXT DEFAULT 'submitted',
approver TEXT,
submitted_at TEXT,
approved_at TEXT,
implemented_at TEXT,
rollback_plan TEXT
)
""")
conn.commit()
return conn
Step 3: Classify Impact with AI
import anthropic
client = anthropic.Anthropic()
def classify_change(title, description):
prompt = f"""Classify this change request by impact level.
Title: {title}
Description: {description}
Categories:
- low_impact: cosmetic changes, copy edits, minor configs
- medium_impact: new features, workflow changes, integrations
- high_impact: database schema, security, pricing, data migrations
Return only: low_impact, medium_impact, or high_impact"""
message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=50,
messages=[{"role": "user", "content": prompt}]
)
return message.content[0].text.strip().lower()
Step 4: Submit and Route
def submit_change_request(conn, title, description, requester, rollback_plan=""):
impact = classify_change(title, description)
category_config = CHANGE_CATEGORIES.get(impact, CHANGE_CATEGORIES["medium_impact"])
conn.execute(
"""INSERT INTO change_requests
(title, description, requester, impact_level, approver, submitted_at, rollback_plan)
VALUES (?,?,?,?,?,?,?)""",
(title, description, requester, impact,
category_config["approval"], datetime.now().isoformat(), rollback_plan)
)
conn.commit()
request_id = conn.execute("SELECT last_insert_rowid()").fetchone()[0]
print(f"Change #{request_id} submitted. Impact: {impact}. Routing to: {category_config['approval']}")
return request_id
def approve_change(conn, request_id, approver):
conn.execute(
"UPDATE change_requests SET status='approved', approved_at=? WHERE id=?",
(datetime.now().isoformat(), request_id)
)
conn.commit()
def mark_implemented(conn, request_id):
conn.execute(
"UPDATE change_requests SET status='implemented', implemented_at=? WHERE id=?",
(datetime.now().isoformat(), request_id)
)
conn.commit()
Step 5: Generate Change Audit Log
def change_audit_report(conn, days=30):
cutoff = (datetime.now() - __import__('datetime').timedelta(days=days)).isoformat()
rows = conn.execute("""
SELECT title, impact_level, status, requester, submitted_at, approved_at
FROM change_requests WHERE submitted_at > ?
ORDER BY submitted_at DESC
""", (cutoff,)).fetchall()
report = f"# Change Request Audit ({days} days)\n\n"
report += f"Total: {len(rows)}\n\n"
report += "| Title | Impact | Status | Requester | Submitted |\n|---|---|---|---|---|\n"
for r in rows:
report += f"| {r[0]} | {r[1]} | {r[2]} | {r[3]} | {r[4][:10]} |\n"
return report
What to Build Next
Add a change calendar that shows all approved changes scheduled for implementation. When multiple changes affect the same system, the calendar flags potential conflicts. Coordinated change management prevents the "two changes broke the same thing" problem.
Related Reading
- How to Audit Your Operations for AI Opportunities - audit your change processes
- Building Your First Automation: A Complete Guide - automation fundamentals
- The Feedback Loop That Powers Everything - tracking change outcomes
Want this system built for your business?
Get a free assessment. We will map every system your business needs and show you the ROI.
Get Your Free Assessment