Markdown Editor

Architecture Decision Log Template (ADR Register)

Decision register with status, level, deciders, drivers, record links; superseded, pending (need-by), rejected, waivers, dependencies, RACI, review metrics

ArsitekturLengkapNygard ADR practice; MADR 4.0.0 statuses; ISO/IEC/IEEE 42010:2022 rationaledecisionlog

Cara menggunakan: Use it when a solution or programme makes many architecture decisions and needs one status board that links to the individual ADRs. Fix the statuses, levels and significance test first, then log every decision, including pending ones with a need-by date. The main pitfall is deleting or rewriting reversed decisions instead of marking them superseded.

Pratinjau

Architecture Decision Log: [Solution, programme or domain name]

Architecture decision log (ADL): the register of every significant architecture decision for one solution, programme or domain, one line per decision, with its status, owner, date, drivers and a link to the full decision record. It also tracks superseded decisions, pending decisions with the date by which they must be made, rejected proposals, waivers and dispensations, decision dependencies and the review cadence. It follows the practice of architecture decision records popularised by Michael Nygard (2011) and collected at adr.github.io, and treats decisions and their rationale as part of the architecture description in the sense of ISO/IEC/IEEE 42010:2022. Replace every [bracketed] value and every row marked Example.

Document control

FieldValue
Document ID[ADL-001]
Scope[Solution / Programme / Domain name]
Decision forum[Design authority / Architecture review board / Technical design forum]
Record location[Repository path, for example docs/decisions/]
Record format[ADR (Full) / MADR 4.0.0 / Nygard ADR]
Version[1.0]
Status[Active / Closed]
Owner[@lead-solution-architect]
Approvers/reviewers[@enterprise-architect], [@engineering-lead], [@security-architect]
Last reviewedYYYY-MM-DD
Next reviewYYYY-MM-DD
Last updatedYYYY-MM-DD
Classification[Internal / Confidential]

Approvals

RoleNameDecisionDate
Log owner[@name][Submitted]YYYY-MM-DD
Chair of the decision forum[@name][Approve decision rights and process]YYYY-MM-DD
Enterprise architecture[@name][Decision]YYYY-MM-DD

Revision history

VersionDateAuthorChange summary
1.0YYYY-MM-DD[@name]Log opened with conventions and first decisions
1.1YYYY-MM-DD[@name]Example: Review: ADR-007 accepted, ADR-001 superseded, WVR-001 renewed
1.2YYYY-MM-DD[@name]Example: Review: two pending decisions added for release 2

Contents

1. Purpose and scope

1.1 Purpose

This log gives everyone working on [scope] one place to see what has been decided, by whom, when and why, what is still open and what has been reversed. It lets new team members, reviewers, auditors and the teams that will run the solution understand the reasoning behind the architecture without reconstructing it from meeting notes.

1.2 Scope

In this logElsewhere
Example: Decisions that affect more than one component or team of the Order HubDecisions inside one component: the component team's LLD or its own ADR folder
Example: Technology choices, integration styles, data ownership, hosting and resilience patternsEnterprise-wide standards: the enterprise decision log or Tech Radar (architecture/tech-radar)
Example: Deviations from enterprise principles for this solution (section 9)Product and scope decisions: product backlog and change control
[Item][Where]

2. Conventions

2.1 Identifiers and fields

  • Decision ID: ADR-NNN, numbered in order of creation, never reused.
  • Waiver ID: WVR-NNN. Pending decisions keep their ADR-NNN from the moment they are logged as Proposed.
  • Each row carries: ID, title in active voice ("Use X for Y"), category, level, status, decision date, owner, deciders, drivers (requirement, principle or risk IDs), affected elements, record link and review date.

2.2 Statuses

StatusMeaningAllowed next status
ProposedRaised and being analysed; has a need-by dateAccepted, Rejected, Withdrawn
AcceptedRatified by the deciders; binding for designs in scopeDeprecated, Superseded
RejectedConsidered and turned down; kept so it is not reopened without new factsNone (raise a new decision)
WithdrawnDropped before a decision because the question no longer appliesNone
DeprecatedNo longer recommended for new work but still in placeSuperseded
SupersededReplaced by a named later decisionNone

2.3 Categories and levels

