Architecture Decision Records (ADRs)

This directory contains architecture decisions for the iDempiere CLI.


Active ADRs

Core Architecture

ADR Title Status Date
001 iDempiere Version Compatibility Strategy Accepted 2024-11-29
002 CLI Plugin Architecture Proposed 2024-11-29
003 Generator Architecture - Adopting Nx Patterns Accepted 2025-11-29
019 CLI Command Structure Redesign Proposed 2025-12-07
028 CLI Error Handling and Exit Codes Proposed 2025-12-07
029 AI-Powered Plan Mode (Vibe Mode) Proposed 2025-12-07
030 CLI Design Guidelines (clig.dev) Proposed 2025-12-07
048 iDempiere AI Hub Architecture (3 Interfaces) ✅ Implemented 2025-12-11
055 Tool Ecosystem Architectural Review ✅ Implemented 2025-12-15
057 Project Rename to iDempiere Hub ✅ Implemented 2025-12-12
058 Logging and Configuration Architecture 🟡 Proposed 2025-12-15
063 Hub Storage Adapter Service 🟡 Proposed 2025-12-19
064 Generator Output Directory Configuration ✅ Accepted 2025-12-19
065 Credentials and Secrets Management 🟡 Proposed 2025-12-19
066 Generator Output Modes (ECS/S3/GitHub) ✅ Implemented 2025-12-19

Application Dictionary

ADR Title Status Date
004 Enhanced Table Creation Implemented 2025-11-29
005 iDempiere Migration Script Architecture Implemented 2025-11-30
008 Application Dictionary Registry Implemented 2025-11-30
017 AD_Element Description Management Proposed 2025-12-06
062 Centralized ID Management Integration 🟡 Proposed 2025-12-18

API & Integration

ADR Title Status Date
006 CLI as M2M API Implemented 2025-11-30
007 Plugin Implementation Plan Implemented 2025-11-30
009 OpenAPI-Based REST Client ✅ Implemented 2025-12-06
060 Apache Camel Integration Evaluation ❌ Rejected 2025-12-17
061 OAuth2 Token Manager with Automatic Refresh 🟡 Proposed 2025-12-17

AI & MCP Integration

ADR Title Status Date
010 MCP Server Plugin Architecture ✅ Implemented 2025-12-01
011 cloudempiere.ai Integration Proposed 2025-12-01
013 LangChain4j Workflow Routing ✅ Implemented 2025-12-06
013-Appendix ADR-013 Integration Analysis - 2025-12-06
014 Heng Sin's idempiere-mcp Evaluation ✅ Accepted 2025-12-06
015 Hybrid REST/SQL Data Tools Facade ✅ Implemented 2025-12-06
016 MCP Security & Tenant Routing Proposed 2025-12-06
018 Mattermost Community Knowledge Integration Proposed 2025-12-06
021 RAG Architecture for Knowledge-Augmented AI ✅ Implemented 2025-12-07
022 Shared Embedding Infrastructure ✅ Implemented 2025-12-07
023 Quarkus LangChain4j Migration ✅ Implemented 2025-12-07
024 AD Metadata Caching Strategy Proposed 2025-12-07
054 AI Tool Architecture Clarity & ToolResult Unification ✅ Implemented 2025-12-11
056 Chat API Cancellation and Timeout ✅ Implemented 2025-12-13
057 AWS Bedrock Integration ✅ Implemented 2025-12-13
067 RAG Text Sanitization and Escaping 🟡 Proposed 2025-12-26

DevOps & Deployment

ADR Title Status Date
034 Deployment History Tracking Proposed 2025-12-08
035 Database Restore Architecture (S3) Accepted 2025-12-08

Implementation Status

