Il problema del "Dinosauro Software"
Nelle Piccole e Medie Imprese italiane, ma anche in grandi realtà industriali, ci si scontra costantemente con un ostacolo apparentemente insormontabile: il sistema legacy. Parliamo di gestionali ERP sviluppati vent'anni fa, software on-premise installati su server locali polverosi, o sistemi proprietari scritti in linguaggi ormai obsoleti.
Questi sistemi hanno una caratteristica comune: non hanno API (Application Programming Interface). Non offrono endpoint REST, non supportano Webhook e non permettono alcuna comunicazione nativa con il mondo esterno. Tuttavia, contengono i dati vitali dell'azienda: anagrafiche clienti, ordini, giacenze di magazzino, listini prezzi.
Sostituire questi sistemi ("rip and replace") è spesso un suicidio operativo ed economico nel breve termine. La soluzione non è la sostituzione immediata, ma l'integrazione forzata. In questa lezione avanzata analizzeremo le quattro strategie architetturali per estrarre e inserire dati in sistemi privi di API, garantendo sicurezza, stabilità e performance.
---
Strategia 1: Accesso Diretto al Database (Direct DB Querying)
Se il software non ha API, quasi sicuramente si appoggia a un database relazionale sottostante (SQL Server, MySQL, PostgreSQL, Oracle o persino Microsoft Access). Se possiamo accedere direttamente al database, non abbiamo bisogno del software per estrarre i dati.
La regola d'oro: Mai scrivere sul DB di produzione
Mentre la lettura dei dati è un'operazione relativamente sicura, la scrittura diretta sul database di un ERP legacy è altamente rischiosa. I gestionali eseguono controlli di validazione complessi a livello di codice applicativo prima di salvare un record. Scrivere direttamente in una tabella SQL bypassando l'interfaccia del software può corrompere l'integrità referenziale del database, bloccando l'intera azienda.
L'architettura sicura: Read-Only Replica e SSH Tunneling
Per leggere i dati in sicurezza senza impattare sulle performance del gestionale:
- Read-Only Replica: Configura una replica in sola lettura del database. Le tue automazioni interrogheranno questa replica, eliminando il rischio di bloccare le tabelle di produzione (table locking) durante query pesanti.
- Sicurezza di rete: Non esporre mai la porta del database (es. 3306 per MySQL, 1433 per SQL Server) su internet. Utilizza una VPN aziendale o un Tunnel SSH crittografato per connettere la tua piattaforma di automazione (es. n8n self-hosted o gateway dedicati) al database locale.
---
Strategia 2: La pipeline basata su File Flat (SFTP + CSV/XML)
Molti gestionali legacy non offrono API, ma dispongono di funzionalità interne per esportare report periodici o tracciati record in formato piatto (CSV, XML, TXT). Questa è spesso la via più stabile e scalabile.
Il flusso logico di una pipeline SFTP si articola in tre fasi:
- Esportazione Locale: Un task pianificato sul server locale (es. Windows Task Scheduler o un cron job Linux) esegue un'esportazione dal gestionale e salva il file (es.
giacenze.csv) in una cartella locale. - Trasferimento Sicuro: Un semplice script (PowerShell o Bash) carica il file su un server SFTP (Secure File Transfer Protocol) esterno.
- Polling e Parsing: La tua piattaforma di automazione monitora la cartella SFTP. Non appena rileva un nuovo file, lo scarica, esegue il parsing del formato (CSV/XML) e distribuisce i dati ai sistemi moderni (es. Shopify, HubSpot).
---
Strategia 3: Email Parsing come API di emergenza
Se il gestionale non permette l'accesso al database e non ha funzioni di esportazione pianificabile su file, ma è in grado di inviare email automatiche (es. notifiche di nuovi ordini, report giornalieri in PDF o Excel), possiamo usare l'email stessa come vettore di integrazione.
Utilizzando un servizio di Email Parsing (disponibile nativamente in quasi tutte le piattaforme iPaaS o tramite tool dedicati come Mailgun o Zapier Parser), possiamo:
- Creare una casella email di ricezione dedicata (es.
orders-parser@tuaazienda.it). - Configurare il gestionale per inviare i report a questo indirizzo.
- Estrarre l'allegato (es. un file Excel) o fare lo scraping del corpo del testo tramite espressioni regolari (RegEx) o parser semantici basati su LLM (Large Language Models) per strutturare il dato in formato JSON pronto per essere elaborato.
---
Strategia 4: RPA (Robotic Process Automation)
L'ultima spiaggia, da utilizzare quando tutte le altre strade sono impraticabili, è la Robotic Process Automation (RPA). L'RPA simula il comportamento umano sullo schermo: apre il software desktop, fa clic sui pulsanti, digita sulle tastiere e copia i dati dall'interfaccia utente.
Strumenti come Power Automate Desktop, UiPath o script Python basati su librerie come Selenium o Playwright (per interfacce web legacy) possono automatizzare questo processo.
| Vantaggi dell'RPA | Svantaggi dell'RPA |
|---|---|
| Funziona con QUALSIASI software, anche il più obsoleto. | Estremamente fragile: se l'interfaccia grafica cambia di un solo pixel o una finestra si apre con un secondo di ritardo, l'automazione si rompe. |
| Non richiede modifiche al codice del sistema legacy. | Richiede spesso una macchina virtuale (VM) dedicata sempre accesa con una sessione utente attiva. |
| Ideale per data entry ripetitivi e massivi. | Difficile da scalare e monitorare rispetto a un'integrazione a livello di database o file. |
---
Esercizio Pratico: Progettare un'integrazione SFTP-to-Cloud
In questo esercizio progetteremo la logica di un'automazione che sincronizza le giacenze di magazzino da un ERP locale privo di API a un e-commerce moderno (es. Shopify), utilizzando la Strategia 2 (File Flat). Questo approccio evita di toccare il database di produzione.
Fase 1: L'estrazione dei dati (On-Premise)
Ipotizziamo che il tuo gestionale esporti ogni notte alle 02:00 un file chiamato export_magazzino.csv nella cartella C:\ERP_Exports\ del server locale. Il file ha questa struttura:
CODICE_ARTICOLO;QUANTITA;PREZZO
ART-001;150;12.50
ART-002;0;45.00
ART-003;12;8.90Fase 2: Lo script di upload (PowerShell)
Per automatizzare il caricamento del file su un server SFTP sicuro, puoi pianificare l'esecuzione di questo script PowerShell sul server Windows dell'ERP:
# Configurazione parametri
$LocalFile = "C:\ERP_Exports\export_magazzino.csv"
$RemotePath = "/uploads/export_magazzino.csv"
$SFTPHost = "sftp.tuaazienda.it"
$Username = "sftp_user"
$Password = "SuperSecurePassword123!"
# Caricamento del file (utilizzando il modulo WinSCP o librerie native)
# Nota: Questo è uno pseudocodice di logica operativa
Write-Host "Inizio caricamento del file $LocalFile su SFTP..."
# [Logica di connessione e upload SFTP]
Write-Host "Upload completato con successo."
Fase 3: Elaborazione nell'iPaaS (La logica dell'automazione)
Ora, all'interno della tua piattaforma di automazione cloud (come Make o n8n), configurerai un flusso strutturato come segue:
- Trigger (Pianificazione): Il flusso si attiva ogni notte alle 03:00 (un'ora dopo l'esportazione dell'ERP).
- Nodo SFTP (Download): Si connette al server SFTP, preleva il file
/uploads/export_magazzino.csve lo cancella dal server SFTP per evitare di rielaborarlo il giorno successivo (gestione dello stato). - Nodo Loop (Iteratore): Per ogni articolo presente nel JSON, esegue una chiamata API verso l'e-commerce per aggiornare lo stock in base al campo
sku.
Nodo CSV Parser: Converte il file di testo in un array di oggetti JSON strutturati. Il dato grezzo diventa:
[
{ "sku": "ART-001", "qty": 150, "price": 12.50 },
{ "sku": "ART-002", "qty": 0, "price": 45.00 }
]Questo approccio asincrono è robusto, non sovraccarica il gestionale legacy durante le ore di lavoro e garantisce che, anche in caso di disconnessione temporanea di internet in azienda, l'allineamento dei dati avvenga non appena i sistemi tornano online.