Election & Polling Station Management — organizing a municipal election — legal composition of the polling station, a duty roster with no gaps or overlaps, a vote count checked to the exact figure, turnout at set times.
Municipal election departments, one election at a time
Overview
Elections — polling stations — DYONYSOS
App for a municipality's general secretariat, on Odoo 19 Community. The first module of an upcoming elections suite.
Also searched as: town hall polling station software, election duty roster, reporting results to the prefecture, vote count report, municipal turnout rate.
A polling station is a legal unit, not a place. It has a number, a voter catchment and a venue — but what authorizes it to open is its composition. Article R42 of the French Electoral Code requires a chair, at least two assessors and a secretary. A polling station missing an assessor cannot be opened by this module: the refusal names what is missing, not merely that something is.
The duty rota is the general secretariat's nightmare. Each polling station must be staffed from opening to closing by successive time slots, with no gaps — and the same person cannot staff two stations at the same time, even in two different municipalities under the same secretariat. Both rules are checked: overlaps are rejected when the slot is entered, continuity is checked before the rota is opened, and the message says where the gap is, to the hour.
Counting results are reported per polling station, and the figures must add up. Registered voters, voters, blank ballots, spoiled ballots, valid votes cast, then votes per candidate or per list: the golden rule is that valid votes equal voters minus blank and spoiled ballots, and that the sum of votes per candidate equals valid votes. This is the module's central check, and it rejects entries with the discrepancy quantified — not a bare error message: “812 voters minus 14 blank and 6 spoiled gives 792 valid votes, but 794 were entered — a discrepancy of 2.” A municipality that sends inconsistent figures to the préfecture gets them sent back; this check avoids the round trip.
The turnout rate is calculated, per polling station and consolidated for the municipality, at the times requested by the préfecture — traditionally noon and 5 p.m. — from the number of voters checked off at that time, never exceeding the number of registered voters.
An election has rounds. Municipal, legislative, presidential: up to two rounds, each with its own candidates or lists and its own results — those in the second round are not necessarily those in the first.
What the module does not do
No named electoral roll: the module counts registered voters per polling station, it does not manage voters one by one — that list is the single electoral register (REU), maintained by INSEE, outside the scope of a municipal business module. No IT link with the REU or with Élire (INSEE): registered voters are entered by the municipality. No automatic transmission of results to the prefecture — reporting follows the prescribed procedure (telephone, Cerfa, prefecture portal); the module ensures the figures transmitted are consistent before the call. No proxy vote management. No individual voter sign-in sheet. No generation of the official Cerfa minutes.
Two roles
Agent: viewing polling stations, entering their own duty shift, entering results and turnout counts. Election manager: creating the election, assigning polling station members, opening and closing rounds, validating results.
Key points
- One- or two-round election — Candidates or lists linked to a specific round: the second may differ entirely from the first.
- Opening blocked if polling station staff incomplete — Composition and duty roster checked automatically before a round opens.
- One person, one slot at a time — The same person cannot be assigned to two polling stations at the same time, even in two different municipalities.
Specifications
| Price | €299 excl. VAT |
|---|---|
| License | OPL-1 |
| Odoo series | 19.0: published on the Odoo Apps Store; 20.0: published on the Odoo Apps Store |
| Version | 1.0.0 |
| Edition | Odoo Community / on-premise |
| Technical name | dyo_elections_bureaux |
| Domain | Municipalities and public sector |
Price excluding VAT as displayed on the Odoo Apps Store; purchase and installation are done on the Store or through your Omnifloo instance.