ADR Status Code Evidence
ADR-001 ✅ Implemented Maven profiles, IdempiereVersion.java, ADReference.java
ADR-002 ⚠️ Partial PluginCommand.java, plugin/spi/ package
ADR-003 ✅ Implemented GeneratorTree.java, GeneratorSchema.java, GeneratorRegistry.java
ADR-004 ✅ Implemented TableService.java, column templates
ADR-005 ✅ Implemented MigrationScriptCommand.java, MigrationScriptService.java
ADR-006 ✅ Implemented --json flag, JsonOutput.java
ADR-007 ✅ Implemented Plugin SPI framework
ADR-008 ✅ Implemented RegistryCommand.java, RegistryExportCommand.java
ADR-009 ✅ Implemented GeneratedOpenApiFactory.java, 21 APIs, 162 models
ADR-010 ~~Superseded~~ Replaced by ADR-013 (LangChain4j) - mcp/ code deprecated
ADR-011 ❌ Not Started Integration planned
ADR-013 ✅ Implemented AskCommand.java, CliRouterAgent.java, shared tool logic
ADR-014 ✅ Accepted Evaluation decision - not adopting Heng Sin's idempiere-mcp
ADR-015 ✅ Implemented RestDataToolLogic - hybrid REST/SQL data facade
ADR-016 ❌ Proposed SecurityGuard for MCP tenant routing and isolation
ADR-017 ❌ Proposed element describe command for AD_Element documentation
ADR-018 ❌ Proposed Mattermost community knowledge integration
ADR-019 ❌ Proposed CLI Command Structure Redesign - AI/MCP native naming
ADR-021 ✅ Implemented RagService.java, ADMetadataIngestor.java, PGVector integration
ADR-022 ✅ Implemented EmbeddingModelProvider.java, EmbeddingStoreProvider.java
ADR-023 ✅ Implemented Quarkus LangChain4j CDI, CliRouterAgent.java
ADR-024 ❌ Proposed AD metadata caching strategy (Quarkus Cache + file persistence)
ADR-028 ❌ Proposed CLI error handling with exit codes and pre-flight checks
ADR-029 ❌ Proposed AI-powered plan mode for consultants (vibe mode)
ADR-030 ❌ Proposed CLI design guidelines adopting clig.dev standards
ADR-034 ❌ Proposed Deployment history tracking with iDempiere AD + REST API
ADR-035 ✅ Implemented EnvRestoreService.java, S3BackupService.java, DockerPostgresService.java, AWS S3 + Docker
ADR-048 ✅ Implemented Hub architecture: 3 interfaces (CLI 19%, Chat API 4%, MCP 3%), 74% shared infrastructure
ADR-054 ✅ Implemented ToolResult unification (ai/shared), ToolExecutionException for Chat API
ADR-055 ✅ Implemented Connection pooling, SQL consolidation, god object refactoring (5 phases, 5 commits)
ADR-056 ✅ Implemented ChatAgentService timeout handling, graceful shutdown for streaming
ADR-057 ✅ Implemented AWS Bedrock provider support (Claude models via Bedrock)
ADR-057 ✅ Implemented Project renamed from "iDempiere CLI" to "iDempiere Hub" (artifact, docs, branding)
ADR-058 🟡 Proposed Unified error codes (HubErrorCode), @ConfigMapping consolidation, structured logging
ADR-061 🟡 Proposed OAuth2 token manager with automatic refresh, thread-safe access, JWT expiry validation
ADR-062 🟡 Proposed Centralized ID Management integration for AD element creation (developer.idempiere.com)
ADR-063 🟡 Proposed Hub Storage Adapter Service - generic key-value storage with pluggable backends
ADR-064 ✅ Accepted Generator output directory configuration with GITHUB_ROOT and GENERATOR_ROOT_DIR
ADR-065 🟡 Proposed Credentials/secrets management with AWS Secrets Manager, Vault, environment fallback
ADR-066 ✅ Implemented Generator output modes (FILESYSTEM, ARCHIVE, URL, S3, GITHUB, EMAIL) with GeneratorOutputService
ADR-067 🟡 Proposed RAG text sanitization: TextSanitizer.java, URL decode, null byte removal, pg_dump compatibility

ADR Process

We follow the MADR 3.0 (Markdown Any Decision Records) format.

  1. Propose: Use 000-template.md to draft new ADR
  2. Discuss: Review with team
  3. Decide: Update status to Accepted/Rejected
  4. Implement: Link to implementation commits
  5. Update Index: Add to this README

ADR Format (MADR 3.0)

Each ADR includes:


Key Decisions Summary

Core Architecture

ADR-001: iDempiere Version Compatibility

ADR-002: CLI Plugin Architecture

ADR-003: Generator Architecture (Nx Patterns)

ADR-019: CLI Command Structure Redesign

Application Dictionary

ADR-004: Enhanced Table Creation

ADR-005: Migration Script Architecture

ADR-008: Application Dictionary Registry

ADR-017: AD_Element Description Management

ADR-062: Centralized ID Management Integration

ADR-063: Hub Storage Adapter Service

API & Integration

ADR-006: CLI as M2M API

ADR-009: OpenAPI REST Client

AI & MCP Integration

ADR-010: MCP Server Plugin Architecture (Superseded by ADR-013)

ADR-011: cloudempiere.ai Integration

ADR-013: LangChain4j Workflow Routing

ADR-014: Heng Sin's idempiere-mcp Evaluation

ADR-015: REST Data Tools Facade

ADR-016: MCP Security & Tenant Routing

ADR-018: Mattermost Community Knowledge Integration


Document Purpose
CLAUDE.md Project instructions for Claude Code
FEATURES.md Feature matrix by version
USER_GUIDE.md User documentation
CHANGELOG.md Version history
FUNCTIONAL_COVERAGE_AUDIT.md Coverage analysis (81%)
IMPLEMENTATION_PLAN.md Phased roadmap
Generator Delivery System ADR-064/065/066 consolidated guide

iDempiere References

Wiki Documentation

OSGi Factory Documentation

IDE Setup

Path: /docs/developers/architecture/idempiere-hub/README