Liigu edasi põhisisu juurde
Illustratsioon, millel mees ja naine visualiseerivad andmete migreerimise teekorda Redmine'ist Jirasse

Kuidas me aitasime Kaitseministeeriumil Redmine’ist piletid Jirasse üle kolida

Alice Bakhoff, Raimo Roots, Külli Solo, Taavi Valgma

NB! Juhime tähelepanu, et Atlassiani tooteid arendatatakse tempokalt. Artiklis välja toodud tooteomadused võivad ajas muutuda.

 

Järgnevaga anname ülevaate, miks tekkis Kaitseministeeriumil vajadus kolida andmed Redmine keskkonnast Jirasse, kuidas migreerimiseks ette valmistuti ning millised probleemid protsessi käigus lahenduse leidsid.

 

 

Keskne infosüsteem hoiab tiimi samal lehel

„Tekkis vajadus vähendada infosüsteemide platvorme,“ kommenteerib Kaitseministeeriumi infohaldusjuht Külli Solo otsust andmed Redmine’ist Jirasse kolida.

 

„Kaitseministeeriumi juhtimisinfo, mille osa on sisuliselt ka Redmine´is olnud info, asub Jira-s,“ täpsustab ta. 

 

Migreerimisprotsessiks arvestati pool kuud.


„Ettevalmistuseks kontrollisime, et test Jira ja live Jira on ühistel alustel. Tegime Redmine’ist full backupi ja lõime kõikidesse kohtadesse testkasutajad, mida vajadusel kasutada saaks,“ selgitab Kaitseministeeriumi süsteemiadministraator Taavi Valgma.


„Ajalist ressurssi planeerisime tõesti 2 nädalat, kuid sisimas oli lootus, et äkki saame ühe nädalaga hakkama. Eksisime rängalt, kuna selgus, et tegemist on täiesti nullist lähenemisega kus otsuseid tuli vastu võtta jooksvalt ning nende järelmitega ka siis tegeleda,“ avaldab ta.

 

„Lisaks süsteemsetele ettevalmistustele organiseerisin ka kohapeale arvuti, mida TWNi spetsialist Raimo kasutada saaks ja lõin vastavad õigused domeenis toimetamiseks. Arvutit kohapeale oli vaja seepärast, et andmete välja viimine majast ei olnud lubatud ja kõik tööd tuli ära teha on-prem,“ lisab Taavi.

 

„Rohkem ei osanud ette valmistada, sest ei teadnud täpselt, mida selline migreerimine kaasa võib tuua. Palju oli abi visualiseerimisest ja põhipunktide üleskirjutamisest,“ lisab Taavi kokkuvõtlikult. 

 

Välisest tootekeskkonnast andmete importimine Jirasse – takistused ja lahendused 

Alates 8.4 versioonist ei sisalda Jira Software enam sisseehitatud spetsiifiliste toodete importereid. Redmine puhul tähendab see, et andmeid saab Jirasse importida CSV või JSON formaadis.

 

Piletite info laadimine Redmine’ist 

Info kättesaamiseks Redminest kasutati API endpointi, mis väljastas andmed JSON kujul.


Kuna selgus, et piletid tulid APIst 100 kaupa, siis tehti nende jaoks 47 käsitsi salvestust. Lisaks salvestati eraldi veel projektide, kasutajate ning staatuste info.

 

JSON info laetakse Excelisse, et andmeid Power Queryga töödelda

Kuna Redmine'ist eksporditud andmed ei vastanud Jira impordi formaadile, siis oli vaja andmeid töödelda. Selle jaoks kasutati Excelis Power Queryt, millega kaasnesid ka omad nüansid.


Power Query laiendab kõik andmed uutele ridadele mitte tulpadesse, mille tulemusena tekib ühe pileti kohta mitu sissekannet (näiteks igal real on uus manus või ajaloo sissekanne). 


Jira jaoks on aga vaja, et andmed oleks eraldi tulpades (5 manust tähendab 5 tulpa, mitte rida). Selleks, et andmed ridadest tulpadesse saada, tuleb esialgu andmed ära laiendada ning hiljem vormindada.

 

Andmed salvestatakse CSV formaati

Lõpliku CSV salvestamisel tuleb tähelepanu pöörata sellele, et dokumendi encoding oleks õige (UTF-8, et kõik täpitähed oleksid korrektsed) ning et igal tulbal oleks määratud pealkirjad.

 

Manused tuuakse ühest serverist üle teise

Manused ei olnud Redmine serveris samade nimedega, mis piletite info küljes oli. 


Piletite küljest saadi kõikide manuste allalaadimise lingid ja need pandi kokku ühte tekstifaili. Firefoxi mass downloader plugin võimaldas hunniku linke korraga alla laadida, misjärel laeti need failid arvutisse, pakiti kokku, laeti Jira import kausta ning pakiti seal uuesti lahti. 

 

Jiras tehakse CSV import 

Impordi jaoks loodi eraldi administraatori õigustega kasutaja, millega teostati andmete import. See tagas, et kõik piletid ja kommentaarid on loodud selle neutraalse süsteemi kasutaja poolt.

 

Andmete export Jirast CSV'sse, et lisada piletite omavahelised seosed 

Piletite omavahelist sidumist ei olnud võimalik esimeses impordis teostada, kuna piletitel ei olnud Jira ID-sid.


Peale Jirasse importimist tehti kõikidest piletitest CSV eksport (ajutiselt suurendati ekspordi limiiti) ja genereeriti sellest tabelist kaks tabelit. 


Ühes loodi seosed, kuidas Jira Key = Redmine ID ning seejärel kasutati seda tabelit, et lisada piletitele uus tulp, kus oli seos Parent ID = Jira Key


Lisaks oli vaja kontrollida, kas mõni pilet oli seotud mitme piletiga, et siis see info oleks eraldi tulpades.


Viimaks toodi Jirasse sisse uuendatud tabel, kus oli paika pandud pileti pealkiri, KEY, seos ja uus seose tüüp „Redmine linking“.

 

Jira ja Redmine kasutajate seostamine 

Kuigi Jiras olid osad Redmine kasutajad olemas, ei sidunud Jira imporditud pileteid nende kasutajatega.


Probleemi lahendamiseks eksporditi nimekiri Jira kasutajatest Excelisse, et tekiks kaks tulpa - täisnimi ja Jira kasutajanimi. CSV tabelis tuli täisnimi asendada Jira kasutajaga, kui neile leidus vaste antud tabelist.


Kuna piletite ajalugu oli suur tabel, kus polnud kirjas projekte, inimeste nimesid ega staatuseid, asendati kõik ID’d vastavate väärtustega.

 

Ajalugu lisati iga pileti külge kommentaarina, kus iga sissekanne oli eraldi kommentaar.

 

 

Edukas migreerimine algab läbimõeldud strateegiast

Andmete ülekandmisel ühest süsteemist teise on oluline, et algallika andmed oleksid viidud sihtkeskkonna poolt toetatud formaati.  


Samuti tuleb olla tähelepanelik, et migratsiooni käigus midagi kaduma ei läheks. Selle tagamiseks tasub jooksvalt kontrollida, et andmete koguarv vastaks esialgselt eksporditud andmete hulgale