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 (manual)
Installerfieldservice.group_fsm_user, maintenance.group_equipment_manager, 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
**v1.200.17+:** `fieldservice.group_fsm_user` now automatically brings in `stock.group_stock_user` + `hr_timesheet.group_hr_timesheet_user` via implied_ids — you no longer have to tick them manually. Existing installations (pre-1.200.17) that already have those groups set keep working; new users just need fewer clicks now.

Installer groups in detail — different PWA features need different groups:

GroupUsed for
fieldservice.group_fsm_userView and edit own field service tasks (implicitly brings group_fsm_user_own). v1.200.17+ also brings stock.group_stock_user and hr_timesheet.group_hr_timesheet_user.
stock.group_stock_user (implicit)Read product lines, and the PWA’s “Done” button’s stock consumption (creating stock.picking + stock.move for the FOnnn → customer-location transfer).
hr_timesheet.group_hr_timesheet_user (implicit)Log own hours (account.analytic.line). Without it, the Hours view fails to save.
maintenance.group_equipment_managerRegister equipment via the PWA’s “Register equipment” action. Without it, the attempt fails with “You are not allowed to create ‘Maintenance Equipment’”.
hr.group_hr_userLog expenses (hr.expense) and read own employee record. The “Officer” label is misleading — this is the basic level, not an HR manager.

ELT-specific ACL rows for the installer (these are not groups — they are ir.model.access.csv rows in elt_fsm):

ModelPermissions (R/W/C/U)Why
fsm.billing.line1/1/1/0The PWA’s “Done” action builds billing lines via _rebuild_billing_lines(). Without write/create, action_complete_work fails with “You are not allowed to create ‘Billing Line’”. Unlink stays manager-only.
fsm.easy.timesheet.line1/1/1/0Time entries created from the timer toggles.
fsm.order.product.line1/1/1/0Adding product lines + editing quantities mid-job.
**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.

Pricing and mileage#

Settings → Field Service → Pricing. Sets the FSM service default prices from one place:

  • Work hour, mileage, half per diem, per diem, accommodation, meal allowance, parking.
  • The Default pricelist and Customer pricelists buttons open the pricelists. A customer-specific price can be set e.g. for one customer’s mileage; if no line exists, the default pricelist is used.
  • A customer-specific pricelist is chosen on the customer card (Contacts → pricelist dropdown).
**OpenRouteService API key.** The same Pricing page has a field for the ORS routing key (`elt_fsm.openrouteservice_api_key`). With a key set, automatic mileage tracking computes the **actual road distance** from the installer's GPS points. Without a key a straight-line (haversine) estimate is used, which underestimates bends. The key is free (openrouteservice.org), 2000 requests/day.

PWA app name (white‑label)#

Settings → Field Service → PWA app name. The name entered here is shown in the installers’ PWA (as the app title and in the top bar). Useful especially when the service is resold — each customer can see their own brand name. Leave it empty to use the company’s default name. The change reaches an installer the next time the PWA fetches settings from the server (on re‑open).

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.

Updates and versioning#

The developer publishes updates automatically — users don’t need to do anything. A new version takes effect when you log out and back in, or refresh the page.

If something looks broken after an update:

  1. Logout + login — new versions require re-authentication.
  2. Clear browser cache (Ctrl+Shift+R / Cmd+Shift+R).
  3. If that doesn’t fix it — notify the developer.

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. General practice:

  • Database dump daily → moved off-site
  • Filestore (images, attachments) synced off-site as well
  • System upgrades are always done alongside a dump

Detailed steps live in the administrator’s internal runbook.

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** under Settings → Logging. 4. If serious: ask the developer to **invalidate all sessions** (forces everyone to re-login). 5. Notify the developer / security lead.