Review status: approved Approved projection version: 1 Approved by: HKWhitten Approved date: 2026-07-17 Audience: product, accounting, developer Source truth: - Accounts - Account Contract - Account Role Contract - ADR 0023: BooksPlus Starter Chart and Dolibarr Account Crosswalk Contract: - Dolibarr Account Crosswalk Contract
Dolibarr v23 Starter-Chart Projection
Purpose
This page records the approved exact first Dolibarr projection of the accepted
booksplus.standard version 1 starter chart. It is approved derived planning
data, not bp3-doli desired state and not authorization to provision or migrate
an instance by itself.
The projection targets Dolibarr 23.0.3. Its pcg_type values use the
Dolibarr v23 U.S. base-chart vocabulary only as explicit Dolibarr operational
grouping. They do not define BooksPlus type, normal balance, role, control
status, or posting meaning.
Projection identity
| Property | Approved value |
|---|---|
| Projection key | booksplus.standard.dolibarr23 |
| Projection version | 1 |
| BooksPlus chart key | booksplus.standard |
| BooksPlus chart version | 1 |
| Verified Dolibarr runtime | 23.0.3 |
Dolibarr pcg_version |
BOOKSPLUS-V1 |
| Dolibarr accounting-system label | BooksPlus Standard v1 |
| Accounting-system active state | 1 |
| Account parent | 0 for every projected posting account |
| Stored-code rule | Exact string from the table; no numeric conversion |
The projection version, chart version, pcg_version, bp3-doli configuration
version, mapping version, integration-contract version, and Dolibarr runtime
version remain independent.
Dolibarr 23.0.3 stores account_number in varchar(32), while the current
InvAcct/bpconnector adapter boundary allows at most 64 characters. Therefore
this projection uses the stricter 32-character target-runtime limit. Every v1
code is five characters and satisfies both boundaries.
Review evidence
The target-version fields and proposed operational vocabulary were checked
against the official Dolibarr 23.0.3 source:
- accounting account table;
- accounting account indexes;
- U.S. chart data; and
- account-code length and zero handling.
Those sources establish Dolibarr storage and operational behavior only. The accepted BooksPlus chart and ADR remain authoritative for accounting meaning.
Account-code formatting controls
The approved v1 projection uses exact stored codes and disables virtual right-padding:
| Dolibarr setting | Proposed value | Reason |
|---|---|---|
ACCOUNTING_MANAGE_ZERO |
1 |
Preserve and resolve the exact stored code rather than a fixed padded display value. |
ACCOUNTING_LENGTH_GACCOUNT |
unset | Do not add virtual trailing zeros to general account codes. |
ACCOUNTING_LENGTH_AACCOUNT |
unset | Keep auxiliary-code formatting independent from starter-chart identity. |
Normalized export and reconciliation must retain both these settings and the exact stored account code. A displayed, padded, customer, supplier, product, or supplier-invoice code is evidence to reconcile; it is not account identity.
Exact account projection
Active and Posting are explicit desired values. Posting=yes means the
account is eligible for the operations that consume this projection; it is not
inferred from pcg_type or code.
| Logical account key | dolibarr_source_account_id |
Stored code | Dolibarr label | pcg_type |
Active | Posting | Canonical roles |
|---|---|---|---|---|---|---|---|
booksplus.standard.cash_on_hand |
8992e2c5-b6c2-46da-97b1-ff8226c56ce1 |
10000 |
Cash on Hand | ASSETS |
yes | yes | cash.on_hand |
booksplus.standard.operating_bank |
99490ca8-b0e8-4abb-b1b5-aadca56764d1 |
10100 |
Operating Bank | ASSETS |
yes | yes | bank.operating |
booksplus.standard.accounts_receivable |
31a173a2-fc3d-455e-a9ca-da693266c6f5 |
11000 |
Accounts Receivable | ASSETS |
yes | yes | receivable.trade |
booksplus.standard.inventory |
81fb7d7f-9c7d-4fd1-be5d-8c11fcaaa0d9 |
12000 |
Inventory | ASSETS |
yes | yes | inventory.general, inventory.input, inventory.output |
booksplus.standard.prepaid_inventory |
65c65589-869c-49a4-9251-73056cbec945 |
12100 |
Prepaid Inventory | ASSETS |
yes | yes | asset.prepaid_inventory |
booksplus.standard.accounts_payable |
93c3a644-8950-456e-8007-28bcbf2bb2b7 |
20000 |
Accounts Payable | LIABILITIES |
yes | yes | payable.trade |
booksplus.standard.accrued_expenses |
ed6de680-4135-4e59-a742-e7fa1d5d82b6 |
21000 |
Accrued Expenses | LIABILITIES |
yes | yes | liability.accrued_expenses |
booksplus.standard.sales_tax_payable |
ef9431c2-ec1c-48a2-863a-a3f8fdc756d0 |
22000 |
Sales Tax Payable | LIABILITIES |
yes | yes | tax.sales_tax_payable |
booksplus.standard.customer_deposits |
e72bcdce-dda3-4bf1-b669-6eed272e20c0 |
23000 |
Customer Deposits | LIABILITIES |
yes | yes | liability.customer_deposits |
booksplus.standard.unapplied_customer_cash |
bc88562d-0965-48de-a9fa-ff9c2101f739 |
24000 |
Unapplied Customer Cash | LIABILITIES |
yes | yes | liability.unapplied_customer_cash |
booksplus.standard.owner_equity |
9d95005b-ccbc-4984-a87b-f14f8b07f779 |
30000 |
Owner Equity | EQUITY |
yes | yes | equity.default |
booksplus.standard.retained_earnings |
4f6126fa-8046-49a4-b0a5-3e1c0313b770 |
31000 |
Retained Earnings | EQUITY |
yes | yes | equity.retained_earnings |
booksplus.standard.opening_balance_equity |
49e63b14-8b8e-490d-9317-5d0084c8ac50 |
32000 |
Opening Balance Equity | EQUITY |
yes | yes | none |
booksplus.standard.product_revenue |
2067ddf2-bd60-4c7a-94c7-e9248e88e3df |
40000 |
Product Revenue | INCOME |
yes | yes | revenue.product |
booksplus.standard.service_revenue |
cddf2099-a345-4322-8c1e-f3b3beb7d622 |
41000 |
Service Revenue | INCOME |
yes | yes | revenue.service |
booksplus.standard.cost_of_goods_sold |
5c6607dd-c3cd-4bd1-9cae-fa876d381fd0 |
50000 |
Cost of Goods Sold | COGS |
yes | yes | expense.cost_of_goods_sold |
booksplus.standard.inventory_adjustment |
13444682-f05a-4f50-93f1-f083e740c14b |
51000 |
Inventory Adjustment | COGS |
yes | yes | expense.inventory_adjustment |
booksplus.standard.purchase_price_variance |
2341f6c3-b8f5-498a-a573-52862d959271 |
52000 |
Purchase Price Variance | COGS |
yes | yes | expense.purchase_price_variance |
booksplus.standard.inventory_fallback_clearing |
8785d7b5-2c13-4339-82d1-b6b0eaa85619 |
53000 |
Inventory Fallback Clearing | COGS |
yes | yes | clearing.inventory_fallback |
booksplus.standard.general_expense |
bc4ddfa7-7828-4c97-93a4-98a1f7432e35 |
60000 |
General Expense | EXPENSE |
yes | yes | expense.operating |
The four inventory-result accounts use COGS so the reviewed Dolibarr
projection groups cost of goods sold, inventory adjustments, purchase-price
variance, and fallback-clearing output together. The fallback account remains
a review account; this grouping does not resolve unknown movement meaning.
Mandatory InvAcct projection
The approved mapping version is booksplus.standard.dolibarr23.1. Every row is
required for export readiness.
| InvAcct setting | Canonical role | Source-account UUID | Exact stored code |
|---|---|---|---|
INVACCT_ACCOUNT_INVENTORY_RM |
inventory.input |
81fb7d7f-9c7d-4fd1-be5d-8c11fcaaa0d9 |
12000 |
INVACCT_ACCOUNT_INVENTORY_FG |
inventory.output |
81fb7d7f-9c7d-4fd1-be5d-8c11fcaaa0d9 |
12000 |
INVACCT_ACCOUNT_COGS |
expense.cost_of_goods_sold |
5c6607dd-c3cd-4bd1-9cae-fa876d381fd0 |
50000 |
INVACCT_ACCOUNT_ADJUSTMENT |
expense.inventory_adjustment |
13444682-f05a-4f50-93f1-f083e740c14b |
51000 |
INVACCT_ACCOUNT_PPV |
expense.purchase_price_variance |
2341f6c3-b8f5-498a-a573-52862d959271 |
52000 |
INVACCT_ACCOUNT_FALLBACK |
clearing.inventory_fallback |
8785d7b5-2c13-4339-82d1-b6b0eaa85619 |
53000 |
The two inventory settings deliberately resolve to the same source account. Products and supplier invoices may contain exact stored codes, but their values must reconcile to this mapping rather than replace it.
Customer-overlay boundary
A customer overlay may change a Dolibarr stored code or label while retaining the standard logical key and source-account UUID. A changed code must still satisfy the target Dolibarr schema and current adapter pattern. The overlay may not change canonical roles, protected mapping rules, source-account identity, or chart identity.
An additional customer account receives a new customer-owned logical key and UUID. It does not become a universal starter-chart account.
Approval record
HKWhitten approved projection version 1 without modification on 2026-07-17.
| Decision | Approved value | Status |
|---|---|---|
| Stable Dolibarr chart identity | pcg_version=BOOKSPLUS-V1 |
approved |
| Exact-code formatting | ACCOUNTING_MANAGE_ZERO=1; ACCOUNTING_LENGTH_GACCOUNT and ACCOUNTING_LENGTH_AACCOUNT unset |
approved |
| Stable account identity | The 20 logical keys and UUIDs in the exact projection table | approved |
| Inventory-result grouping | COGS for Cost of Goods Sold, Inventory Adjustment, Purchase Price Variance, and Inventory Fallback Clearing |
approved |
| Projected account state | All 20 accounts active, posting-eligible, and without a Dolibarr parent | approved |
| Initial mapping version | booksplus.standard.dolibarr23.1 |
approved |
Existing-instance adoption recommendation
Adoption should be an ordered, reviewable migration rather than ordinary projection convergence:
- Capture entity, selected
pcg_version, exact stored code, label,pcg_type, active state, usage evidence, formatting controls, and current semantic mappings before any change. - Match an existing row to a standard logical account only when the reviewer
confirms continuity. The current entity/
pcg_version/stored-code tuple is a locator for this review, not identity. - Attach the approved standard UUID once. Replay must find the same registry identity and make no new assignment.
- Do not silently rename, renumber, retire, or replace the illustrative
120100and510100accounts. If used, retain their history and require an approved customer overlay, explicit renumber migration, or reviewed retirement/replacement decision. - Preserve the old noncanonical mapping rows as migration evidence, but do not
activate their role keys in the new mapping set. Stage the six canonical
InvAcct role projections as
pending_review. - Reject overlapping effective intervals, duplicate logical keys or UUIDs, incompatible code reuse, and multiple active mapping-set selections before cutover.
- Activate
booksplus.standard.dolibarr23.1only after projection validation, normalized export, drift comparison, crosswalk reconciliation, and all-six InvAcct readiness agree.
Recommended implementation sequence
- Accept the crosswalk contract.
- Add source-account registry and mapping-set persistence.
- Adopt existing accounts through reviewed, idempotent migrations.
- Publish the approved projection as versioned bp3-doli desired state.
- Converge, validate, export, compare drift, and reconcile before enabling InvAcct export.