Category codeCovers
STRStructure: decomposition, boundaries, patterns
INTIntegration: styles, protocols, contracts, brokers
DATData: stores, ownership, consistency, retention
TECTechnology: languages, frameworks, products, services
INFInfrastructure and hosting: regions, platforms, network
SECSecurity and identity
RESResilience, availability and recovery
OPSOperations, observability, deployment
SRCSourcing: build, buy, reuse, vendor

Levels: E enterprise (affects other solutions; ratified by the architecture review board), S solution (affects several components of this solution; ratified by the design authority), C component (affects one component; logged here only when other teams depend on it).

2.4 Significance test

Write a full decision record when any of these apply; otherwise a log row with a one-line rationale is enough:

  • reversing it later would cost more than [N person-weeks or amount];
  • it changes how two or more teams work or integrate;
  • it is the main tactic for a Must NFR;
  • it introduces a technology not on the approved list;
  • it deviates from an enterprise principle or standard (also raise a waiver);
  • it has a security, privacy, regulatory or contractual consequence;
  • it commits spend or a vendor relationship above [amount].

3. Decision rights and roles

ActivitySolution architectComponent tech leadDesign authorityArchitecture review boardSecurity architectProduct ownerOperations
Raise a decisionRRCIRCR
Analyse options and write the recordARCICCC
Decide level CCAIICII
Decide level SRCAICCC
Decide level ERICACIC
Approve a waiver, level E (enterprise principle or standard)RICACII
Approve a waiver, level S or C (solution or component standard)RCAICII
Communicate and update designsARIIIII

R responsible, A accountable, C consulted, I informed. Example: one accountable role per row; adjust the columns to your organisation.

4. Decision log

IDTitleCat.LevelStatusDateOwnerDecidersDriversAffectsRecordReview by
ADR-001 (Example)Run a self-managed message broker on virtual machinesINTSSuperseded by ADR-007YYYY-MM-DD@integration-leadDesign authorityNFR-RE-001, costIF-003[link]Not applicable
ADR-002 (Example)Use a managed relational database for order dataDATSAcceptedYYYY-MM-DD@solution-architectDesign authorityNFR-RE-002, NFR-FS-001CMP-002[link]YYYY-MM-DD
ADR-003 (Example)Publish order events with the transactional outbox patternINTSAcceptedYYYY-MM-DD@orders-leadDesign authorityNFR-RE-004CMP-002, IF-003[link]YYYY-MM-DD
ADR-004 (Example)Create payment intents synchronously with a 350 ms p95 budget and 450 ms timeoutINTSAcceptedYYYY-MM-DD@payments-leadDesign authorityNFR-PE-001CMP-002, CMP-003, IF-002, IF-005; waiver WVR-001[link]YYYY-MM-DD
ADR-005 (Example)Authenticate service-to-service calls with federated workload identitiesSECEAcceptedYYYY-MM-DD@security-architectArchitecture review boardNFR-SE-004, zero trust principleAll components[link]YYYY-MM-DD
ADR-006 (Example)Offer a GraphQL public API for partnersINTSRejectedYYYY-MM-DD@solution-architectDesign authorityNFR-CO-002IF-001[link]Not applicable
ADR-007 (Example)Use the provider's managed message broker serviceINTSAcceptedYYYY-MM-DD@integration-leadDesign authorityNFR-RE-001, NFR-OP-004IF-003[link]YYYY-MM-DD
ADR-008 (Example)Deploy in two regions, active and warm standbyRESSAcceptedYYYY-MM-DD@solution-architectDesign authorityNFR-RE-002, NFR-CT-001Platform, database[link]YYYY-MM-DD
ADR-009 (Example)Select the search technology for order searchTECSProposedNot applicable@orders-leadDesign authorityNFR-PE-003CMP-002[draft link]Need by YYYY-MM-DD
ADR-010 (Example)Buy or build the feature flag serviceSRCEProposedNot applicable@platform-leadArchitecture review boardNFR-OP-002All components[draft link]Need by YYYY-MM-DD
[ADR-NNN][Title][Cat.][E / S / C][Status]YYYY-MM-DD[@owner][Forum][IDs][Elements][Link]YYYY-MM-DD

5. Decision summaries

