Originally published on 2010-05-17; fully revised and updated.

Software Configuration and Release Management (SCRM) is the discipline of planning, building, packaging, approving, and deploying software changes in a controlled way. This guide is for engineering, release, and operations teams that want predictable releases, better traceability, and safer production transitions.
Many organizations map this work to ITIL change and release practices. The original article referenced ITIL guidance at itil-officialsite.com and itil.co.uk; regardless of framework, the core objective is the same: move changes to live systems with repeatability and auditability.
Common SCRM terms you should standardize
Teams often use release terminology inconsistently. Aligning definitions early reduces planning, testing, and audit confusion.
| Term | Definition |
|---|---|
| RFC (Request for Change) | High-level request describing a proposed application change. |
| CAB (Change Advisory Board) | Stakeholders who review RFCs, set priorities, and decide release inclusion. |
| Release | Stable executable version intended for test and production deployment. |
| Release Package | Logical container of RFCs, deployment units, release type, and milestone dates. |
| Release Type | Classification such as Major, Minor, or Emergency, usually with different workflow depth. |
| Release Policy | Published rules for when each release type is used, with required controls and milestones. |
| Release Calendar | Planned milestones for development, testing, approvals, and production transition. |
| Baseline | Snapshot of exact versions of binaries, configs, docs, and related configuration items. |
| Build | Operational output produced from source and dependencies; not every build is released. |
| Deployment Unit | Self-contained installable deliverable (for example, package, image, or installer). |
How a controlled release moves from RFC to production
A practical release flow links governance (RFC and CAB), engineering outputs (build and package), and operational safety (acceptance validation and rollback).
flowchart LR
A[RFC submitted] --> B[CAB review]
B --> C{Approved}
C -- No --> D[Rework RFC]
C -- Yes --> E[Add to release package]
E --> F[Build deployment unit]
F --> G[Test in acceptance]
G --> H{Go live decision}
H -- No --> I[Execute rollback]
H -- Yes --> J[Deploy to production]
J --> K[Publish release notes]
Release types and expected controls
The source identifies Major, Minor, and Emergency release types. The table below shows a common policy pattern you can adapt to your environment.
| Release type | Typical trigger | Control depth | Rollback readiness |
|---|---|---|---|
| Major | Large feature set, architectural change, or broad impact | Full planning, broad testing, formal approvals, detailed communications | Pre-tested rollback runbook and explicit go or no-go criteria |
| Minor | Routine enhancements and low-risk fixes | Standard test suite, standard approvals, regular release window | Documented rollback steps validated in pre-production |
| Emergency | Incident mitigation or critical vulnerability fix | Accelerated approvals with mandatory post-release review | Fast, rehearsed rollback or mitigation path required |
Define a release package as a deployable contract
A release package should combine business intent (RFCs), technical content (deployment units and baseline), and operational instructions (deployment and rollback runbooks). Storing this metadata in version control improves traceability and handoffs.
Example release manifest
release:
id: '2026.04-minor-01'
type: 'minor'
product: 'payments-api'
rfc_ids:
- 'RFC-1421'
- 'RFC-1430'
baseline:
git_tag: 'release-2026.04.1'
config_version: 'config-2026.04'
deployment_units:
- 'payments-api-2026.04.1.jar'
- 'db-migration-2026.04.1.sql'
environments:
- 'uat'
- 'production'
runbooks:
deploy: 'runbooks/deploy.md'
rollback: 'runbooks/rollback.md'
approvals:
cab: 'approved'
release_manager: 'approved'Code language: JavaScript (javascript)
Example release artifact commands
git checkout main
git pull --ff-only
git tag -a release-2026.04.1 -m 'Minor release 2026.04.1'
git push origin release-2026.04.1
mkdir -p release-2026.04.1
cp release-notes.md install-runbook.md rollback-runbook.md release-2026.04.1/
cp -r deploy/ release-2026.04.1/
tar -czf release-2026.04.1-package.tgz release-2026.04.1/Code language: JavaScript (javascript)
Use integrated tooling across configuration, change, and deployment
The original guidance recommends minimizing manual work and connecting release tools end to end. At minimum, version release inputs and outputs, track change approvals, and automate environment transitions.
| Tool category | Primary purpose | Examples referenced in the original post |
|---|---|---|
| Configuration management / version control | Version source, scripts, build outputs, and release documentation | Perforce, Subversion, ClearCase, TFS |
| Change management | Control RFC lifecycle, approvals, and release scope | Any workflow-capable change tool |
| Deployment management | Promote and install deployment units consistently across environments | Any automated deployment toolchain |
Clarify responsibilities and separation of duties
The source emphasizes independent control for production transitions. Whether implemented through separate teams or policy gates, document who can approve, package, and deploy each release type.
| Role | Owns | Should not own alone |
|---|---|---|
| Development team | Code changes, unit tests, build fixes, technical docs | Unreviewed direct production deployment |
| Release management team | Release calendar, package composition, coordination, release notes | Feature prioritization without product or business input |
| Deployment or operations team | Environment readiness, controlled rollout, rollback execution, deploy evidence | Changing release scope at deploy time without approval |
Best practices checklist
- Publish regular release dates and keep a visible release calendar.
- Require a tested rollback plan for every production release.
- Document release policy, release types, milestones, and responsibilities.
- Build deployment units early and repeatedly, not only at release time.
- Test deployment steps at least once in an acceptance-like environment.
- Version control release artifacts, scripts, notes, and runbooks together.
- Automate repetitive build, packaging, and deployment steps.
- Trace every production deployment back to RFCs and a baseline tag.
- Link documentation and configuration instructions to each deployment unit.
- Review each release outcome and feed lessons into the next cycle.
Strong SCRM is less about one tool and more about clear policy, repeatable workflow, traceable artifacts, and tested rollback. When those elements are in place, release reliability improves.
I’m Rajesh Kumar, a DevOps, SRE, DevSecOps, Cloud, and Platform Engineering expert passionate about sharing practical knowledge, real-world experiences, and industry best practices. I have worked at Cotocus and regularly write about technology, travel, investing, health, product reviews, and digital marketing through my various platforms.
I publish technical articles at DevOps School, travel stories at Holiday Landmark, stock market insights at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at TrueReviewNow, and SEO and digital marketing strategies at Wizbrand.
Find Trusted Cardiac Hospitals
Compare heart hospitals by city and services — all in one place.
Explore Hospitals