The Phase B plan (commit 8eb2c2de) listed 12 modules to sweep, but the
codebase has 13 more modules with ACL CSVs referencing the old role
group xmlids. Backward-compat (Phase A's implied_ids chains) keeps
these working today, but the old groups will be deleted after the
30-day rollback window — so the sweep must cover ALL modules with
plating-group ACL refs to avoid post-rollback breakage.
Sweeps: batch, bridge_documents, bridge_maintenance, bridge_mrp
(uninstalled but file present), bridge_quality (planned removal),
bridge_sign, compliance, culture (retired), kpi, logistics,
notifications, portal, reports.
Pattern matches the original sweep:
group_fusion_plating_operator → group_fp_technician
group_fusion_plating_supervisor → group_fp_shop_manager_v2
group_fusion_plating_manager → group_fp_manager
group_fusion_plating_admin → group_fp_owner
group_fp_accounting → group_fp_manager
group_fp_receiving → group_fp_shop_manager_v2
group_fp_estimator → group_fp_sales_rep
group_fp_shop_manager (legacy) → group_fp_manager
cgp_officer → group_fp_quality_manager
cgp_designated_official → group_fp_owner
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Fusion Plating — Quality Bridge (EE)
Part of the Fusion Plating product family by Nexa Systems Inc.
One-way sync from Fusion Plating NCRs to Odoo Enterprise quality.alert
records. Lets plating shops running Odoo EE keep using the Fusion Plating
QMS (CE + EE compatible) while getting the benefit of EE's native quality
dashboards on the same data.
Status
| Item | Value |
|---|---|
| Odoo version | 19.0 |
| License | OPL-1 |
| Auto-install | Yes — when fusion_plating_quality AND EE quality are both installed |
| Sync direction | One-way: NCR → quality.alert |
How it works
- Creating or updating a
fusion.plating.ncrrecord triggers_sync_to_quality_alert()inmodels/fp_ncr.py. - The bridge builds a vals dict from the NCR and creates (or updates) the
linked
quality.alertrecord under a dedicated Plating Quality team. - The bridge is defensive: every field write is gated on the live
quality.alertschema so a minor EE release that renames or drops a field does not break NCR saves. - If
quality.alertis not available for any reason, the sync silently no-ops — NCRs continue to work normally in the base QMS module.
Field mapping
| Fusion Plating NCR | Odoo EE quality.alert |
|---|---|
description (first line) |
name / title |
description (full html) |
description (if html) or stripped text |
containment |
action_corrective (if present) |
root_cause |
action_preventive (if present) |
severity |
priority (0/1/2/3 star) |
state |
stage_id (best-effort name match) |
customer_partner_id |
partner_id |
company_id |
company_id |
| — | team_id (always "Plating Quality") |
Per-record controls
Each NCR gains three x_fc_* fields (visible under the Quality Alert
Sync notebook page on the NCR form):
x_fc_auto_sync— toggle per-record sync; set to False to freeze the mirror on a specific NCRx_fc_quality_alert_id— read-only pointer to the mirrored alertx_fc_quality_alert_synced— read-only "has been synced at least once" flag
Manual sync
Use the Sync to Quality header button on the NCR form to push the latest values on demand. The mirrored alert's Quality Alert smart button jumps straight to the linked EE record.
What the bridge does NOT do
- No write-back. Edits to the EE
quality.alertrecord are not propagated back into Fusion Plating. NCR is the source of truth. - No CAPA mirroring. Fusion Plating CAPAs remain in
fusion.plating.capa; they are not copied intoquality.pointorquality.check. - No historical backfill. Existing NCRs created before this module was installed are not synced automatically — run the Sync to Quality button manually on the ones you want mirrored.
Notes for deployment
- If your EE release uses
quality.teaminstead ofquality.alert.team, editdata/quality_alert_team_data.xmlto match and reinstall the module. No Python changes required. - The sync runs with
sudo()so shop operators without direct write access to the EE quality module still produce mirrored alerts cleanly.
Copyright (c) 2026 Nexa Systems Inc. All rights reserved.