Appearance
Architecture Decision Records (ADR) Index
Section: 18 — ADR
Last Updated: 2026-05-30
Scope: All architectural decisions for Microtec ERP
What is an ADR?
An Architecture Decision Record (ADR) captures a significant architectural decision: the context that led to it, the decision itself, and its consequences. ADRs are immutable — once accepted, they are never deleted, only superseded by newer ADRs.
ADR format used in this project:
- Status: Proposed / Accepted / Deprecated / Superseded
- Context: What situation led to this decision?
- Decision: What was decided?
- Consequences: What are the positive and negative outcomes?
ADR Index
| ADR | Title | Status | Date |
|---|---|---|---|
| ADR-001 | Microservices Architecture with Clean Architecture per Service | Accepted | 2023-Q1 |
| ADR-002 | Azure Container Apps as Container Runtime | Accepted | 2023-Q2 |
| ADR-003 | Database-Per-Tenant Multi-Tenancy Strategy | Accepted | 2023-Q2 |
| ADR-004 | Keycloak as Identity Provider over Azure AD B2C | Accepted | 2023-Q3 |
| ADR-005 | Azure Service Bus over RabbitMQ for Messaging | Accepted | 2024-Q1 |
| ADR-006 | Split God Package into 16 Focused NuGet Packages | Accepted | 2024-Q2 |
| ADR-007 | Migrate from Ocelot to YARP Gateway | Accepted | 2024-Q3 |
| ADR-008 | Dual-Token Design for ERP Business Context | Accepted | 2024-Q1 |
| ADR-009 | Fooj Stage+Prod Shared NAT Gateway | Accepted | 2026-04 |
Decision Summary
Superseded Decisions
| Superseded ADR | Superseded By | Reason |
|---|---|---|
| Ocelot Gateway (pre-ADR-007) | ADR-007 (YARP) | YARP better performance, active Microsoft support |
| RabbitMQ messaging (pre-ADR-005) | ADR-005 (ASB) | Managed service, no self-hosting overhead |
| God Package (pre-ADR-006) | ADR-006 (16 packages) | Faster builds, independent versioning |
How to Add a New ADR
- Create a new file:
18-adr/ADR-0XX-short-name.md - Use the standard template:
markdown
# ADR-0XX: [Title]
## Status
Proposed | Accepted | Deprecated | Superseded by ADR-0YY
## Date
YYYY-MM-DD
## Context
[What situation or problem led to this decision?]
## Decision
[What was decided?]
## Consequences
### Positive
- ...
### Negative
- ...
### Neutral
- ...- Add a row to the ADR Index table above
- If superseding a previous ADR, update its status to
Superseded by ADR-0XX