

Uno dei sistemi ERP che i nostri clienti italiani per i quali ci viene richiesta più spesso una integrazione in Italia è sicuramente Gamma Evolution di Team System.
Gamma Evolution risponde alle esigenze di dover gestire processi di produzione e diverse complessità che una sola piattaforma di eCommerce non potrebbe risolvere in autonomia.
In questo articolo non entreremo per ovvie ragioni nelle specifiche funzionalità che Gamma Evolution offre ma ci concentreremo sull’oggetto; ovvero come è possibile integrare Magento e Gamma Evolution, nello specifico come sincronizzare quelli che chiamiamo “hot data” di prodotto.
La sfida
Un nostro cliente ci ha chiesto un chiaro aiuto per sincronizzare gli stock e i prezzi presenti sul proprio gestionale Gamma Evolution su Adobe Commerce (aka Magento).
Limitazioni
Per potere elaborare una soluzione solida, dobbiamo fare i conti con elementi di contesto che possono essere di diversa natura (di budget, di tempo, tecnologica o di possibilità di gestione).
Ovviamente questo tipo di valutazione si risolve in una buona chimica tra agenzia e cliente, non sempre immediata ma comunque possibile con le giuste intelligenze e capacità coinvolte.
Piccoli problemi di network
Sembra essere una prassi per molti clienti utilizzare Gamma Evolution in un server ospitato all’interno dell’azienda. Abbiamo riscontrato questo tipo di gestione in molti altri clienti e per tutti il motivo principale è sempre lo stesso: performance. Sono anche da considerare anche gli aspetti di sicurreza, ma per esperienza personale sembra essere una preoccupazione secondaria per le piccole imprese.
Tale decisione è un po’ in controtendenza con le soluzioni più moderne, ma dobbiamo appunto fare i conti con questa limitazione.
Pronto Gamma? Che lingua parli?
In questo caso la risposta è semplice, si tratta di un servizio di tipo REST API.
Il servizio non è comunque di immediata disponibilità perchè appunto richiede una configurazione di un system integrator per poter funzionare. Il consiglio è quello di richiedere a Gamma per abilitare tali funzionalità.
Cronjob si, ma quanto mi “costi”?
“Vogliamo che gli stock siano sempre* in sync tra i due sistemi.“
Su Gamma Evolution non sembra esserci possibilità di utilizzare webhooks (per lo meno non out of the box).
Questo significa che Magento non ha nessuna visibilità delle variazioni avvenute su Gamma.
Dobbiamo quindi necessariamente eseguire una richiesta a Gamma e valutare se sono presenti variazioni e in tal caso registrarle su Magento.
La soluzione
In sintesi, abbiamo creato un plugin, che attraverso un crojob interroga le WEBAPI di Gamma e aggiorna stock e prezzi su Magento.
Nonostante la semplicità di questa descrizione, l’implementazione richiede in realtà diverse accortezze
Per potere ottimizzare tale processo abbiamo inoltre applicato le seguenti ulteriori accortezze:
1. Configurato un processo dedicato in importazione dedicato
Significa che Magento non importa semplicemente tali informazioni ma lo fa attraverso un processo asyncrono con una gestione di code, significa che può importare in maniera simultanea diversi prodotti e struttare le capacità multithread di esecuzione del sistema..
2. Configurato una gestione di reindicizzazione specifica per prodotto
Significa che Magento non reindicizza l’intero catalogo e tutti gli indici, ma solo quelli relativi agli stock variati.
3. Configurato una gestione di invalidazione di cache specifica per item
Perchè pulire l’intera cache e perdere così tutti i vantaggi di performance offerti da Magento? Abbiamo implementato una soluzione che invalida esclusivamente gli elementi in cache relativi solo a tali prodotto (pagine di categoria che contengono tali prodotti).
Considerazioni finali
Pensiamo che ad oggi sia necessario risolvere questo tipo di implementazioni con dei webhook.
Abbiamo per un altro cliente implementato lo stesso tipo di servizio ma per un sistema di gestione point of sale che ha funzionalità di webhook.
Questi ultimi devono comunque essere implementati con una particolare attenzione alla gestione degli orrori: cosa succede se Magento non è temporaneamente reperibile? Quante volte deve riprovare il sistema a ricontattare quest’ultimo? Con quanta distanza di frequenza?
Ogni soluzione ha degli aspetti positivi e degli altri negativi, in funzione del contesto dobbiamo con maturità affrontare tale analisi e offrire una soluzione “olistica” che risponda alle complessità di questo mondo.