Skip to main content
Loading...
wiki

Architecture Decision Record

This Architecture Decision Record template documents a concluded technical choice, its context, alternatives, trade-offs, and revisit triggers. Use it to help maintainers understand why a system works as it does and when the reasoning may need review.

Every employee gets a seat — priced per employee in Communications & Intranet, quoted with this template ready.

Rolled out to every employee at AutoZone (125,000), PetSmart (50,000+), A.S. Watson and Raley's (20,000) — and at larger retailers we are not permitted to name.

Built for: Software and technology · Financial services technology · Healthcare technology · E-commerce and retail technology

Overview

The Architecture Decision Record page is a filled-in wiki example for documenting one concluded technical choice. Its fictional Harborlight product team chooses asynchronous event delivery for a non-critical inventory-summary update. The page establishes the decision's scope, explains the workflow and constraints, compares a direct synchronous call, an asynchronous event, and a scheduled batch refresh, then describes consequences for maintainers. It also lists observable conditions that should prompt review, including changed traffic, new latency needs, repeated delivery failures, dependency changes, and scope changes.

Use this template when a decision has meaningful trade-offs that future engineers need to understand: why an option was selected, what assumptions it depends on, what operational work it creates, and what it does not solve. The example makes an important distinction: the inventory change is recorded in the original workflow, while the separate summary may update later. That scope prevents readers from mistaking the record for a broader event-platform standard or a statement about inventory correctness.

Do not use the page as an open proposal, approval log, implementation tracker, or live system status. Before publishing, replace the fictional details with verified facts, identify the accountable team or owner, and point to related records only where your knowledge site has real destinations. A trigger starts a review; it does not itself authorize an architecture change. Keep the record useful by correcting outdated assumptions and creating a separate linked record when a new consequential decision is made.

Standards & compliance context

  • Treat the sample as fictional technical documentation, not evidence of an organization's approved design, control, or implementation.
  • For decisions that affect regulated systems, have the responsible engineering and compliance reviewers assess applicable requirements; this template does not establish compliance.
  • Keep access to architecture details aligned with organizational information-handling rules, especially where system details are sensitive.
  • Use semantic headings and the page's table of contents to support navigation, and check the published page for WCAG 2.1 AA accessibility.

General regulatory context for orientation only — verify current requirements with counsel or the relevant agency before relying on this template for compliance.

What's inside this template

Decision at a glance

Start with the fictional decision, its intended benefit, and the boundaries of what it does and does not decide.

  • A durable record for the choice that was made Fictional example: The Harborlight product team chose asynchronous event delivery for a non-critical inventory-summary update. This record shows how to preserve the reasoning so maintainers can understand the choice later. An architecture decision record captures a concluded decision and its rationale. It is not an open proposal or a task queue. The key outcome here is to keep the inventory update from slowing the requesting workflow, while accepting the added work of handling delayed or repeated events. Scope: delivery of a summary update after an inventory change. The decision does not define inventory correctness, customer-facing availability promises, or a broader event-platform standard.

On this page

Use these links to move directly among the decision context, alternatives, consequences, and review triggers.

Context and constraints

Understand the workflow and assumptions that make delayed summary updates acceptable in this example.

  • What the team was solving In the fictional example, the product workflow records an inventory change and then updates a separate summary view. The team wanted the original workflow to finish without waiting for that summary update. The summary can arrive later; it is not the transaction that records the inventory change. The decision assumes the summary can tolerate delay and that maintainers can identify, retry, and investigate events that are not delivered as expected. If either assumption stops being true, the rationale needs review.

Alternatives considered

Compare the three illustrative delivery options by benefit, trade-off, and reason for the decision.

  • Illustrative comparison for the fictional inventory-summary update; not a live system record. Option Benefit Trade-off Reason Direct synchronous call The summary update is attempted within the original request. The request waits on the summary dependency; dependency delays can affect the caller. Not selected because the summary does not need to hold up the inventory-change workflow. Asynchronous event The original workflow can finish without waiting for the summary consumer. Adds delivery, retry, duplicate-handling, and observability responsibilities. Selected because delayed summary updates are acceptable in this example and the team accepts the additional operational complexity. Scheduled batch refresh Groups summary work into periodic processing. Updates wait for the next batch and the batch process needs monitoring. Not selected because the team wanted updates to follow changes without waiting for a scheduled run.

