Odoo Field Service Mobile App for Technicians | Flutter Field Service App
Online + Offline Field Operations with Hive Cache and Automatic Sync
Mobile Field Service Management Integrated with Odoo Enterprise (industry_fsm)
My Tasks, All Tasks, Planning, Calendar, Timer, Stages & Chatter on Mobile
This application provides a dedicated Flutter mobile Field Service experience for internal technicians,
fully integrated with Odoo Enterprise Field Service (industry_fsm) using standard
project.task records. Technicians can review assigned work, search and paginate large field service task lists,
start/stop timers, mark tasks as done, plan their week, use the calendar, and communicate through the
standard Odoo Chatter - including text messages and attachments (images, videos, files, audio).
The app is designed for real field conditions with offline cache, a pending operations queue,
and automatic synchronization when connectivity returns.
Purpose of the App
The purpose of this app is to give Field Service technicians a fast, mobile-first workspace that mirrors Odoo Enterprise Field Service workflows, without requiring them to use the full desktop backend on site. It keeps field service task status, timesheets/timer activity, and Chatter communication aligned with Odoo so dispatchers, office staff, and technicians share one source of truth.
Real World Problem It Solves
Field teams often struggle to update Odoo while on site: desktop screens are hard to use on phones, connectivity can drop, and important updates (timer, done status, customer notes, photos) get delayed or lost. This app solves that by providing a technician-focused mobile UI with offline support, so work continues even without network and syncs back to Odoo automatically later.
Who Should Use This App
- Field Service Technicians - manage daily assigned field service taskss, timers, and on-site communication.
- Service Companies using Odoo Enterprise Field Service who need a mobile technician client.
- Internal Users only - designed for internal Odoo users (portal users as FSM technicians are out of scope).
Technical Requirements
- Odoo Enterprise with Field Service (
industry_fsm) - Probuse Flutter base mobile application (authentication / MPIN / settings remain as existing base app)
- Internal technician users with access to Field Service tasks
- Device permissions for camera, microphone, and file storage (for Chatter attachments)
Main Features (Detailed)
- 1) Field Service Home with Bottom Navigation
- Dedicated technician Home body with four tabs: My Tasks, All Tasks, Planning, Calendar.
- AppBar title changes per tab; search icon appears only on My Tasks and All Tasks.
- Keeps Field Service as a focused module experience (not generic module cards).
- 2) My Tasks
- Shows Field Service tasks assigned to the logged-in technician.
- Field Service Tasks are grouped by planned date.
- Sorting: newest planned dates first (Today -> previous dates -> older dates).
- Unscheduled tasks are always placed at the bottom of the list.
- Pull-to-refresh reloads the current page from Odoo / cache.
- Tap a task card to open Field Service Task Detail (with offline seed cache support).
- 3) All Tasks
- Shows all Field Service tasks available to the user.
- Displays key information: customer, assignees, time spent vs allocated, stage, tags, and progress bar.
- Supports the same search and pagination behavior as My Tasks.
- 4) Search (My Tasks & All Tasks)
- Search is opened from an AppBar search icon (not a permanent always-visible bar).
- Typing is debounced (400ms) to avoid unnecessary API calls.
- Search query is applied only to the active tab (My Tasks or All Tasks).
- Closing search clears the query and reloads the list.
- Optimized loading: previous results remain visible during refresh (soft loading), so users do not briefly see 'No tasks assigned' incorrectly.
- Search works together with pagination: a new query resets to page 1.
- 5) Pagination
- Reuses the existing mobile app pagination limit from Settings (15 / 25 / 50 / 100).
- Does not invent a separate pagination system; it follows the existing page-based approach.
- UI control is a small floating pager at bottom-right (example: 1 / 5), above the Bottom Navigation Bar.
- Previous / Next page buttons; total pages calculated using Odoo
search_count. - Applied only to My Tasks and All Tasks (not Planning/Calendar).
- 6) Field Service Task Detail
- Shows task name, project, assignees, planned date range, allocated/effective time (HH:MM), customer, address, and related info.
- Stage bar with fixed Field Service workflow labels: To Do, Planned, In Progress, Done.
- Stage changes write the correct Odoo
stage_idby resolving stage names (including folded Done stages). - Supports opening with an
initialTaskseed so offline open still works from list cache.
- 7) Timer - Start / Stop
- Start begins the Field Service timer on the task.
- Stop stops the timer and records timesheet time according to Odoo Field Service timer flow.
- Offline-safe behavior: local start/stop can queue operations and sync later with idempotent client operation IDs.
- Durations are displayed in HH:MM format for technician readability.
- 8) Mark as Done / Completed State
- Mark as Done validates/completes the field service task in Odoo Field Service (
action_fsm_validatepath). - After success, Flutter UI updates immediately to Completed state.
- When stage is Done: Start, Stop, and Mark as Done buttons are hidden.
- A green Completed chip/state is shown instead.
- Remains correct after reopen/refresh, including offline Done sync and custom Done stage labels.
- Mark as Done validates/completes the field service task in Odoo Field Service (
- 9) Planning
- Weekly planning view for Field Service tasks.
- Helps technicians understand scheduled work across the week.
- Uses Odoo planned date information from Field Service tasks.
- 10) Calendar
- Calendar presentation of Field Service tasks.
- Useful for day/week overview of planned on-site work.
- 11) Chatter - Send Message (Odoo Enterprise)
- Opens as a bottom sheet from Field Service Task Detail.
- Posts using the standard Odoo Chatter mechanism on
project.task:message_postwithmessage_type='comment'andsubtype_xmlid='mail.mt_comment'. - This is Send Message behavior (not Log Note /
mail.mt_note). - Messages appear in the field service taskâs standard Odoo Chatter timeline.
- Does not create a separate
mail.channel/ live-chat system. - Supports:
- Text messages
- Images (camera + gallery/files)
- Videos
- Generic files
- Audio recordings
- Attachment upload uses
ir.attachmentlinked to the field service task, then attached onmessage_post. - Attachment preview page supports image/video/audio preview and download.
- Offline: pending messages/attachments are stored in Hive and synced automatically with duplicate prevention.
- 12) Offline Support & Synchronization
- Hive boxes store field service task list cache, field service task detail cache, pending operations, and synced operation IDs.
- Pending queue covers chatter posts and other offline Field Service actions as implemented.
- When connectivity returns, pending operations sync automatically.
- Client operation IDs prevent duplicate posts if sync retries.
- 13) Odoo Enterprise Visual Theme
- Central theme configuration (
AppColors/ ThemeData) for light and dark mode. - Consistent styling for app bars, buttons, inputs, navigation, cards, chips, dialogs, and bottom sheets.
- Styling remains centralized (not scattered random colors in individual screens).
- Central theme configuration (
Key Workflows
A) Search Field Service Tasks
- Open My Tasks or All Tasks -> tap Search icon -> type query -> debounced fetch -> results replace current page.
B) Complete Field Service Task
- Open Field Service Task Detail -> optionally Start/Stop timer -> Mark as Done -> Odoo validates field service task -> Flutter shows Completed and hides action buttons.
C) Send Chatter Message with Attachments
- Open Field Service Task Detail -> open Chatter -> type message and/or attach camera/file/audio -> Send -> posts as Odoo Send Message on the field service task Chatter.
- If offline, message is queued and appears as pending until sync succeeds.
Menus / Navigation Available on Mobile Application
- Field Service (Home)
- My Tasks
- All Tasks
- Planning
- Calendar
- Field Service Task Detail (from list/card tap)
- Timer actions
- Mark as Done
- Stage selection
- Chatter (Send Message)
- App Settings (existing base app)
- Pagination Limit (15 / 25 / 50 / 100)
- Theme (Light / Dark)
Out of Scope
- Field Service Configuration screens
- Field Service Reporting / analytics dashboards
- Portal users acting as Field Service technicians
- Separate Discuss / live-chat channels (Chatter remains on
project.task)
For a more comprehensive understanding, please review the screenshots below.
Requires: Odoo Enterprise Field Service (industry_fsm) + Probuse Flutter base mobile app.