IDSummary
ADR-002 (Example)In the context of order capture, facing strict recovery objectives and the need for transactional consistency, we chose a managed relational database over a document store and a self-managed cluster, to get point-in-time recovery and cross-region replicas with low operating effort, accepting vendor coupling and a per-hour cost.
ADR-003 (Example)In the context of event publication from the order service, facing the risk of lost or phantom events when database and broker writes diverge, we chose the transactional outbox over dual writes and change data capture, to guarantee that every committed change is published, accepting at-least-once delivery and the need for idempotent consumers.
ADR-004 (Example)In the context of checkout, facing a customer who waits for a payment redirect, we chose a synchronous intent call with a 350 ms p95 budget and a 450 ms timeout at the measured p99, with no inline retry, over an asynchronous request and poll, to keep the journey simple while the timeout path still fits the 800 ms minimum (50 + 300 + 450 ms), accepting about 1 % client retries and a direct runtime dependency on the provider (covered by WVR-001).
ADR-007 (Example)In the context of order events, facing the operating load and patching gaps of the self-managed broker, we chose the managed broker service over keeping ADR-001, to meet availability with less effort, accepting a migration of topics and consumer configuration.
ADR-008 (Example)In the context of regional outages, facing an RTO of 1 hour and a cost ceiling, we chose active and warm standby over active-active, to meet recovery objectives at about [x] % of the active-active cost, accepting a manual failover decision.
[ADR-NNN][Summary]

6. Superseded and deprecated decisions

IDStatusReplaced byReasonMigration stateCompletion date
ADR-001 (Example)SupersededADR-007Patching effort and two unplanned outages in testTopics moved; consumers in progress (3 of 4)YYYY-MM-DD
[ADR-NNN][Status][ADR-NNN][Reason][State]YYYY-MM-DD

7. Pending decisions

IDQuestionOptions under studyNeed byBlocksDefault if lateOwnerState
ADR-009 (Example)Which search technology serves order search?Database full-text, managed search service, embedded libraryYYYY-MM-DDLLD-002 section 6, sprint [n]Database full-text for release 1@orders-leadSpike running
ADR-010 (Example)Buy or build feature flags?SaaS product, open-source self-hosted, in-houseYYYY-MM-DDRollout plan in HLD section 13Configuration flags without targeting@platform-leadBuild vs Buy Analysis (architecture/build-vs-buy-analysis) in progress
[ADR-NNN][Question][Options]YYYY-MM-DD[What waits][Fallback][@owner][State]

8. Rejected and withdrawn proposals

IDProposalStatusReasonReconsider if
ADR-006 (Example)GraphQL public API for partnersRejectedPartners asked for REST; no team has GraphQL operating experience; caching and rate limiting harder at the gatewayThree or more partners request flexible queries
[ADR-NNN][Proposal][Rejected / Withdrawn][Reason][Condition]

9. Waivers and dispensations

IDDeviates fromDecisionJustificationCompensating measuresApproved byExpiresState
WVR-001 (Example)Integration standard: calls to external providers go through a queueADR-004Customer waits for the redirect; a queue adds latency beyond NFR-PE-001Circuit breaker, timeout, pending-order expiry, provider SLA monitoringArchitecture review boardYYYY-MM-DDActive
WVR-002 (Example)Standard logging libraryComponent CMP-004 uses the vendor adapter's built-in loggerVendor adapter cannot load the standard libraryLog format mapped to the standard schema at the collectorDesign authorityYYYY-MM-DDActive, review at vendor upgrade
[WVR-NNN][Principle or standard][ADR ID][Why][Measures][Forum]YYYY-MM-DD[Active / Expired / Closed]

Enterprise compliance checks: Architecture Compliance Assessment (architecture/architecture-compliance-assessment).

10. Decision dependencies

Arrows point from a decision to the decisions that depend on it.

DecisionDepends onIf the upstream decision changes
ADR-003 (Example)ADR-002, ADR-007Outbox relay must be redesigned for a new store or broker
ADR-008 (Example)ADR-002Cross-region replication approach changes
ADR-009 (Example)ADR-003Search index fed from order events; a different event path changes indexing
[ADR-NNN][ADR IDs][Consequence]

11. Traceability

DecisionDriversPrinciplesImplemented inVerified by
ADR-003 (Example)NFR-RE-004Single writer per data entityHLD section 7, LLD-002 sections 6 and 10IT-ORD-002
ADR-004 (Example)NFR-PE-001Integration standard on queued provider calls (waived, WVR-001)HLD sections 6 and 9, LLD-002 sections 5, 11 and 14, LLD-003PT-01, PT-ORD-01
ADR-008 (Example)NFR-RE-002, NFR-CT-001Design for failureHLD sections 8 and 11DR-01
[ADR-NNN][NFR or risk IDs][Principle][Documents][Test or review]

