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:

  1. 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.
  2. Trasferimento Sicuro: Un semplice script (PowerShell o Bash) carica il file su un server SFTP (Secure File Transfer Protocol) esterno.
  3. 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.90

Fase 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:

  1. Trigger (Pianificazione): Il flusso si attiva ogni notte alle 03:00 (un'ora dopo l'esportazione dell'ERP).
  2. Nodo SFTP (Download): Si connette al server SFTP, preleva il file /uploads/export_magazzino.csv e lo cancella dal server SFTP per evitare di rielaborarlo il giorno successivo (gestione dello stato).
  3. 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.