跳至主要内容
产品详细信息以英文显示。翻译即将推出。
Duplicate Contact Details Alert — A build-to-order Odoo module that warns users in real time when a new contact matches an ex — 1/1示意预览

A build-to-order Odoo module that warns users in real time when a new contact matches an existing one on email,

phone, VAT, or name — before the duplicate is ever saved. Designed, built, installed, and supported by

ECOSIRE for your exact matching rules.

什么是 Duplicate Contact Details Alert?

A build-to-order Odoo module that warns users in real time when a new contact matches an existing one on email, phone, VAT, or name — before the duplicate is ever saved. Designed, built, installed, and supported by ECOSIRE for your exact matching rules. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.

核心功能

Real-time `@api.onchange` warning banner on the `res.partner` form as the user types email, phone, VAT, or name
Server-side `@api.constrains` guard that also blocks duplicates created via import or the XML-RPC/JSON-RPC API, not just the UI
Configurable match field set — `email`, `phone`, `mobile`, `vat`, normalized `name`, or a composite key — chosen during scoping
Normalization engine: case-folding, whitespace/punctuation stripping, E.164 phone normalization, and domain-level email comparison
Selectable enforcement mode per policy: advisory warning, hard `ValidationError` block, or role-differentiated behavior
Inline candidate list in the form view with one-click navigation to the existing matching partner
Role-based override via `ir.model.access.csv` and record rules — e.g. data-quality managers may bypass with a logged reason
Multi-company aware: match can be `company_id`-isolated or shared, respecting record-rule visibility so contacts never leak across companies
Optional scheduled `ir.cron` sweep that reports existing duplicate clusters already present in the database
Optional automated action to auto-tag suspected duplicates for a review queue
Optional QWeb report listing duplicate clusters for data-quality audits
Company vs individual (`is_company`) aware matching so a person and an organization with the same name aren't falsely paired
Distinct handling for parent/child contacts so delivery/invoice addresses under one company aren't flagged as duplicates
Python unit tests covering onchange, constrains, normalization edge cases, and API-path enforcement
Built and verified against your target Odoo edition (Community or Enterprise) on 17.0, 18.0, or 19.0

按需定制,全程代劳

无需自行搭建——由 ECOSIRE 构建、安装并提供支持的可用应用。

  1. 1

    您下单

    以一次性构建价格开始。我们在启动时与您共同确定范围。

  2. 2

    我们构建与安装

    ECOSIRE 在您的 Odoo 上构建、配置并安装。

  3. 3

    上线 + 支持

    约一个工作周内上线,并包含两周上线支持。我们交付的代码中的缺陷免费修复。

技术规格

Odoo 兼容性
Odoo 17, Odoo 18, Odoo 19
版本
企业版和社区版
许可证
许可证需要确认
Python 要求
Python 3.10+
数据库
PostgreSQL 12+

关于此产品

Every Odoo database accumulates duplicate contacts. A salesperson types a lead that already exists, a support agent creates a "new" customer who is really an old one under a different spelling, and an import drops in the same company twice. Odoo core does almost nothing to stop this at the point of entry: res.partner has no meaningful uniqueness constraint on email, phone, or VAT, and the standard UI only surfaces a soft name-based suggestion on some flows. The result is fragmented customer history, invoices and sales orders scattered across twin records, broken deduplication in mailings, and hours of manual merging after the damage is done.

This is a productized service, not an off-the-shelf download. ECOSIRE builds a Duplicate Contact Details Alert module tailored to your matching policy and installs it into your Odoo 17.0, 18.0, or 19.0 database. Technically, we add an @api.onchange layer and server-side @api.constrains guards on res.partner so a duplicate is caught both interactively (a warning banner as the user types) and defensively (blocked or flagged on save, including via the XML-RPC/JSON-RPC API and imports). Matching runs over the fields you choose — email, phone, mobile, vat, normalized name, or a composite key — with configurable normalization (case-folding, whitespace and punctuation stripping, E.164 phone normalization, domain-only email comparison). Detected candidates are shown inline in the form view (OWL/QWeb) with a one-click jump to the existing partner, and every near-miss can be logged for later review.

Because it is built for you, the behavior is a policy decision, not a fixed opinion. We can make the alert advisory (warn but allow), enforcing (ValidationError that blocks the save), or role-differentiated via ir.model.access.csv and record rules — for example, agents get a hard block while data-quality managers can override with a logged reason. We scope company-level behavior explicitly: in multi-company databases the match can be tenant-isolated or shared, and we respect company_id and record-rule visibility so the check never leaks contacts across companies the user cannot see. Optional extras include a scheduled ir.cron sweep that reports existing duplicates already in the database, a QWeb report of duplicate clusters, and an automated action to tag suspected twins.

Delivery is build-to-order. After a short scoping call we confirm the exact fields, normalization rules, enforcement mode, and Odoo edition (Community vs Enterprise), then build on a staging copy of your database, run UAT with your team, and deploy with a rollback plan. Typical delivery is one working week from confirmed scope. You receive the full module source in a git repository — __manifest__.py, models, views, security, and tests — so you are never locked to us. Pricing starts from $999 (indicative, single-company base scope); additional matching fields, multi-company isolation, custom normalization for localized phone/VAT formats, existing-data cleanup, and cross-model checks (e.g. leads or vendors) increase the quoted scope.

你得到什么

  • Installable module source code for your chosen Odoo version (17.0 / 18.0 / 19.0), Community or Enterprise
  • Installation and configuration on your staging environment, then production deployment
  • Technical documentation: model changes, matching rules, normalization logic, and configuration options
  • End-user guide plus a live training session for your team
  • UAT on a staging copy of your database with a documented rollback plan
  • Post-go-live support window for defect fixes and adjustments
  • Full git repository handover (manifest, models, views, security, tests) — no vendor lock-in
  • Optional existing-data duplicate report from the initial `ir.cron` sweep at handover

