DevOps · Enterprise Automation

Change Management Automation

Automating ServiceNow change management as part of our GitLab CI deployment workflow.

A Go platform that plugs GitLab CI into the ServiceNow API to automate enterprise change management. It cut release cycle time by 55%, removed manual change-task work, standardized deployments across teams, and was approved by our governance board for production.

55%lower release cycle time
Zeromanual ServiceNow tasks
Approvedby the governance board
Go Docker GitLab CI/CD ServiceNow REST API HashiVault Artifactory
The Problem

Every deployment meant manual paperwork

Every deployment used to require an engineer to hand-create a ServiceNow change task, paste in the build details, update it mid-deploy, and close it afterward. It was repetitive, error-prone, inconsistent between teams, and slow.

Old Manual Workflow

The steps engineers repeated, every time

1 A build stage produces the build info
2 Create the ServiceNow change task by hand
3 Paste in the build details
4 Update the task manually
5 Run the deployment
6 Close the task by hand afterward
Repeat for every deployment
The Solution

Make the change task disappear into the pipeline

I owned the architecture and implementation end to end, under one constraint: zero disruption. Teams keep shipping exactly as before. One manual push kicks it off, and everything after runs automatically inside the pipeline.

Developer pushes a deploymentthe only manual step
Automated pipeline
GitLab Pipelineruns as usual
Open Task modulevalidates and opens the change task
ServiceNow APIchange task created
Deploymentapplication ships
Close Task moduleupdates and closes on success
Completed changeauditable, hands-off
Before & After

From a checklist to a single deploy

Engineer · before
Create the change task
Paste in the build details
Update the task mid-deploy
Close the task by hand
Manual, on every single deploy
Pipeline · after
Deploy exactly as before
automation handles everything else
Hands-off, zero manual steps
Same deploy, about 55% less cycle time and zero manual change-management work.
System Architecture

Two modules in one image, run as pipeline jobs

Two modules in one Docker image, run as GitLab CI jobs. Both validate their input and pull credentials before calling the ServiceNow API.

Open Task
Validates the user and the change-task content
Reuses an existing open task, or creates a new one
Writes it through the ServiceNow API
Close Task
Updates the task as the deployment runs
Closes it once the deploy succeeds
Writes it through the ServiceNow API

Both modules pull ServiceNow credentials from HashiVault at runtime, so secrets never live in the pipeline or the image. The image and the apps' build metadata come from Artifactory.

Validation by Design

Catch bad input before it becomes a change task

The Open Task module validates the user and the change-task content before anything reaches ServiceNow, so bad input is caught in the pipeline instead of becoming a broken change task.

Application payments-api
Environment production
Version v2.14.0
Start time 2025-04-12 21:00
Technical Decisions

Choices that shaped the system

Language

Built in Go

Go was the enterprise standard, which kept the tool maintainable and set it up for broader adoption across teams down the line.

Architecture

Split into Open and Close modules

This mirrors how deployments behave. If a deploy fails, you don't want a pile of meaningless tasks, so close only runs on success.

Reliability

Validate before creating tasks

Validating deployment input at the pipeline stage stops invalid change tasks from ever being created, removing a whole class of manual cleanup.

Security

Runtime secrets via HashiVault

ServiceNow credentials are pulled from HashiVault at runtime, so they never live in the pipeline configuration or the Docker image.

Adoption

A reusable image, dropped into existing pipelines

One Docker image dropped into a pipeline meant teams could adopt it with no onboarding and no change to how they deploy.

Impact

What it changed

Reduced deployment release cycle time by about 55%
Eliminated repetitive manual ServiceNow work
Reduced human error through automated validation
Standardized change management across deployments
Improved deployment consistency
Approved by the governance board
Integrated into existing deployment workflows
Lessons Learned

What I took away

Design for adoption, not just functionality

The best automation is the kind users barely notice. Integrating seamlessly into existing deployment workflows made adoption straightforward across teams.

Validate early to reduce downstream risk

Catching invalid inputs before creating change tasks eliminated manual errors and improved the reliability of every deployment.

Build systems that standardize good practices

Automating repetitive processes did not just save time, it ensured deployments followed a consistent, auditable workflow every time.

Built With
Go
Docker
GitLab CI/CD
ServiceNow
HashiVault
Artifactory