Odoo: New record

trigger_odoo_polling · trigger · Triggers · Available · v1.0.0

Description

Innesco di polling enterprise che firma un nuovo run del workflow ogni volta che compare un nuovo record in un modello Odoo specificato — sostituisce l'assenza di webhook nativi del core Odoo Community (su Enterprise esiste il modulo automation ma richiede l'installazione e setup non sempre fattibile in tenant cliente). Architettura: il trigger scheduler del runtime FlowForge invoca questo trigger ogni pollIntervalSec (default 60s, range 15s-3600s in base alla criticità — 15s per ordini e-commerce, 5min per nuovi lead, 1h per anagrafica), autentica via /xmlrpc/2/common, esegue search_read sul modello configurato con domain filter dell'utente + un cursor implicito [("id", ">", lastSeenId)] che garantisce EXACTLY-ONCE delivery anche in presenza di crash del runtime, recovery, network blip o spostamento di container tra host (lastSeenId è persisto nello state store del trigger, non in memoria volatile). Per ogni nuovo record trovato, parte un singolo run del workflow con il record completo come trigger input — i tuoi nodi downstream possono leggere fields["name"], fields["email"], ecc. direttamente. Dopo ogni batch processato, lastSeenId è aggiornato al MAX(id) del batch in un'unica transazione atomica per evitare race-condition tra polling overlap (es. polling interval più breve della latency del run). Edge case: se un workflow downstream è lento (es. fa LLM call), un nuovo polling parte comunque (non c'è mutex globale sul trigger) ma il cursor protegge da duplicate processing — la peggiore cosa che può succedere è una micro-latency extra sul DB Odoo, non un duplicate run. Rispetta i record rules dell'utente di login (che vede solo i record permessi dalla sua security group), quindi creare un utente Odoo dedicato "Workflow Bot FlowForge" con accessi minimi è raccomandato per limitare l'esposizione. Esempi tipici di modelli pollati: crm.lead per nuovi lead da form web Odoo (alimenta sales sequence), mail.message per nuovi messaggi nel chatter (utile per audit di interazioni cliente), res.partner per nuove anagrafiche aggiunte manualmente da segreteria (sincronizza con MailChimp/HubSpot), sale.order per nuovi ordini in stato draft (revisione automatica), helpdesk.ticket per nuovi ticket assegnati da frontoffice (alerting whatsapp al team tecnico), account.move per fatture appena emesse (export verso gestionale esterno o sistema banca per anticipo fattura). Use case operativi: studio commercialista polleha crm.lead ogni 5min — ogni nuovo lead da Google Ads form lancia un workflow che fa scoring, manda email benvenuto e crea attività su mail.activity per il junior; e-commerce wine.it polleha sale.order ogni 60s — nuovo ordine triggera workflow di verifica giacenza magazzino + email conferma + creazione spedizione GLS; SaaS B2B polleha res.partner solo dei contatti creati negli ultimi 7gg per active_customer_rank > 0 — sync verso HubSpot CRM per il team marketing.

⚙️ Configuration parameters

Fields shown in the editor when configuring the node. Generated directly from the NodeDefconfigFields.

FieldTypeRequiredDefaultDescription
baseUrl
URL Odoo (https://)
stringyes
https://mio-odoo.example.it
URL base della tua istanza Odoo. https:// obbligatorio in produzione. Senza /web, senza /xmlrpc.
database
Nome database
stringyes
odoo_studiocommercialista
login
Utente Odoo
stringyes
[email protected]
Utente con permessi di sola lettura sui modelli che vuoi triggherare. Per produzione crea un utente dedicato "Workflow Bot" con accesso minimo.
password
Password o API Key
string (encrypted)yesAPI Key (Odoo 14+) raccomandato. Bypassa il 2FA e non scade.
model
Modello Odoo
stringyes
crm.lead oppure mail.message oppure res.partner
Nome tecnico del modello. Esempi: crm.lead (nuovi lead), mail.message (nuovi messaggi/email), res.partner (nuovi contatti), account.move (fatture). Lowercase con punti.
domainJson
Domain (filtro)
codeno
[["stage_id","=",1], ["team_id","=",5]]
Filtra ulteriormente i nuovi record. Array di triple [campo, operatore, valore]. Solo i record che matchano avviano il workflow. Vuoto = tutti i nuovi record nel modello (rispetta record rules).
fieldsJson
Campi da leggere
codeno
["id","name","email","phone","partner_name","stage_id"]
Array di nomi campo da includere nel trigger input. Vuoto = tutti (lento, paylod grande). Tipicamente leggi solo i campi che il workflow usa.
pollIntervalSec
Intervallo polling (secondi)
numberno60Frequenza polling. Default 60s (1 round/min). Range 10-3600 (max 1h). Sotto i 30s carica troppo Odoo per nessun beneficio.
batchLimit
Max record per poll
numberno50Numero massimo di nuovi record da elaborare PER POLL. Se ne arrivano di piu`, gli altri sono presi nel poll successivo. Range 1-500. Protegge da burst nemicizzanti il LLM downstream.
initialBacklog
Backlog iniziale
enum
skiplast-24hlast-weekall
noskipCosa fare al PRIMO avvio del trigger (quando lastSeenId e` ignoto). skip = ignora tutto il preesistente (default, comportamento "da ora in poi"). last-24h / last-week = recupera solo i record creati nelle ultime 24h / settimana. all = scorre TUTTI i record esistenti (può essere migliaia, attento al cost).
timeoutMs
Timeout HTTP (ms)
numberno30000Range 1000-180000.

💡 Configuration example

JSON snippet of the node as it appears in the workflow. Values are derived fromdefaultValue and from required parameters.

{
  "id": "node-trigger_odoo_polling-1",
  "defId": "trigger_odoo_polling",
  "label": "Odoo: New record",
  "config": {
    "baseUrl": "https://mio-odoo.example.it",
    "database": "odoo_studiocommercialista",
    "login": "[email protected]",
    "password": "<password>",
    "model": "crm.lead    oppure    mail.message    oppure    res.partner",
    "pollIntervalSec": 60,
    "batchLimit": 50,
    "initialBacklog": "skip",
    "timeoutMs": 30000
  }
}

🔗 Related nodes in the same category

Ready to use Odoo: New record?

Available now on all FlowForge plans. Try it free without a credit card.

Start freeBrowse all nodes