noticies / Newsletter

Importador 7.2

Albert Cervera i Areny

Importador 7.2

Hola,

una de les peces clau en bona part dels projectes d'implantació d'un ERP és la migració de les dades del sistema (o sistemes!) actuals al nou.

És un procés que fem en la immensa majoria d'implantacions i per tant, ja fa més una pila d'anys que ens hi barallem i hem passat per unes quantes fases.

Abans d'explicar-les però, t'haig dir que quan arrenquem un nou projecte no fem un traspàs de dades, sinó que creem un procés de traspàs de dades.

És a dir, busquem tenir la capacitat de reproduir el traspàs de dades tantes vegades com sigui necessari. D'aquesta manera, podem fer el definitiu en qüestió de minuts o poques hores i permet que els usuaris no hagin de mantenir simultàniament les dades al seu software anterior i al nou durant setmanes.

Utilitzar un ETL

Quan vam començar semblava evident: el millor per fer la importació de dades és utilitzar Kettle, un ETL (de l'anglès Extract Transform Load) de codi obert.

Un ETL és un tipus d'eina gràfica especialitzada a la transformació i càrrega d'informació així que lògicament semblava l'única opció. Fins i tot, vam fer un plugin per Kettle per carregar les dades directament a l'ERP.

El problema era que la feina feta no era fàcil de reutilitzar entre diferents projectes, era lent i sobretot es tornava molt complicat a mesura que creixia el procés d'importació.

La conclusió per nosaltres ha estat que quan hi ha complexitat, el que et convé és utilitzar un llenguatge de programació, no una eina que et promet estalviar-te programar. Si no, acaba sent pitjor el remei que la malaltia.

Scripts i programes a mida

En veure que clarament la cosa no funcionava vam començar a crear scripts (petits programes) per cada projecte.

Certament era millor que utilitzar un ETL però realment hi ha coses que són semblants d'un projecte a un altre i era una mica frustrant haver de copiar i enganxar i modificar.

Al mateix temps això feia impossible que clients o consultors sense coneixement de programació fessin migracions de dades.

Per altra banda, hi ha casos en què es volen incorporar dades al sistema després de l'arrencada. Per exemple, per importar tarifes de proveïdors anualment, comandes de clients diàriament, etc.

El mòdul importer

La decisió va ser crear el mòdul Tryton importer que servís tant per importacions inicials com per posteriors.

Vam crear un sistema que permet als usuaris importar dades a partir de diferents formats de fitxer (com CSV, XLSX), copiant i enganxant, posant un enllaç directe a un full de càlcul de Google Drive o accedint directament a una altra base de dades.

Sobre aquesta base vam anar implementant diversos importadors de dades específics per apunts comptables, comandes, productes, tercers (clients i proveïdors), etc.

Això donava molta autonomia a clients i consultors ja que podien fer importacions des de la interfície del programa i estalviava a programació la part de llegir diferents formats de fitxer perquè internament teníem un sistema unificat.

Crear un nou importador requeria moltes menys hores.

Tot i la millora, vam veure que podíem fer molt més si posàvem el focus en la velocitat. No tan sols en el sentit del temps que passa des que apretes el botó fins que tens les dades a l'ERP sinó també en la velocitat d'adaptar l'importador a les necessitats de cada projecte.

Per això, a partir de la versió 7.2 hem fet unes quantes millores...

Mòdul importer 7.2

De fet, hem incorporat més de 25 millores al mòdul importer per a la nova versió.

Te'n deixo les més destacades:

  • L'usuari pot definir valors per defecte quan el document d'origen no té dades en una columna, estalviant haver de modificar el document original.
  • Abans mostràvem a l'usuari totes les columnes que el sistema acceptava. Ara també li mostrem un llistat amb totes les columnes del fitxer origen. Això ajuda a l'usuari a ser exahaustiu i respondre dues preguntes: Estic omplint tots els camps que vull? I també: estic agafant tots els que vull del document d'origen?
  • El procés d'importació és més ràpid gràcies a la creació de memòries intermitges (cache), extremadament fàcils d'utilitzar a nivell de programació.
  • Diverses millores van en la línia de poder fer moltes més proves. La importació és un procés de molts detalls, així que és molt important que sigui ràpida però també que no falli amb el primer error que es troba. Hem afegit diverses millores que ho permeten i a més permeten saber amb precisió quins són els registres problemàtics un cop ha acabat el procés. També és possible importar només una part de les dades per fer proves ràpides de canvis concrets.
  • Ara el programador pot canviar el comportament del procés segons si l'usuari ha decidit importar un camp o no. Abans, si arribava un valor en blanc no podíem saber si és que arribava buit del fitxer de dades o és que simplement no hi havia la columna.
  • És possible utilitzar el nom del fitxer que s'està important per carregar dades. Per exemple, un client nostre rep comandes on el nom del fitxer conté el codi de client. Amb aquesta millora, el sistema ja sap a quin client es fa referència simplement seleccionant el fitxer.
  • És més fàcil importar les dades que depenen de la companyia i també els noms i textos que varien segons l'idioma.
  • Podem eliminar les dades que s'acaben d'importar amb només un clic. Així, podem corregir el procés i tornar a provar la importació ràpidament.
  • Hem creat un exportador d'importadors. Sona a joc de paraules, però simplement és un mecanisme que ens permet fàcilment desar el procés d'importació.
  • Ens hem dotat de la infrastructura necessària per poder importar informació a partir de fitxers PDF, és més laboriós però hi ha casos en què l'empresa només pot obtenir la informació en aquest format. Ho tenim resolt.

A més, hem adaptat la majoria d'importadors (productes, tercers, vendes, etc) per fer ús de totes aquestes millores.

I no pot ser més senzill?

Una bona pregunta a fer-se és si no podem tenir un importador 100% genèric: és a dir, que segons els camps que té l'ERP permeti importar qualsevol dada.

Però de fet, aquest importador ja existeix a Tryton.

El problema? Que no serveix.

I no serveix perquè una cosa és importar les dades quan ja tenen l'estructura que necessites i l'altra és transformar-la a partir del format que hi ha al sistema actual de l'empresa.

Per exemple, una cosa tan senzilla com la província, en unes bases de dades l'obtindrem amb un nom lleugerament diferent al de les províncies que ja té Tryton carregades (Illes Balears / Islas Baleares), en altres casos les haurem de deduir a partir del codi postal (si hi és).

I un problema afegit és que en la majoria de casos la qualitat de la informació original és baixa. Seguint l'exemple: codis postals que no coincideixen amb la província correcta en les dades que s'han d'importar i cal decidir què preval.

Repetir el procés

Amb totes aquestes millores a lloc, hem guanyat molt però encara no era suficient.

Com t'explicava al començament nosaltres no fem un traspàs de dades, sinó que creem un procés de traspàs de dades.

De la mateixa manera que per perfeccionar un plat de cuina no hi ha res com fer-lo moltes vegades, per tal d'assegurar-nos que aquest procés funciona bé és extremadament important repetir-lo. I com més el repeteixes, millor funcionarà el dia D.

Així que hem creat un mecanisme 100% automatitzat que repeteix diverses vegades al dia el procés d'importació d'un projecte nou.

Tenim l'objectiu de no fer una mateixa feina dues vegades i el procés d'importació encara era d'aquelles tasques que havíem de llançar manualment diverses vegades abans no arrencava definitivament un client.

Un procés més automatitzat.

Salut i bona setmana!