What's New
Recent changes to the UAAGI UNO platform and its documentation, newest first.
2026-04-15 · Dealer CRM documentation and sidebar restructure
- New top-level Dealership category in the sidebar, with Dealer CRM nested underneath to keep docs grouped by system. Other dealership apps (Parts, Repair, Units orders) will live beside Dealer CRM here as they get documented.
- Welcome page now shows the last-updated date with a link to this changelog.
- New page: Dealer CRM overview.
- New page: BPO CRM Connection (dealer-side) — setup, service user, troubleshooting, multi-BPO caveat.
- New page: Dealer CRM Lead Intake — endorsed payload mapping, partner matching, idempotency, manual intake.
- New page: Dealer CRM Working a Lead — Convert to Quotation → confirm → deliver → Mark Won, with full gate check docs and Lost wizard behavior.
- BPO CRM → Working a Lead rewritten around the endorsement flow. Mark Won / Mark Lost removed from the agent's UI; the new actions are Endorse w/ S.Q. and Endorse w/o S.Q., with Won/Lost flipping back automatically once the dealer closes on their side.
- BPO CRM → Stages updated for the 7-stage pipeline (New → Qualified → Negotiation → Endorse w/ S.Q. → Endorse w/o S.Q. → Won → Lost) and the new
is_endorsesemantics. - BPO CRM → Claiming notes the form now re-opens automatically on the claimed record after clicking Claim.
- BPO CRM landing page flow diagram refreshed to show all three JSON-RPC directions (distributor → BPO, BPO → dealer, dealer → BPO callback).
2026-04-14 · Stage 3 — Dealer → BPO callback
uaagi_dealership_app 2.3.0 · uaagi_crm 1.4.0
- Dealers can now notify BPO CRM automatically when an endorsed lead is marked Won (after delivery) or Lost (with reason). The BPO source lead flips to the matching terminal stage and records the dealer SO reference.
- New singleton model
dealer.bpo.configon the dealer side: URL, database, service credentials, Test Connection button. Configure under Dealer CRM → Configuration → BPO CRM Connection. dealer.crm.lead.write()detects newly-entered Won/Lost stages on leads with abpo_source_lead_idand fires the callback via JSON-RPC. Failures log to chatter but do not block the local transition.- New BPO-side endpoint
crm.lead.update_from_dealer_callback(payload)—@api.model, idempotent, tolerant of unknown lost reasons. crm.lead.lost_reasonselection gainscancelledso "Buyer Cancelled" from the dealer side passes through intact.
2026-04-14 · Stage 2 — BPO → Dealer push
uaagi_crm 1.3.0 · uaagi_dealership_app 2.2.0
- New Endorse w/ S.Q. and Endorse w/o S.Q. buttons on the BPO lead form replace the old Mark Won / Mark Lost flow. Clicking either (or dragging the kanban card, or clicking the statusbar) pushes the lead to the matching dealer instance via JSON-RPC.
- New stage flag
crm.stage.is_endorse; two new shipped stagesstage_endorse_with_sqandstage_endorse_without_sqsitting between Negotiation and Won/Lost. - Forward-only rule: Negotiation can advance to either endorse stage; terminal Won/Lost are reserved for the dealer callback only.
- Dealer side:
dealer.crm.lead.receive_endorsed_lead(payload)—@api.model, idempotent on(bpo_source_url, bpo_source_lead_id). Endorsed leads land directly in Negotiation. Forwith_sq, also creates a draftsale.orderlinked both ways. - Best-effort matching on partner (mobile/email), country/state (code/name), product (
default_codethen name ilike within brand). - Migration
18.0.1.3.0(pre + post) attachesxml_ids to any manually-created Endorse stages on BPO1 so the unique constraint doesn't fire on upgrade.
2026-04-14 · Stage 1 — Dealer CRM foundation
uaagi_dealership_app 2.1.0
- New Dealer CRM inside
uaagi_dealership_app: mirrors the BPO CRM schema but local-first. Modelsdealer.crm.lead,dealer.crm.stage,dealer.crm.lead.source,dealer.crm.call.log. - New top-level Dealer CRM menu with Pipeline / Call Logs / Configuration, matching the BPO CRM layout.
dealer.crm.lead→sale.orderis bidirectional: the lead links forward to its draft SO; the SO links back viadealer_crm_lead_id.- Convert to Quotation button creates the draft SO pre-filled from the lead (customer, brand, product, qty, price).
- Mark Won is gated on
sale_order_id.state in ('sale','done')and allstock.pickingrecords indone. No auto SO creation — the dealer must walk through the real flow. - Mark Lost opens a wizard with reason + notes.
- Forward-only single-step stage progression, mirroring BPO CRM.
- Relational pickers in the lead and call-log forms are locked down (
no_create,no_create_edit,no_open,no_quick_create) to prevent inline creation of brands/products/partners from the lead form.
Earlier
BPO CRM
- 1.2.0 · 2026-04-14 —
res.users.chatter_positiondefaults to'bottom'; migration flips existing users. - 1.1.0 · 2026-04-13 — Forward-only strict stage progression on BPO leads; bot-probe rejection in the distributor lead sync (skips injection strings and writes back
syncedupstream); customer-level dedup on the lead cron (name + email + mobile), slowed to every 5 minutes. - 1.0.0 — Initial release: lead kanban pipeline, distributor JSON-RPC vehicle-model sync, dealer Sales Order push (deprecated in 1.3.0 in favor of the endorsement flow), Keycloak SSO integration, BPO Agent / Supervisor / Manager groups, claim-lead workflow.
Dealership app
- 2.0.0 — Multi-brand dealership operations: sales, purchase, inventory, repair. Distributor integration for product catalog. Keycloak SSO.
Docs site
- 2026-04-14 — Apache vhost + SSL on
docs.uaagi-uno.com, one-commandscripts/deploy.shpushing the Docusaurus build to the staging box. - 2026-04-13 — Initial Docusaurus scaffold + BPO CRM configuration guides (Brands, Dealerships, Vehicle Models, Stages, Lead Sources), lead pipeline pages (Intake, Claiming, Working), Puppeteer screenshot capture script.