All Insights
Odoo implementation4 min read

Who should be allowed to create a field-service invoice?

Separate field evidence, invoice drafting, validation and sending before setting permissions. Includes a role matrix and negative tests for an Odoo workflow.

Invoice responsibility matrix separates evidence capture, draft preparation, validation, sending and correction, each with an explicit role and forbidden-action test.
Original DATUM permission-design worksheet. It is not a ready-made Odoo group configuration. Open full-size diagram

Give invoice-creation access to the role that can assemble the required billing evidence and is accountable for the draft. Decide validation, sending and correction permissions separately. A technician needing to record completed work does not automatically need every billing action, and an office reviewer may need more than permission to view the job.

The right split depends on team size and responsibilities. Define it first, then test whether the configured permissions enforce it without blocking legitimate work.

Separate the actions hidden inside “create invoice”

Odoo 19.0's customer-invoice documentation distinguishes creating a draft from validating and sending an invoice. Treat those as separate business decisions even if an interface puts them near each other. Odoo 19.0 customer invoices

Use an action list before discussing group names:

ActionRequired business responsibilityPermission question
Record work performedAccurate completion evidenceCan the field role record only its permitted work?
Prepare draft linesMatch authorized scope to billable workWho may create or revise a draft?
Validate the invoiceReview the financial document under the agreed processWho may commit the approved invoice?
Send the documentConfirm recipient and release timingWho may send the final customer communication?
Correct an invoiceFollow the approved correction procedureWho owns the correction and its evidence?
Review payment statusUse the authoritative financial recordWho needs to view it, and who may change it?

One person can hold several responsibilities in a small team. The point is to make that decision visible rather than grant broad access solely to make a button appear.

Draft a role matrix with explicit boundaries

The following is an illustrative design, not an Odoo permission preset. Adapt it to your approved process.

RoleProposed permitted workProposed boundary to test
Field technicianRecord time, materials and completion evidenceCannot validate or send an invoice solely through field access
Billing preparerReview evidence and prepare draftCannot perform the final action reserved to the reviewer
Billing reviewerValidate and release under the approved ruleCannot bypass a required correction explanation
Service managerResolve missing work evidenceDoes not receive unrelated financial access merely to close a job

Write down exceptions, backup arrangements and the evidence needed when one person covers two roles. Do not create a separation that leaves work permanently stuck whenever one employee is absent.

Test the actual role, not an administrator's screen

Odoo documents access through users and groups, including inherited permissions. A permission change can therefore have a wider effect than the one menu you intended to expose. Confirm the full result with the intended account in a test environment. Odoo 19.0 access rights

This article uses 19.0 documentation. Verify the exact Enterprise applications, configuration and release in your database. An Online SaaS release or custom module can change the available actions and their dependencies.

Do not solve a blocked draft action by copying all permissions from an administrator. Ask the implementation owner to identify the relevant access path and demonstrate both the permitted and forbidden actions after the change.

Run a short negative-test set

Prepare a permitted test job with approved scope, completed work and enough billing evidence. Use a safe environment that cannot send real customer documents.

  1. Let the field role record its evidence and confirm that the office can use it.
  2. Attempt the billing action that this role is explicitly forbidden to perform.
  3. Let the preparer create the intended draft and inspect its customer and lines.
  4. Attempt the final action reserved for the reviewer.
  5. Let the reviewer perform the approved action and confirm the result.
  6. Try an unrelated job or record that the role should not access.

A button being hidden is not the whole test. Verify the underlying action is denied through the supported paths the role can use, and verify the role can still finish its legitimate work. Have the technical owner design any API-specific access tests where relevant.

The ERP acceptance-test worksheet gives each case a starting state, expected result and evidence. Keep a failed case open until corrected and retested. The final permission design should tell the office who can prepare, approve and release a bill, with a record proving that the intended boundary holds.

How we research and review these articles