这是给谁的

Sales & CRM Manager

Runs pipeline on Odoo and is tired of the same lead existing three times under different spellings. Needs entry-point duplicate prevention so activity history, opportunities, and forecasts attach to one clean customer record.

Data Quality / RevOps Lead

Owns contact hygiene across the org. Wants configurable matching, an override lane with logged reasons, and a scheduled report of existing duplicate clusters to work down the backlog.

Odoo Administrator

Maintains a multi-company Odoo instance and imports contacts via API and spreadsheets. Needs the guard to fire on the server side and respect company isolation and record-rule visibility, not just block in the UI.

Support / Service Team Lead

Agents create customers on the fly during tickets. Needs a real-time alert that points to the existing partner so support history stays consolidated instead of fragmenting across twin contacts.

Duplicate Contact Details Alert 如何比较

标准伊科西尔定制建造竞争对手Odoo 原生
Detection pointReal-time onchange warning plus server-side constrains, tuned to your fieldsWhatever your team codes and finds time to testUsually onchange-only warning on a fixed field listNo entry-point duplicate check on email/phone/VAT
Matching rulesConfigurable fields, normalization, and composite keys agreed at scopingFully custom but you specify and maintain every rulePredefined fields, limited configurationSoft name-based suggestion on some flows only
API & import coverageEnforced server-side, so XML-RPC/JSON-RPC and imports are guardedOnly if you remember to put it in constrains, not onchangeOften UI-only; imports slip throughNone
Enforcement flexibilityAdvisory, blocking, or role-differentiated with logged overridePossible but each mode is more code to buildTypically warn-only, one behavior for everyoneNot applicable
Multi-company handlingExplicit company isolation respecting record-rule visibilityMust be designed and tested by youRarely company-aware out of the boxNo duplicate logic to scope
Version fitBuilt and verified for your exact 17.0/18.0/19.0 and editionWhatever version you build againstMay lag new Odoo releasesShips with core, no configuration
OwnershipFull git repo handover, no lock-inYou own it, and you own all the maintenanceLicensed binary or vendor-controlled sourcePart of Odoo core
SupportScoping-to-go-live delivery plus a post-go-live support windowInternal team bandwidth onlyGeneric ticket queue, no context on your setupCommunity/support subscription, no custom logic

关于Duplicate Contact Details Alert的常见问题

How long does delivery take?

This is a build-to-order module. Typical delivery is one working week from confirmed scope. After the scoping call we agree the exact matching fields, normalization rules, enforcement mode, and Odoo edition, then build on a staging copy of your database, run UAT with your team, and deploy with a rollback plan. Complex multi-company or localization work can extend the timeline, which we confirm before starting.

How does pricing and scoping work?

Pricing starts from $999 as an indicative single-company base scope. It is not a fixed price — after a short scoping call we send a fixed quote based on your exact requirements. Drivers that increase scope include additional matching fields, multi-company isolation, custom normalization for localized phone or VAT formats, cleanup of existing duplicate data, and extending checks to other models such as leads or vendors.

Will it catch duplicates created by imports and API integrations, not just people typing in the UI?

Yes. The real-time `@api.onchange` warning helps users at the keyboard, but the enforcement lives in a server-side `@api.constrains` guard on `res.partner`. That means duplicates coming through spreadsheet imports or the XML-RPC/JSON-RPC API are checked and flagged or blocked by the same rules, so the policy is enforced regardless of entry point.

Can it block a save, or only warn?

Both — it is your policy decision. We can configure it as advisory (warn but allow the save), enforcing (a `ValidationError` that blocks the duplicate), or role-differentiated so that, for example, sales agents are hard-blocked while data-quality managers can override with a logged reason via `ir.model.access.csv` and record rules.

Does it work with multi-company databases?

Yes. Matching can be isolated per `company_id` so a contact in one company never falsely matches one in another, or deliberately shared if you want a global check. Either way it respects Odoo's record-rule visibility, so the alert never surfaces contacts a user isn't allowed to see.

What about contacts we can support, and updates?

You receive a post-go-live support window for defect fixes and adjustments after deployment. Because you get the full source in a git repository, you are free to maintain it yourself or engage us for changes. Upgrades to a new Odoo major version (e.g. moving from 18.0 to 19.0) are handled as a separate scoped engagement since Odoo API changes between versions can require rework.

Does it work on both Odoo Community and Enterprise?

Yes. The module targets `res.partner`, which exists in both editions, so it runs on Community and Enterprise across Odoo 17.0, 18.0, and 19.0. We build and verify against your specific edition and version during the engagement so the behavior matches your production environment exactly.

申请报价

Duplicate Contact Details Alert

A build-to-order Odoo module that warns users in real time when a new contact matches an existing one on email, phone, VAT, or name — before the duplicate is ever saved. Designed, built, installed, and supported by ECOSIRE for your exact matching rules.

  • Real-time `@api.onchange` warning banner on the `res.partner` form as the user types email, phone, VAT, or name
  • Server-side `@api.constrains` guard that also blocks duplicates created via import or the XML-RPC/JSON-RPC API, not just the UI
  • Configurable match field set — `email`, `phone`, `mobile`, `vat`, normalized `name`, or a composite key — chosen during scoping
  • Normalization engine: case-folding, whitespace/punctuation stripping, E.164 phone normalization, and domain-level email comparison

申请报价

告诉我们您对 Duplicate Contact Details Alert 的需求,我们将发送价格、许可选项和量身定制的方案,通常在一个工作日内。

现在无需付款。此操作会向我们的团队发送报价请求——我们会通过邮件跟进价格和后续步骤。