
First posted: May 04 2026
Read time: 7 minutes
Written By: Steven Godson
The idea of treating infrastructure as code revolutionised the way we think about provisioning and configuration. "Infrastructure as Code" (IaC) gave us repeatability, auditability, and the ability to deploy entire environments from a single source of truth. In my opinion, it's time we applied that same discipline to something that has, for too long, remained stubbornly document-centric: ITSM Service Design.
Service Design as Code (SDaC) is not a formally standardised practice yet — but the concept is very much within reach, and the organisations that move in this direction first will gain a meaningful advantage in service consistency, quality, and speed of delivery.
Service Design as Code is the practice of defining, versioning, and deploying service design artefacts — processes, SLAs, escalation paths, team structures, tooling integrations — in a machine-readable, human-readable format, stored in source control.
Rather than authoring a static Service Design Document (SDD) in Word or PDF, you express the same content as structured data: YAML, JSON, or a domain-specific schema. That definition becomes the canonical description of your service, from which everything else is generated or validated.
Think of it this way: instead of a 60-page Word document describing how an Incident Management process works, you have a version-controlled schema that:
If you have spent any time in ITSM delivery — particularly across large organisations or managed service environments — you will recognise this scenario immediately.
Two teams, ostensibly running the same service for two different customers, have drifted into completely different operating models. One team escalates P2 incidents after 30 minutes; the other does it after an hour. One team uses a five-priority matrix; the other uses three. One team has a formal change advisory board; the other eyeballs it.
This happens not because people are careless, but because service design artefacts are:
Service Design as Code addresses all of these problems directly.
Here's a look at how a practical SDaC implementation might be structured. Imagine a YAML-based schema for an Incident Management process:
service: "End User Services"
version: "2.1.0"
owner: "IT Operations"
last_reviewed: "2026-04-01"
incident_management:
priority_matrix:
P1:
label: "Critical"
response_time: "15 minutes"
resolution_target: "4 hours"
escalation_path: ["Service Desk", "Team Lead", "Head of IT"]
P2:
label: "High"
response_time: "30 minutes"
resolution_target: "8 hours"
escalation_path: ["Service Desk", "Team Lead"]
P3:
label: "Medium"
response_time: "4 hours"
resolution_target: "3 business days"
escalation_path: ["Service Desk"]
sla_review_frequency: "monthly"
tooling:
platform: "ServiceNow"
queue: "INC_EUS_PROD"
automation_rules:
- trigger: "unassigned > 15 minutes"
action: "auto-escalate to Team Lead"
That single file, committed to a Git repository, becomes the source of truth for how Incident Management works for this service. From it, you can:
My preference when working across multiple customer engagements is to establish a baseline schema — a canonical service design pattern — and then allow customer-specific overrides in a separate layer. This is essentially the same pattern as environment-specific configuration in IaC.
The consistency gains this enables are considerable:
This is where it gets genuinely exciting. With a well-defined schema and a corpus of existing service designs, AI becomes a powerful co-pilot for service design work.
Imagine prompting an AI assistant with: "Generate a baseline service design for a Managed Desktop service with 500 users, standard SLAs, and ServiceNow as the ITSM platform." The AI produces a validated YAML or JSON artefact, conforming to your schema, which your team then reviews and refines — rather than authoring from scratch.
Beyond generation, AI can assist with:
This is not about replacing the service designer's judgement — it's about empowering them to work faster and with greater confidence.
If you are wondering how to begin moving in this direction, here is a pragmatic approach that does not require you to rearchitect everything overnight:
The key is to start small, prove the value, and build momentum. This is a journey, not a big-bang transformation.
Service Design as Code represents a natural evolution for ITSM practitioners who are serious about consistency, auditability, and scalability. By treating service design as a living, version-controlled artefact rather than a static document, organisations can close the gap between what they say they deliver and what they actually deliver — and do so in a way that is transparent, repeatable, and auditable.
The tools exist today. The patterns are well-established in adjacent disciplines. The question is simply whether we, as an ITSM community, are willing to bring that same engineering discipline to the way we design and govern our services.
I believe we are — and the organisations that make that move will be markedly better for it.
Hopefully this has been useful to you and I wish you well on your ITSM journey…