- 首页
- Apps
- Specialized Solutions
- Telecom Billing & OSS Operations
示意预览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.
什么是 Telecom Billing & OSS Operations?
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 $999.00 USD; request a quote for a scoped proposal.
核心功能
按需定制,全程代劳
无需自行搭建——由 ECOSIRE 构建、安装并提供支持的可用应用。
- 1
您下单
以一次性构建价格开始。我们在启动时与您共同确定范围。
- 2
我们构建与安装
ECOSIRE 在您的 Odoo 上构建、配置并安装。
- 3
上线 + 支持
约一个工作周内上线,并包含两周上线支持。我们交付的代码中的缺陷免费修复。
技术规格
- Odoo 兼容性
- Odoo 17, Odoo 18, Odoo 19
- 版本
- 企业版和社区版
- 许可证
- 许可证需要确认
- Python 要求
- Python 3.10+
- 数据库
- PostgreSQL 12+
关于此产品
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 one working week 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.
你得到什么
- Installable module source code built for your exact Odoo series (17.0, 18.0 or 19.0) and edition (Community or Enterprise)
- Installation and configuration on your environment — plans, tariff rules, journals, cron cadence, security groups and record rules configured against your real data
- Technical documentation: model and field reference, rating algorithm walkthrough, cron and automated-action inventory, and the XML-RPC/JSON-RPC integration contract
- End-user guide plus a live training session for billing officers, NOC/provisioning staff and dealer administrators
- UAT on a staging database restored from your production data, with a signed acceptance checklist and a documented rollback plan for go-live
- Post-go-live support window for defect fixes on the delivered scope, agreed and stated in the quotation
- Git repository handover with full commit history, so your team or any future vendor owns the code outright
- Mediation/import templates and sample payloads matched to your access-layer export format
这是给谁的
ISP Billing Manager
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.
NOC / Provisioning Lead
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.
Telecom CFO or Finance Controller
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.
Channel / Dealer Operations Manager
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.
Telecom Billing & OSS Operations 如何比较
| 标准 | 伊科西尔 | 定制建造 | 竞争对手 | 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 |
关于Telecom Billing & OSS Operations的常见问题
How long does delivery take?
This is a build-to-order module, not an instant download. Typical delivery is one working week 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.
What support and updates do I get after go-live?
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.
Does this work on Odoo Community, or do I need Enterprise?
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.
Will it integrate with our RADIUS server, OLT or existing mediation system?
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.
Does it replace our accounting, or sit on top of it?
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.
Can dealers and field agents be prevented from seeing the whole subscriber base?
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.
What happens to our historical subscriber and billing data?
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.
相关模块
Telecom Billing & OSS Operations
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.
- `telecom.plan` catalogue with tariff lines: flat recurring fee, included allowance, tiered overage rates, committed-rate and burst pricing, and validity windows for promotional tariffs
- `telecom.service` instance model keyed on your access identifier (RADIUS username, CPE MAC, ONU/ONT serial, MSISDN or circuit ID) with a `draft/provisioning/active/suspended/terminated` state machine
- `telecom.usage.record` rated-event model with an idempotent import key, so re-running a mediation file cannot double-bill a subscriber
- Batch rating engine driven by `ir.cron`: groups usage by service and billing period, applies `telecom.rating.rule` tiers and free allowances, and stores the rated result for audit