Worked example: the decision and its consequences

See what the selected approach requires maintainers to operate and which questions remain outside its scope.

  • Why asynchronous delivery fit this case The team records an inventory change and emits an event for the separate summary view to consume. The original workflow does not wait for that consumer. The decision is appropriate only while the summary can be delayed and the team can operate the delivery path. Consequences for maintainers: Track whether events are produced and consumed, and make delivery failures discoverable. Design the consumer to handle a repeated event without applying the same summary change twice. Make retry and recovery behavior understandable to the people supporting the service. Accept that the summary may temporarily lag behind the recorded inventory change. Not solved by this decision: the authoritative inventory record, the correctness rules for the summary, and the product response when the summary is delayed. Those questions need their own context and decision if they become consequential.

Revisit triggers

Check the concrete changes that should prompt a review without treating them as automatic approval to change the design.

  • A trigger starts review; it does not automatically change the decision Traffic changes: measured event volume or consumer load no longer fits the team's operating assumptions. New latency need: a product requirement makes the current delay in the summary unacceptable. Repeated delivery failures: incident or support records show recurring failures that the current recovery approach does not address. Dependency changes: the event broker, consumer, or delivery path changes in a way that invalidates the original trade-off. Scope changes: the summary becomes part of a workflow that cannot safely tolerate delayed updates. When a trigger occurs, compare the current conditions with the recorded assumptions, then capture any new decision and rationale as a separate, linked record in the organization's chosen knowledge location.

Questions maintainers ask

Use these answers to distinguish a decision record from a proposal, approval workflow, implementation tracker, or live system record.

  • Use the record to understand the choice, then follow the appropriate team handoff. How is this different from a proposal? A proposal asks people to evaluate options before a decision is made. This record describes a concluded choice, why it was selected, what it means for maintainers, and what conditions could prompt review. What makes the rationale useful later? Name the problem, scope, constraints, alternatives, trade-offs, and assumptions in terms a maintainer can check. In the example, the central assumption is that the summary may lag and is not part of the inventory-change transaction. What should I do if a trigger occurs or the record seems wrong? Bring the changed condition or correction to the team accountable for the affected system or decision record. Compare it with the recorded assumptions; do not treat a trigger as automatic authorization to change the architecture. Does this record prove that a decision was approved or implemented? No. This page explains a decision and its reasoning. It does not record an approval workflow, implementation status, or live system state.

How to use this template

  1. Copy the wiki page and replace the fictional Harborlight scenario with the actual system, decision, and scope.
  2. Write the problem, constraints, and assumptions so a maintainer can verify what conditions the decision depends on.
  3. Compare the realistic alternatives, including each option's benefit, trade-off, and reason for selection or rejection.
  4. Describe the selected decision's operational consequences and explicitly name questions it does not resolve.
  5. Set observable revisit triggers and identify the team or owner responsible for reviewing a trigger or correcting the record.
  6. Publish the record in your chosen knowledge location and add links only to existing related decisions, proposals, or implementation records.

Best practices

  • State the decision's scope early so readers do not apply it to adjacent systems or broader architecture standards.
  • Describe assumptions in terms a maintainer can check, such as whether a summary may lag behind its source transaction.
  • Compare alternatives against the same constraints and explain why each option was selected or rejected.
  • List operational responsibilities created by the choice, including event visibility, retry and recovery behavior, and duplicate handling when relevant.
  • Write revisit triggers as observable changes, such as recurring delivery failures or a new requirement that makes delay unacceptable.
  • Separate the decision from unresolved questions, implementation status, and approval evidence.
  • Mark sample content as fictional and replace it with confirmed system details before presenting the page as an organizational record.
  • Keep one authoritative record for each decision and link to it from related pages rather than maintaining competing copies.

What this template typically catches

Issues teams running this template most often surface in practice:

A decision is presented without enough context to explain the constraint it addresses.
The selected option is named, but rejected alternatives and their trade-offs are omitted.
An assumption, such as tolerance for delayed updates, is not stated in a way maintainers can verify.
Retry, recovery, duplicate handling, or event observability responsibilities are left unclear.
A revisit trigger is vague, so maintainers cannot tell when review is warranted.
A trigger is mistaken for automatic authorization to change the architecture.
The record is treated as proof of approval or implementation even though it documents neither.
Fictional sample details remain in a published organizational decision, or the record has no clear owner for corrections.

