Gamma Evolution e Magento

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.

“HOT DATA” di prodotto: dati che sono soggetti a frequenti modifiche da parte degli ecommerce managers come prezzi e stocks.
Si differenziano ovviamente dai “cold data” di prodotto (nome, categorie, attributi etc) poichè non definiscono caratteristiche che chiamiamo “anagrafiche”.
In maniera più generica possiamo anche dire che in realtà questa definizione determina la probabilità con la quale questi dati potrebbero cambiare in futuro.

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à.

Magento offre un servizio di REST API che espone immediatamente diversi servizi con una semplice configurazione dalla sezione di backoffice e inoltre offre una estensiva documentazione disponibile online.

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.

Magento utilizza un sistema di indici per velocizzare la consultazione di tali informazioni da parte degli utenti. Qui trovi maggiori informazioni.

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.

#lasfida

Sono contenuti che parlano di piccole e grandi sfide che abbiamo affrontanto in Emergento entrando un po’ nei retroscena della risoluzione di un problema tecnico con la promessa di analizzare il problema dal punto di vista logico, insomma senza troppo codice.

l'autore di questo articolo
Antonino Bonumore
Software Architect - Magento

Ascoltare, comprendere e fare tante domande per me è un gioco serio.
La soluzione del tuo progetto per me si traduce in componenti.
Conosco Magento ed è la mia specialità da più di 10 anni.
Se vuoi parlare con me è perchè vuoi determinare un progresso per la tua idea.

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *