- Home
- Apps
- Specialized Solutions
- Memorial & Funeral Services Management for Odoo
Illustrative previewA build-to-order Odoo module that turns a funeral home's case file into a working record
— arrangements, merchandise, facility and staff scheduling, regulatory paperwork and family statements in one governed flow. ECOSIRE scopes, builds, installs and supports it on your Odoo 17.0, 18.0 or 19.0.
What is Memorial & Funeral Services Management for Odoo?
A build-to-order Odoo module that turns a funeral home's case file into a working record — arrangements, merchandise, facility and staff scheduling, regulatory paperwork and family statements in one governed flow. ECOSIRE scopes, builds, installs and supports it on your Odoo 17.0, 18.0 or 19.0. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.
Key Features
Built to order, done for you
No DIY setup — a working app, built, installed and supported by ECOSIRE.
- 1
You order
Start with a one-time build price. We scope it with you at kickoff.
- 2
We build & install
ECOSIRE builds, configures and installs it on your Odoo.
- 3
Go live + support
You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.
Technical Specifications
- Odoo Compatibility
- Odoo 17, Odoo 18, Odoo 19
- Editions
- Enterprise & Community
- License
- Licence confirmation required
- Python Requirement
- Python 3.10+
- Database
- PostgreSQL 12+
About this Product
A funeral home runs on a single object that Odoo does not have: the case. From the first-call notification through transfer, arrangement conference, service, disposition and final statement, everything a firm does hangs off one decedent record — and every one of those steps has a deadline, a signature, a permit and a family waiting. In stock Odoo the pieces exist but they do not connect. sale.order can sell a casket but has no concept of a decedent, a place of death, or an authorising next of kin. calendar.event can hold a chapel booking but will happily double-book the preparation room. account.move can invoice, but it cannot separate what the firm supplies from cash advances paid to a third party on the family's behalf — the distinction every regulator and every honest statement depends on. Firms end up bridging the gap with a whiteboard, a shared spreadsheet of permit numbers, and a director who carries the schedule in their head.
We build ecosire_funeral_services as a proper Odoo application on top of that gap. A new funeral.case model carries the decedent, informant and authorising party (all res.partner records, so the family relationship survives into CRM and accounting), place and time of death, the responsible director, and a stage-driven lifecycle rendered as a statusbar over a configurable funeral.case.stage model — first call, transfer complete, arrangement conference, documents filed, service scheduled, disposition complete, account settled. Arrangement lines live on funeral.case.line, which selects product.product records tagged by a funeral_item_type selection so caskets, urns, memorial print, professional service fees and cash advances behave differently on the same conference screen. Computed fields declared with @api.depends roll the general price list, selected merchandise and cash advances into separate running subtotals in real time, so the director quoting at the table sees the family's number change as options are added — and the same computation later produces the statement, rather than a second number typed somewhere else.
Scheduling is modelled rather than freeform. Facilities and vehicles become funeral.resource records with a resource type and an optional Odoo resource.resource link, and each booking is a funeral.booking window validated by an SQL constraint plus a Python @api.constrains overlap check, so a chapel or a preparation room cannot be committed twice — the failure mode most likely to reach a family. Staff assignment uses hr.employee where the HR app is present and falls back to res.users where it is not. Regulatory documentation is handled as configurable funeral.document.type records with a required flag, an issuing authority, and a due-date offset from a chosen anchor (date of death, date of transfer, date of service), plus a case-level checklist that computes an outstanding-documents field — the field a manager filters a list view on at eight in the morning. Permits, certified copies and cremation authorisations attach as ir.attachment records against their document line, and QWeb reports generate the arrangement summary, the itemised price disclosure and the family statement as PDFs your firm's letterhead controls.
Access is designed for a small building where roles overlap. Three groups — Funeral Staff, Funeral Director, Funeral Manager — are defined in security/funeral_security.xml with matching rows in ir.model.access.csv, and record rules keep multi-branch firms separated by company_id while allowing a manager visibility across branches. Because the same record holds clinical detail and family financials, the pricing and statement fields carry group-level groups= restrictions on the view, not just on the menu. Automated actions built on base.automation server actions (rather than the Enterprise studio automation UI, which Community lacks) drive the reminders: a document falling due, a service within twenty-four hours without a full staff assignment, an aftercare follow-up at a configurable interval after disposition. Everything is reachable through the standard XML-RPC and JSON-RPC endpoints, so a website first-call form, an answering service, or a crematory's system can create and read cases without bespoke middleware.
This is build-to-order, and we say so plainly: it is not an existing download on apps.odoo.com. We start with a scoping call, walk your actual arrangement conference and your jurisdiction's document set, and write a specification you approve before anyone writes code. Typical delivery is one working week from confirmed scope for the standard configuration — longer where a specific registry integration or an unusual disposition workflow is in play, and we tell you which before you commit. You receive the installable source for your exact Odoo series (17.0, 18.0 or 19.0), a staging installation for UAT with a written rollback plan, and the git repository, so the module is yours to keep whether or not you keep working with us.
What you get
- Installable module source built and tested against your exact Odoo series — 17.0, 18.0 or 19.0 — with a clean `__manifest__.py` and no forked core modules
- Installation and configuration on your environment: stages, resources, document types and product tagging matched to your firm's real arrangement sheet
- Technical documentation — model and field reference, security matrix, automated-action inventory, and the XML-RPC/JSON-RPC entry points for future integrations
- End-user guide plus a live training session for directors and administrative staff, recorded so new hires can be brought up without a second booking
- UAT on a staging database restored from your production data, with a written test script and a documented rollback plan before anything touches live
- Post-go-live support window covering defect fixes and configuration adjustments within the delivered scope
- Handover of the git repository with full commit history, so the module is yours to maintain, extend or pass to another developer
- Upgrade-path notes describing what changes when you move to the next Odoo major series
Who this is for
Owner or general manager of an independent funeral home
Runs one to four locations and already uses Odoo for accounting and purchasing. Needs the case, the schedule and the family statement in the same system as the books, so month-end stops being a reconciliation between a spreadsheet and an invoice ledger — and so a director's absence does not take the week's schedule with them.
Funeral director conducting the arrangement conference
Sits with a family and needs a screen that produces a defensible, itemised number as selections change, plus a printable summary the family can take away. Cares that cash advances are visibly separate from what the firm charges, and that nothing has to be re-keyed afterwards.
Administrator or registrar handling documentation
Owns permits, certified copies and authorisations across jurisdictions with different deadlines. Needs a checklist that computes what is outstanding and against which anchor date, with attachments filed where the next person will find them without asking.
Multi-branch group operations lead
Oversees several homes in one Odoo database. Needs `company_id` record rules that keep branches apart in daily use while still allowing a consolidated view of capacity, outstanding documentation and unsettled accounts across the group.
How Memorial & Funeral Services Management for Odoo Compares
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Fit to your arrangement conference | Built from your actual arrangement sheet and document set after a scoping call | Also fits, but the fit depends entirely on the developer you find and retain | Generic funeral schema; your firm bends its process to the module's assumptions | No decedent, case or arrangement concept exists — you improvise on sale orders |
| Facility and vehicle double-booking | SQL constraint plus `@api.constrains` overlap check on every booking window | Depends whether the brief called it out; often discovered after a clash | Usually a calendar view with no hard constraint at the database level | `calendar.event` accepts overlapping bookings on the same resource without complaint |
| Cash advances vs firm charges | Separate computed subtotals carried through to invoice and family statement | Achievable, but this is the requirement most often missed in a first build | Often a single flat total, leaving the split to a manual note | One order total; the distinction is maintained outside the system or not at all |
| Regulatory document tracking | Configurable document types with anchored due dates and a computed outstanding count | Built to your spec, though every jurisdiction change means returning to the developer | Fixed checklist reflecting the author's country, hard to adapt | Attachments and activities only — no deadlines, no completeness gate |
| Delivery time and certainty | one working week from confirmed scope, with the estimate given before you commit | Open-ended; discovery, hiring and rework usually dominate the timeline | Installs the same day, then weeks of workarounds for what it does not do | Available immediately, but the gap is never closed — only worked around |
| Source code and ownership | Full git repository handover with commit history; yours to extend or reassign | You own it, and you also own every undocumented decision inside it | Vendor-controlled; extension usually means waiting on their roadmap | Odoo core — not adaptable to your workflow without a module in any case |
| Access control for sensitive records | Three roles, `company_id` record rules, view-level restrictions on financial fields | Often deferred to a later phase and shipped with everyone as manager | Typically one access group covering the whole application | Generic model access only; no funeral-specific separation of duties |
| Odoo version coverage | Built and tested for your specific series — 17.0, 18.0 or 19.0 | Whatever version was current at build time; upgrades are a fresh engagement | Lags major releases; upgrade timing is the vendor's decision, not yours | Ships with every version, and lacks the functionality in every version |
Frequently Asked Questions about Memorial & Funeral Services Management
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 for the standard configuration. The clock starts when you approve the written specification — not at the enquiry — and we tell you before you commit if a registry integration or an unusual disposition workflow will push it past four weeks.
What support and updates do I get after go-live?
Delivery includes a post-go-live support window covering defect fixes and configuration adjustments within the agreed scope. Beyond that, ongoing support and Odoo major-version upgrades are quoted as a separate engagement — but you hold the git repository and full source, so you are never dependent on us to keep the module running or to have another developer extend it.
Does it work on Odoo Community, or do I need Enterprise?
It installs and runs on Community. Automated reminders are implemented as `base.automation` server actions rather than the Enterprise studio automation UI, and any Enterprise-only touchpoints are isolated so the same codebase installs on either edition. Tell us your edition at the scoping call and we confirm which behaviours differ before we build.
Which Odoo versions do you support?
We build against 17.0, 18.0 and 19.0, and you receive the module compiled and tested for your specific series rather than one branch full of version guards. If you plan to upgrade during the project, say so at scoping and we target the destination series instead.
Can it match our jurisdiction's permits and disclosure requirements?
Document types are configuration, not code: each carries a required flag, an issuing authority and a due-date offset anchored to date of death, transfer or service, so multiple jurisdictions coexist in one database. Disclosure and statement layouts are QWeb templates set to your wording during delivery. We are not a legal adviser — you tell us what your regulator requires and we make the system enforce it.
Will this disrupt our existing Odoo accounting?
No. The module generates a standard `account.move` from the approved arrangement and maps cash-advance lines to accounts and analytic tags you nominate. It adds models and views; it does not fork core accounting. UAT runs on a staging database restored from your production data, with a documented rollback plan, before anything reaches live.
Can our website first-call form or answering service create cases automatically?
Yes. Cases are ordinary Odoo records exposed over the standard XML-RPC and JSON-RPC endpoints, so a web form, answering service or crematory system can create and read them with an API user and the usual access rights. If you want a specific integration built and tested rather than merely enabled, raise it at the scoping call so it is priced into scope.
Related Modules

Manufacturing Order Merge & Split
Merge same-product manufacturing orders into one batch run, or split a large MO into smaller lots — with demand aggregation and traceability preserved.

Manufacturing Outsourced (Job Work) Challan & GST
Odoo job-work management for India: delivery challans, ITC-04 data, and 180-day return tracking for outsourced manufacturing. Built to order.

Metal Fabricator
A made-to-order Odoo application for metal fabrication shops — cut/bend/weld routings, sheet and bar nesting, offcut (drop) inventory, and quote-to-shipment traceability. ECOSIRE scopes, builds, installs and supports it on your Odoo 17/18/19.

Microfinance & Lending Operations
A build-to-order Odoo module that turns your loan book into a first-class ERP object — loan products, amortisation schedules, disbursement approvals, collections buckets, provisioning and portfolio reporting. ECOSIRE builds, installs and supports it on your Odoo 17, 18 or 19 database.
Memorial & Funeral Services Management
A build-to-order Odoo module that turns a funeral home's case file into a working record — arrangements, merchandise, facility and staff scheduling, regulatory paperwork and family statements in one governed flow. ECOSIRE scopes, builds, installs and supports it on your Odoo 17.0, 18.0 or 19.0.
- `funeral.case` master record linking decedent, informant and authorising next of kin as `res.partner` records, preserving the family relationship for later aftercare and accounting
- Configurable `funeral.case.stage` lifecycle rendered as a statusbar (first call, transfer, arrangement, documentation, service, disposition, settlement) with per-stage required-field validation
- Arrangement conference screen where `funeral.case.line` selects `product.product` records tagged by a `funeral_item_type` selection — casket, urn, memorial print, professional service, cash advance
- Computed subtotals via `@api.depends` that keep firm-supplied goods and services separate from cash advances paid on the family's behalf, so the statement never conflates the two