Common use cases

Backend maintainer documenting event delivery
Record why a non-critical downstream summary can update asynchronously, what delivery and recovery responsibilities follow, and which conditions would make the trade-off unsuitable. The Harborlight inventory example demonstrates this structure without prescribing it for other systems.
Platform engineer comparing integration patterns
Use the alternatives section to explain a choice among synchronous calls, events, and scheduled processing against a specific workflow's latency and operating constraints. Keep the record scoped to that decision rather than turning it into a platform-wide standard.
Engineering lead preparing future maintainers
Capture the context, consequences, and explicit non-goals that a new maintainer needs before changing a service. Add a real owner and knowledge-location link during customization so questions and corrections have a practical handoff.
Service team reviewing an existing decision
Compare current conditions with the record's stated triggers, such as changed load, recurring failures, or a new product latency requirement. If the original rationale no longer holds, review the choice and document any new decision separately.

Frequently asked questions

When should we create an Architecture Decision Record?

Create one after the team makes a consequential technical decision whose rationale may matter to future maintainers. The example covers asynchronous delivery for an inventory-summary update, including why delay is acceptable and what operating responsibilities follow. Use a separate record for a distinct decision rather than extending this example beyond its stated scope.

Who should write and maintain the record?

A maintainer or decision owner familiar with the affected system can draft it, using the team's actual constraints and alternatives. The page does not assign a specific owner or approval process, so your team should identify who is accountable for corrections and review. Ask affected maintainers to check whether the assumptions and consequences are understandable.

How often should an architecture decision be reviewed?

The template does not set a calendar cadence. Revisit the record when a stated trigger occurs, such as a changed latency requirement, recurring delivery failures, altered dependencies, or a scope change. Teams may also set a periodic review schedule in their own knowledge-management process.

Is this a proposal, approval record, or implementation tracker?

No. It documents a concluded choice and its reasoning; it is not an open proposal, approval workflow, implementation status, or live system record. The example explicitly says it does not prove that a decision was approved or implemented. Link to the appropriate proposal or delivery record in your knowledge location when those records exist.

Does the example prescribe an event-driven architecture?

No. Asynchronous event delivery is a fictional example for a non-critical inventory-summary update, not a general recommendation. Its fit depends on whether delay is acceptable and whether the team can manage delivery failures, retries, duplicate events, and observability. Record your own context and compare viable alternatives.

What should we customize before publishing?

Replace the fictional scenario with the actual decision, affected scope, constraints, alternatives, selected rationale, and consequences for maintainers. State assumptions in terms that can be checked and name concrete conditions that should prompt review. Keep unresolved questions separate from the concluded decision so readers do not mistake an open proposal for an adopted choice.

Does this template integrate with an issue tracker or architecture tool?

The supplied page is a static wiki-style reference and contains no configured live block or integration. It does not create tickets, track implementation, or link records automatically. Add links only to destinations available in your site, such as the authoritative decision location or related work records.

How should we roll this out across engineering teams?

Start with one consequential decision and ask maintainers from the affected system to review its clarity. Agree where records live, how readers find related decisions, and who handles corrections or triggered reviews. Share the page as a filled-in example, while making clear that the Harborlight inventory scenario is fictional.

What common mistake makes an ADR hard to use later?

A frequent pitfall is recording the chosen technology without the constraints, rejected alternatives, or conditions that made it suitable. Another is treating a revisit trigger as an automatic instruction to change the system. Use the context, trade-offs, and triggers together, and make the responsible review handoff clear.

Go deeper on the topic

Related concepts
  • A modern intranet is a specific surface — typically the home-base destination where employees get company news, find policies, and access key apps. A digital...

Ready to use this template?

Every employee gets a seat. Request pricing for Communications & Intranet and we quote into a workspace with Architecture Decision Record ready.

Request pricing

Rolled out to every employee at AutoZone (125,000), PetSmart (50,000+), A.S. Watson and Raley's (20,000) — and at larger retailers we are not permitted to name.