Drivers come from the NFR Catalogue (requirements/nfr-catalogue) and Architecture Principles (architecture/architecture-principles).

12. Review cadence and health metrics

ReviewWhenWhoChecks
Log review (Example)Every two weeks during design, monthly in deliveryLog owner and component leadsNew decisions logged, pending need-by dates, status changes
Design authority (Example)MonthlyDesign authorityRatify Proposed level S decisions with records; approve level S and C waivers; refer level E waivers to the architecture review board
Decision revalidation (Example)Each Accepted decision on its review date, at least yearlyDecision ownerDrivers still valid, assumptions still true, cost as expected
Release gate (Example)Before each major releaseSolution architectNo pending decision blocks the release; waivers in date
[Review][When][Who][Checks]
MetricDefinitionTarget (Example)
Overdue pending decisionsProposed rows past their need-by date0
Decision lead timeMedian days from Proposed to Accepted or RejectedUnder 15 working days
Record coverageAccepted decisions that pass the significance test and have a full record100 %
Stale decisionsAccepted rows past their review date0
Expiring waiversActive waivers expiring within 30 days without a renewal request0
Reopened decisionsDecisions reopened without new facts in the last quarter0

13. Decision process

  1. Raise. Anyone adds a Proposed row with a question, owner and need-by date (section 7).
  2. Frame. The owner lists drivers (NFR IDs, principles, risks, constraints) and at least two realistic options, including "do nothing" where it is viable. For sourcing questions, use Build vs Buy Analysis (architecture/build-vs-buy-analysis) or Solution Options Analysis (architecture/solution-options-analysis).
  3. Analyse. The owner writes the record in the chosen format and consults the roles in section 3. For decisions that trade qualities against each other, use scenarios from Quality Attributes (requirements/quality-attributes) or an ATAM Evaluation (architecture/atam-evaluation).
  4. Decide. The accountable forum ratifies, rejects or asks for more analysis, and the row status changes on the same day.
  5. Communicate. The owner updates the HLD, SAD and affected LLDs, informs dependent teams and, if a principle is not followed, raises a waiver (section 9).
  6. Revisit. On the review date or when a driver changes, the owner confirms the decision or raises a new decision that supersedes it.

Architecture changes that need board approval: Architecture Change Request (architecture/architecture-change-request); review submissions: Architecture Review Request (architecture/architecture-review-request).

14. Glossary and references

14.1 Glossary

TermMeaning
Architecture decisionA choice about structure, technology or quality tactics that is costly to change and affects the system as a whole or several parts
Decision record (ADR)Short document that captures one decision with its context, options, outcome and consequences
Decision logThe collection of decisions for a scope, with their status
SupersedeReplace an accepted decision with a later one that is now binding
WaiverApproved, time-limited deviation from a principle or standard
Last responsible momentThe latest date a decision can be made before a valuable option is lost or delivery is blocked
Y-statementOne-sentence decision summary naming context, concern, choice, rejected options, benefit and accepted downside
[Term][Meaning]

14.2 References

IDReferenceVersion or dateUse
REF-01Michael Nygard, "Documenting Architecture Decisions", Cognitect blog15 November 2011ADR practice and statuses
REF-02Architectural Decision Records, adr.github.ioChecked 2026-10-23Decision log concept, templates overview
REF-03MADR, Markdown Architectural Decision Records, adr.github.io/madr4.0.0, 17 September 2024Record format and statuses
REF-04U. Zdun, R. Capilla, H. Tran, O. Zimmermann, "Sustainable Architectural Design Decisions", IEEE Software 30(6)2013Y-statement summary format
REF-05ISO/IEC/IEEE 42010:2022, Software, systems and enterprise: Architecture descriptionEdition 2, November 2022Decisions and rationale within an architecture description
REF-06ADR (Full) (architecture/adr-full) and MADR (dev/madr)This collectionRecord templates

Standard and licence note

Based on the architecture decision record practice described by Michael Nygard (2011) and collected at adr.github.io, with record statuses compatible with MADR 4.0.0 (MIT OR CC0-1.0) and the Y-statement summary format from Zdun et al. (IEEE Software, 2013). Structure aligned with the treatment of architecture decisions and rationale in ISO/IEC/IEEE 42010:2022; only concept names are used and no text, definitions or tables are reproduced from the standard. This template is original text written for this collection. Check the current versions at adr.github.io and iso.org before use. Template licence: MIT.

Templat terkait