Service Status Automations
Service Status Change Notification
Purpose: Notify stakeholders when service status changes
Actions:
- Identify service owner and support team
- Send notification based on new status
- Update status page (if integrated)
Email Template (Status = Outage):
Subject: [URGENT] Service Outage: {{Service Name}}
SERVICE STATUS CHANGE
Service: {{Service Name}}
Previous Status: {{previous_status}}
New Status: OUTAGE
Criticality: {{Criticality}}
Owner: {{Owner.Full Name}}
Support Team: {{Support Team.Team Name}}
{{#if Support Team.Slack Channel}}
Updates will be posted to: {{Support Team.Slack Channel}}
{{/if}}
Please join the incident response immediately.
Email Template (Status = Operational):
Subject: [RESOLVED] Service Restored: {{Service Name}}
SERVICE STATUS CHANGE
Service: {{Service Name}}
Previous Status: {{previous_status}}
New Status: OPERATIONAL
The service has been restored to normal operation.
Duration: {{outage_duration}}
Critical Service Health Check
Purpose: Monitor critical services for status issues
Query:
objectType = "Business Service"
AND Criticality = "Critical"
AND Status != "Operational"
Escalation Thresholds:
| Status | Duration | Escalation |
|---|---|---|
| Degraded | 30 min | Service Owner |
| Degraded | 60 min | IT Director |
| Outage | 15 min | Service Owner + Support Team Lead |
| Outage | 30 min | IT Director |
| Outage | 60 min | CIO |
SLA Tracking Automations
SLA Performance Dashboard Update
Purpose: Calculate daily SLA performance metrics
Services by SLA Tier:
objectType = "Business Service"
AND Status = "Operational"
AND "Service Level".Level Name = "Gold"
Services Missing SLA:
objectType = "Business Service"
AND Status = "Operational"
AND "Service Level" IS EMPTY
SLA Breach Alert
Purpose: Alert when service availability drops below SLA target
Alert Template:
Subject: [SLA BREACH] {{Service Name}} Below Availability Target
SLA BREACH ALERT
Service: {{Service Name}}
SLA Tier: {{Service Level.Level Name}}
Target Availability: {{Service Level.Availability Target}}
Current Availability: {{current_availability}}%
Shortfall: {{breach_amount}}%
Owner: {{Owner.Full Name}} ({{Owner.Email}})
Support Team: {{Support Team.Team Name}}
Immediate investigation required.
Request Routing Automations
Service Request Assignment
Purpose: Route service requests to appropriate support team
Logic:
def route_request(request, service_key):
service = get_service(service_key)
if service.support_team:
assign_to_team(request, service.support_team)
notify_team(service.support_team, request)
else:
# Fallback to default queue
assign_to_default_queue(request)
alert_catalog_manager("Service without support team", service)
Service Request SLA Application
Purpose: Apply appropriate SLA based on service and request type
Logic:
def apply_request_sla(request, service_key, request_type_key):
# First check request type for specific SLA
request_type = get_request_type(request_type_key)
if request_type and request_type.expected_sla:
apply_sla(request, request_type.expected_sla)
return
# Fall back to service SLA
service = get_service(service_key)
if service and service.service_level:
apply_sla(request, service.service_level)
return
# Default SLA
apply_sla(request, get_default_sla())
Knowledge Article Automations
Knowledge Article Suggestion
Purpose: Suggest relevant articles when users access a service
Query:
objectType = "Knowledge Article"
AND Service = "{{current_service_key}}"
AND Status = "Published"
ORDER BY Views DESC
Stale Knowledge Article Detection
Purpose: Identify articles needing review
Query - Articles not updated in 180 days:
objectType = "Knowledge Article"
AND Status = "Published"
AND "Last Updated" < now(-180d)
Query - Low-view articles (potential removal):
objectType = "Knowledge Article"
AND Status = "Published"
AND Views < 10
AND "Last Updated" < now(-90d)
Email Template:
Subject: [CMDB] Knowledge Article Review Required
STALE KNOWLEDGE ARTICLES
The following articles haven't been updated in 180+ days:
{{#each stale_articles}}
- {{Title}}
Service: {{Service.Service Name}}
Last Updated: {{Last Updated}}
Views: {{Views}}
URL: {{URL}}
{{/each}}
LOW ENGAGEMENT ARTICLES
The following articles have fewer than 10 views and may need review:
{{#each low_view_articles}}
- {{Title}}
Service: {{Service.Service Name}}
Views: {{Views}}
{{/each}}
Please review and update or archive as appropriate.
Consumer Notification Automations
Service Maintenance Notification
Purpose: Notify consumers of planned maintenance
Query - Find affected offerings:
objectType = "Service Offering"
AND Service = "{{service_key}}"
AND Status = "Available"
Email Template:
Subject: [Planned Maintenance] {{Service Name}}
SCHEDULED MAINTENANCE NOTIFICATION
Service: {{Service Name}}
Category: {{Category.Category Name}}
Maintenance Window: {{maintenance_start}} - {{maintenance_end}}
What to Expect:
- The service will be unavailable during this window
- Affected offerings: {{affected_offerings_count}}
Affected Service Offerings:
{{#each affected_offerings}}
- {{Offering Name}}
{{/each}}
Questions? Contact {{Support Team.Team Name}} at {{Support Team.Email}}
New Service Announcement
Purpose: Announce new services to the organization
Email Template:
Subject: [New Service] {{Service Name}} Now Available
NEW SERVICE ANNOUNCEMENT
We're pleased to announce a new service is now available:
Service: {{Service Name}}
Category: {{Category.Category Name}}
Description: {{Description}}
Service Level: {{Service Level.Level Name}}
Support Hours: {{Service Level.Support Hours}}
Available Offerings:
{{#each offerings}}
- {{Offering Name}}: {{Description}}
Fulfillment Time: {{Fulfillment Time}}
{{/each}}
Getting Started:
Visit the service catalog to explore offerings and submit requests.
Questions? Contact {{Owner.Full Name}} ({{Owner.Email}})
Service Lifecycle Automations
Service Deprecation Reminder
Purpose: Remind consumers of deprecated services
Query:
objectType = "Business Service"
AND Status = "Deprecated"
AND deprecation_date IS NOT EMPTY
Service Without Owner Alert
Purpose: Identify services missing ownership
Query - No owner assigned:
objectType = "Business Service"
AND Owner IS EMPTY
AND Status != "Retired"
Query - Owner is inactive:
objectType = "Business Service"
AND Owner.Status = "Inactive"
AND Status = "Operational"
Alert Template:
Subject: [CMDB] Services Without Active Owners
OWNERSHIP GAPS DETECTED
Services Without Any Owner:
{{#each no_owner}}
- {{Service Name}} ({{Criticality}})
{{/each}}
Services With Inactive Owners:
{{#each inactive_owner}}
- {{Service Name}}
Former Owner: {{Owner.Full Name}} (Inactive)
{{/each}}
Please assign active owners to maintain accountability.
Integration Patterns
Status Page Integration
Pattern: Sync service status to external status page
Trigger: Business Service Status changed
Webhook Payload:
{
"event": "service_status_change",
"service": {
"id": "{{key}}",
"name": "{{Service Name}}",
"status": "{{Status}}",
"criticality": "{{Criticality}}"
},
"previous_status": "{{previous_status}}",
"changed_at": "{{timestamp}}",
"support_team": {
"name": "{{Support Team.Team Name}}",
"slack": "{{Support Team.Slack Channel}}"
}
}
Service Desk Integration
Pattern: Enrich tickets with service context
Trigger: Ticket created with service reference
Enrichment Data:
{
"service": {
"name": "{{Service Name}}",
"criticality": "{{Criticality}}",
"sla_tier": "{{Service Level.Level Name}}",
"response_target": "{{Service Level.Response Time}}",
"resolution_target": "{{Service Level.Resolution Time}}"
},
"support_team": {
"name": "{{Support Team.Team Name}}",
"email": "{{Support Team.Email}}",
"escalation": "{{Support Team.Escalation Path}}"
},
"owner": {
"name": "{{Owner.Full Name}}",
"email": "{{Owner.Email}}"
}
}
Notification Channels
Channel Configuration
| Scenario | Channel | Recipients |
|---|---|---|
| Service Outage | Email + Slack | Support Team, Service Owner |
| Maintenance Notice | All users (via announcement) | |
| SLA Breach | Email + PagerDuty | Support Team Lead, Service Owner |
| New Service | Organization announcement | |
| Stale Articles | Knowledge Manager |
Schema Forge