Az alábbi sikertörténet valójában két jól sikerült munkát foglal össze. Korábban több alkalommal vittünk már véghez olyan jellegű migrálást, amikor nem volt a cégnek korábban saját levelező rendszere, csak (jobb esetben) Outlook-ba beállított levelezés, (rosszabb esetben) Thunderbird vagy valami egyéb levelezőprogram, esetenként webmail. Ilyenkor általában a meglévő levelező programba a régi fiók mellé csatoltuk mindig az új fiókot és IMAP segítségével kézzel mozgattuk át a korábbi leveleket. Jobb esetben Outlook PST-ből tudtunk közvetlenül importálni egy frissen felépített Exchange rendszerbe.
A címben szereplő történetben ez nem így történt. Egy picit nehezebb változatát kellett elvégezni a levelezés átpakolásánál, amikor ügyfelünknél igényként felmerült a közös naptárak, értekezletek összehívása, csoportmunka funkciók, teendőlista és egy jól működő, felhasználóbarát adatszinkron (ActiveSync) igénye, így a meglévő linuxos levelezőrendszert egy minden tekintetében modernebb és barátságosabb Exchange levelezőrendszerre cseréltük. A gépek többségén Outlook levelezők voltak IMAP-pal beállítva, a lehetőség tehát itt is adott lett volna, hogy mappánként tegyük át a leveleket, azonban ez a 160-170GB körüli és 30-35 fiók közötti levelezőrendszer esetében nem lett volna járható út. A feladatra 1 hétvégénk volt, hétfőn már a kliensek átállításával kellett kezdeni, hogy a munka ne álljon le a cégnél.
Elsőként feltelepítettük az új szerver gépet, amelyen helyet kapott először egy Active Directory címtár (amellyel korábban szintén nem rendelkeztek) és egy másik virtuális gépen helyet kapott az Exchange rendszer is. Miután a felhasználókat Powershell-ből felvittük, kialakításra kerültek az időközben szintén Excel táblákba felvitt postafiókok is. Az Exchange-et bekonfiguráltuk az IMAP használatához, majd egy kimondottan a migrálás céljára létrehozott felhasználó számára hozzáférési jogot adtunk az új postafiókokra, így egyetlen név/jelszó segítségével lehetőség nyílt a migrálást elvégezni. A közös csatorna, az IMAP tehát megvolt a szerverek közt, már csak a script-eket kellett előállítani. Mivel a linuxos felhasználói fiókok listája és azok jelszavai rendelkezésre álltak, így már az imapsync telepítését követően a forrás szerveren, a linuxon kezdtük el a scripteket kialakítani. A migrálási táblázatból mentett szövegfájl tartalmazta a felhasználónév/jelszavakat, illetve a minden joggal felruházott migráló felhasználó hozzáférését, ami az Exchange oldalról biztosította a jogokat. Az adminisztrátor és néhány korábbi dolgozó levelezésével élesben teszteltük a script-eket még a hétvégét megelőzően, hogy aztán a péntek délután beköszöntével élesben is elindulhasson a script az összes felhasználó fiókján.
Természetesen nem ment ennyire simán minden, már a próba migrálások alkalmával is számos problémával kellett megküzdeni, köztük a Citrix Xen hálózatkezelési bugjával is, ami az amúgy sem túl acélos hálózati kapcsolatot folyton 10MBit-re vette le. Az éles migrálás alatt is jelentkeztek problémák, főleg az átviteli sebességekkel és az ezzel járó időtúllépési hibákkal. Egyes imapsync folyamatok a nagyobb postafiókok esetén rendre leakadtak, így volt fiók, amelyen többször is el kellett indítani a script-et, hogy végül minden átmenjen. A migrálási folyamat minden egyes száláról közben a script jelentést küldött a rendszergazdai fiókba, így folyamatosan nyomon tudtuk követni a folyamatot. Vasárnapra végül az utolsó levél is megérkezett az Exchange-be. Hozzá kell tenni, hogy ez idő alatt aki már ismerte az Exchange webes elérését, esetleg be tudta magának állítani a telefonját az új szerverre az egész idő alatt már tudott küldeni és fogadni is az új szerverről/re.
Hétfőn aztán megtörtént a gépek Windows-os tartományba való beléptetése is, majd az Outlook-ok beállításra kerültek az Exchange használatára. Már a kliensek beállításakor azt tapasztaltuk, hogy a gyakorlottabb felhasználók már az átállás alatt elkezdték használni az új rendszer nyújtotta lehetőségeket, értekezlet összehívásokat, közös naptárakat, egyebeket. A néhány Thunderbird felhasználó számára volt kicsit keserűbb az indulás, nekik végül egy ingyenes bővítmény segítségével sikerült Exchange üzemmódban beállítani a levelezést, amit nem sokkal később a bővítmény fizetőssé válásával az IMAP váltott fel, természetesen így csökkent funkcionalitással. Az átállás viszont teljes győzelemmel zárult, a régi linuxos levelező kiürült, a hétfői induláskor a küldés/fogadás már gőzerővel az új rendszerről futott, ahogyan a régi levelek is mind elérhetőek voltak az új szerveren.
Ekkor még nem tudtuk, hogy ez a munka egy remek főpróbája volt egy fél évvel későbbi nagy migrálásnak, ahol ugyanez volt a feladat, csak nagyban. 500GB levelezés és 200 körüli fiókszám. Mivel itt korábban már az Active Directory rendelkezésre állt így picit módosultak a folyamatok, de alapvetően ugyanaz zajlott. Telepítettük az Exchange Servert (ez esetben már a 2016-ot, ami nem sokkal ezelőtt jelent meg RTM változatban) és beállítottuk. Amikor minden teszt sikeres volt Excelben összeraktuk a migrálási táblát. Mivel nagyon nagy mennyiségű adatról volt szó, és a korábbi tapasztalat az volt, hogy az imapsync sebessége messze elmarad a tényleges hálózati átviteli sebességektől (jellemzően 2-3MB/sec sebességgel csorogtak az adatok a másik helyen), így a projektbe egy plusz csavart is bele kellett vinni. Mivel nem voltunk biztosak abban, hogy a péntek délután-hétfő reggel intervallumban mindent át tudunk másolni, továbbá több dolgozónak is szüksége volt a hétvégén a levelezésére, így kénytelenek voltunk felállítani egy prioritási listát. A tervezés ezen fázisa a helyi informatikával együttműködve történt. A migrálandó fiókokat tartalmazó Excel táblába létrehoztunk egy új oszlopot, prioritás. Nullás prioritás értéket kaptak azok, akiknek hétvégén szüksége van a postafiókjára, ez 2-3 felhasználót érintett. 1-est azok, akiknek hétvégén nem, de hétfőn feltétlen szükség van a levelezésére, ők voltak jellemzően a nagyobb vezetők. 2-est a kisebb vezetők kaptak, akik szintén magas prioritásúak voltak, majd következtek a kevésbé fontos felhasználók és a már nem használt, de még fontos archív leveleket tartalmazó fiókok. Ez utóbbiakat próba migrálásként már csütörtök-péntek folyamán átpakoltuk tesztelve a rendszert és a scripteket. Az 5-6-os (5 – nem fontos, 6 – archív) prioritást kapott dolgozók fiókjai voltak azok, akiknél belefér az is, hogyha a hétfői napon még nem férnek hozzá a leveleikhez. A táblázatba egy script segítségével lekérdezett levélfiók méretek is felvezetésre kerültek, így néhány Excel függvény használatával már láttuk is, hogy az adott prioritású felhasználók összesen hány GB levelezést hoznak át magukkal. Számoltunk vele, hogy IMAP-pal lassú lesz a migrálás, így a prioritásos migrálás bevezetése mellett is volt B terv, szükség is volt rá.
Péntek délutánig átmozgattuk a próbamigrálásra kijelölt fiókokat, amivel a munka néhány százaléka készült el, egyben teszteltünk mindent. Az átviteli adatok itt is adtak okot az aggodalomra, habár az előző munka során a hálózati problémákból eredő időtúllépések itt elmaradtak. Eljött a munkaidő vége, hazament mindenki, kezdődött az éles folyamat. Első körben mentek a 0-ás prioritásúak. Éjfél körül át is értek, ezzel az első és legfontosabb lépés teljesült, ők már szombat reggel tudtak dolgozni az új levelezőrendszerrel. Aztán éjfél után indultak az 1-es prioritásúak, akikből már jóval több volt, és jellemzően nagy postafiókok, így a teljes állomány kb. 25-30%-át ők adták. Szombat reggelre aztán már látszott, hogy ezzel a tempóval kb. 5-6 nap lenne a teljes migrálás, így először be kellett vetni a B, majd a C tervet is, legvégül a menet közben született D tervet is.
A B terv az volt, hogy lassú migrálás esetén a script egy apró módosításával kizárjuk a migrálásból a nagyobb méretű leveleket, azokat egy második körös migrálással pakoljuk át. A módszer működött, a nagyobb méretű csatolmányokkal rendelkező levelek ott maradtak a régi rendszeren, a script pedig lépett tovább és egyre gyorsabban pakolta át a fiókokat. A tempó azonban még így is nagyon kevés volt, becslés szerint jó esetben a 3-as prioritású fiókok végéig jutott volna csak el a script hétfő reggelre. Így eljött a C terv ideje. Ez előtte a másik helyen már kipróbálásra került, ott a hálózati sávszélesség problémája miatt kevésbé, itt szerencsére jobban működött. A két Exchange közötti migrálás adta az alapötletet, ott ugyanis beállítható a rendszerben, hogy egyszerre hány migrálási folyamatot végezzen a gép. Mivel ott a sávszélességet alapból korlátozza a rendszer (hogy közben használni is lehessen akár a levelezést), így nagy mennyiségű levélnél muszáj hozzányúlni, hogy belátható időn belül végezni tudjunk. Az imapsync esetében is működött, a fiókok adatait tartalmazó szövegfájlt több részre, több fájlra bontottuk szét és egyszerre több scriptet futtattunk. A 2 script ugyan nem jelentett 2-szeres sebességet, de kb. másfelet igen, így sokat gyorsult a folyamat. Sajnos nem eleget, így szombat estére eljött a D verzió ideje, a script-ekbe beépítettük, hogy a régebbieket ne pakolja át, csak az x időnél újabb leveleket. Ekkor már a 2-es prioritású fiókokig minden készen volt, szombat este egy újabb script az 1-2 prioritású fiókokból kihagyott nagyobb leveleket is átpakolta, így odáig teljesen meg voltunk. A 3-as prioritástól kezdődően már csak az újabb és kis méretű leveleket szedtük át. Így végül hétfő reggelre már a script-ek az 5-ös prioritással bíró fiókok utolsó leveleit pakolták át, a munkaidő kezdete környékén futtathattuk újra őket az összes fiókon, már kizárások nélkül, ami végül a 3-5 prioritású fiókokon másnap reggelre végzett csak. A jó szervezésnek köszönhetően nem hiányolt senki semmit abban az egy napban, amikor még picit hiányos levelezéssel futott a rendszer.
Itt mivel nagyrészt webes felületet engedélyezett a dolgozóknak a vezetőség, így a hétfő reggel nyugodtabban telt. A hétvége folyamán beállítottunk egy csoportházirendet, ami a felhasználók asztalára ikonként kiteszi a webes felület URL-jét, illetve ezen kívül a kedvencekbe, a start menübe is helyez el linkeket. Bár az ügyfelet felkészítettük rá lélekben, hogy hétfőn még várható leállás, minden bizonnyal nem lesz teljesen készen minden, a jó szervezésnek köszönhetően fennakadásmentesen rajtolhatott az új rendszer, aminek az extra funkcióit sokan el is kezdték még aznap használni.
Aztán kicsivel később többen jelentkeztek, hogy szükségük lenne a korábban beállított levelezőklienseikből (Outlook, Thunderbird), másoknál a webmailből az automatikus kiegészítés elemeire, illetve többen használtak névjegyeket is. Mivel senki nem tudta pontosan, hogy ki hogyan levelezik a régi rendszeren így ezeket az igényeket csak egyenként tudtuk kezelni és bár számítottunk rá és készültünk előre, nem ment simán. A régi webes levelezőt használó felhasználók adatait a Roundcube webes levelezőjük tartalmazta, annak az exportjával nem mentünk sokra. A PostgreSQL adatbázishoz hozzáférve viszont egy szerkesztő progival ki tudtuk nyerni ömlesztve az automatikus kiegészítések és címjegyzék adatait. Egy másik fájlba pedig kinyertük, hogy melyik felhasználóhoz milyen azonosító tartozik. Így volt két fájl, benne ömlesztve az adatokkal. Olyan formába kellett hozni, ami importálható, ha lehet tömegesen az Exchange-be. Kb. 1 órás munkával írtunk rá egy programot, ami szabvány XML-es formába külön-külön fájlokba elmenti felhasználónként az adatokat. Ezt a formátumot aztán egy másik, netről letölthető program már tudta olvasni és konvertálni nekünk PST-be. Amikor készen állt a rengeteg apró felhasznalonev.pst fájlunk, készült rá egy Powershell script, ami szépen betolta mindet az Exchange-be. Ezzel a webmail-esek gondja megoldódott. Az asztali levelező kliensekből érkező adatokat aztán egyesével át kellett alakítani PST-be és importálni azok számára, aki ezt kérte. Nehézkes és fáradtságos munkával, de aztán végül minden megérkezett az Exchange rendszerbe.
Ennek már másfél éve, az Exchange azóta is néhány apróbb hibát leszámítva közel 100%-os rendelkezésre állással üzemel és teszi a dolgát.