A build-to-order Odoo module that turns Odoo into a working BSS/OSS for ISPs and telecom operators: plan catalogues, usage-rated invoicing, provisioning workflows, trouble-ticket operations and dealer collection channels. ECOSIRE builds, installs and supports it after you request a quotation. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $499.00 USD; request a quote for a scoped proposal.
示意预览A build-to-order Odoo module that turns Odoo into a working BSS/OSS for ISPs and telecom operators:
plan catalogues, usage-rated invoicing, provisioning workflows, trouble-ticket operations and dealer collection channels.
ECOSIRE builds, installs and supports it after you request a quotation.
无需自行搭建——由 ECOSIRE 构建、安装并提供支持的可用应用。
以一次性构建价格开始。我们在启动时与您共同确定范围。
ECOSIRE 在您的 Odoo 上构建、配置并安装。
约 2–4 周内上线,并提供上线后的支持期。
Telecom operators and ISPs almost never fail at accounting — they fail at the gap between the network and the ledger. A customer signs up on a 50 Mbps plan with a 500 GB fair-usage cap, a static IP add-on and a two-month promotional discount; the RADIUS/OLT side knows the session, the mediation export knows the bytes, and the finance team knows nothing until somebody pastes a spreadsheet into an invoice run. Odoo native gets you close and then stops: sale.subscription (Enterprise) or a recurring sale order handles a flat monthly fee well, but it has no concept of a rated usage record, no tariff with tiers and free allowances, no proration rule for a mid-cycle plan change, no service instance to suspend when a bill ages past 30 days, and no link from a trouble ticket back to the specific circuit whose SLA credit should appear on next month's invoice. Community has no subscription engine at all. So operators end up with three disconnected systems — a NAS/AAA stack, a spreadsheet rating sheet, and Odoo as a dumb invoice printer — and the reconciliation between them is a person.
What ECOSIRE builds is the missing middle, entirely inside Odoo so that one database holds the customer, the service, the rating, the invoice, the payment and the ticket. The core is a small set of new models declared in a proper __manifest__.py that depends on sale, account, product, contacts and (where the operator runs it) helpdesk or project: a telecom.plan with tariff lines, a telecom.service instance that carries the subscriber identifier (username, CPE MAC, ONU serial, MSISDN — whatever your access layer keys on) and a state machine of draft → provisioning → active → suspended → terminated, a telecom.usage.record for rated events, and a telecom.rating.rule that turns raw counters into billable lines. Rating runs as a batch: an ir.cron pulls or accepts mediation data, groups it by service and period, applies tiered/committed-rate/overage logic, and writes rated lines that a compute field on the service rolls up with @api.depends so the current-cycle exposure is visible before the invoice exists. Invoicing then reuses Odoo's real account.move machinery — no shadow ledger — so tax, fiscal positions, multi-currency and analytic distribution behave exactly as your accountants already expect, and the customer-facing bill is a QWeb report we design to show plan, allowance, overage and credits line by line.
Operations sit on the same records rather than beside them. Provisioning is a workflow: an order confirmation creates the service in provisioning, raises the field/NOC tasks, and only moves to active when the activation step is signed off — with an optional outbound call to your AAA, OLT controller or NMS over HTTP, or (more commonly, and more safely) an export queue your existing scripts consume. Suspension and reconnection are the same path in reverse, driven either by an operator button or by an automated action on ageing receivables, so a dunning decision and a network action stop being two separate human jobs. Trouble tickets extend the helpdesk/ticket model with the service, the outage window and a fault category; time inside the window feeds an SLA calculation that can raise a credit note against the next invoice under approval. Dealer and collection channels get their own layer: a telecom.dealer with assigned territories or customer sets, cash-collection batches that post to a dealer-specific journal or account, and commission accrual computed from collected (not merely invoiced) amounts. Access is enforced properly — ir.model.access.csv for the new groups (Billing Officer, NOC/Provisioning, Dealer, Manager) plus record rules so a dealer sees only their own subscribers and a NOC user cannot post an invoice. Everything is reachable over XML-RPC/JSON-RPC, so an existing captive portal, self-care app or mediation script can create usage records and read balances without a second integration layer.
This is a build-to-order product, not a download. After you request a quotation we run a scoping call, then write the specification against your actual tariffs, your access technology and your Odoo edition and version — 17.0, 18.0 or 19.0, Community or Enterprise (where Enterprise is present we integrate with sale_subscription rather than duplicating it; on Community we build the recurring engine ourselves). You get the module built against that spec, installed on a staging database restored from your data for UAT, then a scheduled go-live with a rollback plan. Typical delivery is 2–4 weeks from confirmed scope; a heavily integrated build with live provisioning calls into third-party equipment can be longer, and we say so in the quotation rather than after the fact.
Runs the monthly cycle for thousands of subscribers and is tired of rating overage in spreadsheets. Needs allowances, tiers and proration computed in the same system that posts the invoice, and needs to explain any line on a customer's bill without opening a second application.
Owns activation, suspension and reconnection. Needs a queue that reflects real service state, an audit trail of who activated what and when, and a suspension trigger that fires from receivable ageing instead of arriving as an email from finance.
Cares that revenue lands in real Odoo accounting with correct tax and fiscal positions, that SLA credits are approved rather than improvised, and that dealer commission accrues on cash actually collected so the payables number is trustworthy.
Manages a distributed collection network. Needs per-dealer visibility restricted by record rules, cash-collection batches that reconcile to a journal, and a settlement statement each dealer can be paid against without a manual reconciliation pass.
| 标准 | 伊科西尔 | 定制建造 | 竞争对手 | Odoo 原生 |
|---|---|---|---|---|
| Usage rating (allowances, tiers, overage) | Purpose-built rating engine with tariff tiers, free allowances and idempotent usage import | Achievable, but you design the rating model from scratch and iterate on it for months | Usually flat recurring billing only; overage tiers are rarely modelled | No concept of a rated usage record — flat recurring fee at best |
| Service lifecycle and provisioning | Service state machine with sign-off steps plus export queue or direct API calls to your access layer | Fully possible; the design and the AAA/OLT integration are the expensive parts | Typically absent — modules stop at the invoice | None; a sale order has no notion of a network service instance |
| Dunning tied to network action | Automated rules suspend, throttle or reconnect from receivable ageing, audited in the chatter | Needs deliberate design to avoid disconnecting a paying customer | Sends reminder emails; no service-state consequence | Follow-up reminders only, with no link to any service |
| Trouble tickets and SLA credits | Tickets carry the affected service and outage window; SLA breach proposes an approval-gated credit note | Doable, but SLA-to-credit-note logic is easy to get subtly wrong | Generic helpdesk with no service or SLA-credit linkage | Helpdesk (Enterprise) tracks tickets but has no service or credit link |
| Dealer and collection channels | Dealer model with territories, cash-collection batches, journal posting and commission on collected amounts | Frequently deprioritised until after go-live, then retrofitted painfully | Rarely covered at all | No dealer construct; salespersons are not collection agents |
| Accounting integrity | Posts to native `account.move` — real tax, fiscal position, multi-currency, analytic distribution | Depends entirely on the developer's discipline; shadow ledgers are common | Varies widely; some modules bypass standard accounting flows | Excellent — this is exactly what Odoo core does well |
| Data access control | Dedicated groups, `ir.model.access.csv` and record rules separating billing, NOC and dealer roles | Often deferred and then added under time pressure near go-live | Usually a single user/manager pair with no dealer isolation | Standard sales and accounting groups, with no telecom role separation |
| Ownership and future maintenance | Git repository handover with full history; you maintain it or hand it to any vendor | You own it, but the knowledge tends to leave with the developer who wrote it | Vendor-controlled release cycle; customisation depends on their roadmap | Maintained by Odoo, but only for what core actually does |
This is a build-to-order module, not an instant download. Typical delivery is 2–4 weeks from confirmed scope — that clock starts once the specification is signed off after the scoping call, not at first contact. Builds that require live provisioning calls into third-party AAA, OLT or NMS equipment, or unusual mediation formats, can run longer; we state the realistic window in the quotation rather than revising it later.
Every engagement includes a post-go-live support window for defect fixes on the delivered scope, with the length agreed in writing in your quotation. You receive the git repository with full history, so your team can maintain the code independently. Version upgrades (for example 18.0 to 19.0) and new functional scope are quoted separately, because they are genuine engineering work rather than a patch — but as the original authors we work against a codebase we already know.
Both. On Enterprise we integrate with the existing `sale_subscription` machinery rather than duplicating it, so your recurring plans and this module's rating layer share one source of truth. On Community, where no subscription engine exists, we build the recurring-charge engine as part of the module. The rating, provisioning, ticketing and dealer layers are edition-independent. Tell us your edition at the scoping call — it changes the design.
Yes, and we deliberately offer two integration shapes. The safer default is a queue-and-export pattern: the module writes provisioning and suspension intents that your existing scripts consume, and accepts usage records over XML-RPC/JSON-RPC or file import with an idempotent key so a re-run cannot double-bill. Where you want direct control, we build outbound HTTP calls to your controller's API. We do not claim generic support for every vendor — we integrate against the specific API or export format you show us during scoping.
It sits on top of native Odoo accounting and never creates a parallel ledger. Rated usage becomes lines on a real `account.move`, so taxes, fiscal positions, multi-currency, analytic distribution and the financial reports behave exactly as they already do. That is deliberate: a shadow billing ledger is one of the most common reasons telecom ERP projects become unauditable.
Yes. The module ships dedicated security groups with `ir.model.access.csv` entries plus record rules that scope a dealer to their assigned territory or subscriber set. A dealer can record a collection and view their own settlement statement; they cannot see another dealer's customers, and they cannot post accounting entries. NOC users get the inverse — full provisioning rights, no accounting rights.
Migration is scoped explicitly. We map your existing subscriber records, service identifiers and open balances into the new models and load them on a staging database first, so UAT runs against your real data rather than sample records. Historical rated usage is imported where you need it for dispute handling; where you only need opening balances, we keep the load light. Either way the plan, the row counts and the rollback path are written down before go-live.
A build-to-order Odoo module that turns Odoo into a working BSS/OSS for ISPs and telecom operators: plan catalogues, usage-rated invoicing, provisioning workflows, trouble-ticket operations and dealer collection channels. ECOSIRE builds, installs and supports it after you request a quotation.