ADR-062: Centralized ID Management - Practical Flow

Parent: ADR-062

When It Triggers

Triggers Does NOT Trigger
create-table, create-column, create-window, create-process list-tables, describe-table, export
generator plugin, generator model generator callout (pure Java)

Decision Flow

Entity Type from table name or --entity-type flag
         │
    ┌────┴────┐
    │         │
  U/D       XX/YY/ZZ
(System)   (Custom)
    │         │
    ▼         ▼
  LOCAL    Centralized config?
    │      ┌────┴────┐
    │     Yes        No
    │      │         │
    │      ▼         ▼
    │  CENTRALIZED  --local-ids?
    │               ┌────┴────┐
    │              Yes        No
    │               │         │
    │               ▼         ▼
    │            LOCAL     ERROR
    │           (warn)
    ▼
   Done

Quick Reference

Scenario Entity Mode Command
Core iDempiere U, D Local create-table C_Order
Plugin dev (test) XX Local create-table XX_Test --local-ids
Plugin prod XX Centralized create-table XX_Plugin (with config)
CI/CD Any Local CENTRALIZED_ID_MODE=local

Configuration

# Production (one-time setup in ~/.bashrc)
export CENTRALIZED_ID_SERVER_URL=https://developer.idempiere.com/cgi-bin/get_ID
export CENTRALIZED_ID_USER=your_github_username
export CENTRALIZED_ID_PASSWORD=your_password
export CENTRALIZED_ID_PROJECT=Adempiere

# Development override
idempiere-hub registry create-table XX_Test --local-ids

Key Takeaways

  1. System types (U, D): Just work, no config needed
  2. Custom types (XX, YY, ZZ): Require centralized server or --local-ids
  3. MCP/Chat API: Configure env vars once at startup
  4. CI/CD: Use CENTRALIZED_ID_MODE=local
  5. Production: Always centralized for custom entities

Path: /docs/developers/architecture/idempiere-hub/062-practical-flow