Admin#

This section is for the system administrator (group_system). It contains operational tasks that are not part of the daily office routine.

New user#

Settings → Users & Companies → Users → Create.

Required:

  • Name + Login (usually email)
  • Password (temporary, user changes)

Permissions by role:

RoleRequired groups
Installerfieldservice.group_fsm_team, stock.group_stock_user, hr.group_hr_user*
Foreman+ fieldservice.group_fsm_manager
Office (invoicing)+ account.group_account_invoice
Office (full)+ account.group_account_manager, hr.group_hr_manager
Admin+ base.group_system

* hr.group_hr_user is needed for installers to log their own hours and expenses.

**Don't grant `base.group_system` to anyone but system admins.** It allows all backend configuration — including the unintentional. Use other groups for fine-grained scoping.

fsm.person row required#

In addition to the user, an installer needs an fsm.person row in Field Service → Workers. Without it, Field Service doesn’t recognise them as an installer.

fsm.person.elt_user_id must link to the user (200.7+). This is ELT-specific — OCA’s default created partner duplicates which caused bugs.

API key management#

Settings → Users & Companies → API Keys.

  • List of all valid API keys
  • You can revoke a single key if you suspect a leak
  • A user can create a new key from their profile

Per-user — don’t create keys on a shared ELT user.

Module installation and upgrade#

Apps.

Actions:

  • Install — first time, requires database restart
  • Upgrade — when a deploy has bumped a version
  • Uninstall — dangerous, don’t use in production without backup

ELT’s own modules:

ModuleRole
elt_fsmCore functionality
elt_themeUI customisation
netvisor_integrationAccounting bridge
elt_usernameUsername extra

Updates happen via git push from the developer’s machine:

  • koivusuo.ovh:/srv/git/odoo/elt_fsm.git — push triggers automatic odoo -u elt_fsm + asset clear + container restart

Cron jobs#

Settings → Technical → Scheduled Actions.

ELT’s important crons:

CronScheduleWhat it does
LVISnet Auto-fetch dispatcher1 minChecks fetch_requested flags
LVISnet Auto-fetch (monthly)1st day 21:25Iterates all wholesalers
Netvisor purchase import06:00 dailyFetches yesterday’s purchase invoices
Netvisor payment sync07:00 dailyUpdates payment statuses
Netvisor payroll sync1st day 08:00 (off)Sends payslips

Run manually button triggers immediately — useful if the cron missed or for testing.

Backups#

Responsibility of the server administrator (the ELT staff member in charge of infrastructure). General practice:

  • PostgreSQL pg_dump daily → moved off-site
  • Filestore (/var/lib/odoo/filestore/kissa/) synced off-site
  • Odoo upgrades are always done alongside a dump

Technical state#

Settings → Technical:

  • Database Structure → Models — all tables, if you need to inspect the schema
  • Logging — debug-level log review
  • Sequences — numbering sequences (FO task numbers, invoice numbers)

Troubleshooting#

User can’t access Field Service even though I gave them rights
- Verify they have **all three groups**: `fieldservice.group_fsm_team` + `stock.group_stock_user` + `hr.group_hr_user` - Is **`fsm.person` row** created for them? - **Re-login is required** for new groups to take effect.
Cron ‘unknown method’ or ‘model not found’ error
Usually the module is partially loaded. Try **Apps → module → Upgrade**. If that doesn't fix it, ask the developer — sometimes the registry needs to be manually cleaned.
Database is growing fast — when to worry?
LVISnet import brings 170k+ rows monthly. That's normal. Watch for growth **over 5% per day** when there's no import — that suggests a cron or sync is creating garbage.
Someone suspects a security breach
1. **Revoke all the suspected user's API keys** immediately. 2. **Change their password**. 3. Check **login history**: `res.users.partner_id.login_history` or the `auth_logs` log. 4. If serious: **revoke the whole Odoo session** (`docker restart odoo18-web-1`) — forces everyone to re-login. 5. Notify the developer / security lead.