Datová migrace Microsoft Dynamics CRM
Čtvrtek, 05 Březen 2009 16:22

datová migrace pomocí nástroje Cleverlance CRM Framework
Přechod zákazníků na nový systém obnáší mimo jiné i požadavky na přenos dat ze stávajících systémů do systémů nových. Tento požadavek s sebou přináší mnoho problémů, protože přenesená data musí být kompletní a validní, přitom se zdrojové a cílové úložiště mohou lišit a také struktura dat bývá velmi odlišná. Ani v případě Microsoft Dynamics CRM tomu není jinak. Pro datové migrace do tohoto systému se osvědčil nástroj Cleverlance CRM Framework, který podporuje CRM verze 3.0 a 4.0.

Postup migrace

Největší přínos Cleverlance CRM Frameworku je ve zkrácení doby potřebné pro datovou migraci. Je toho dosaženo velkou mírou automatizace mnoha kroků při datové migraci, jako například příprava struktury vstupních dat, validace vstupních dat, kontrola zadání požadovaných údajů podle CRM, kontrola vazeb mezi entitami nebo zálohy CRM databází. Z hlediska implementace se datové migrace skládají z těchto kroků: příprava zdrojových dat, načítání dat pro migraci, vytváření entit pro CRM, volání webových služeb CRM, záznam o výsledku vytváření entit, zálohy databází. Framework je navržen tak, že kteroukoliv jeho část lze nakonfigurovat podle aktuálních potřeb, nebo zcela vyměnit za vlastní implementaci.

Příprava zdrojových dat

S pomocí Cleverlance CRM Frameworku lze jako zdroj dat pro datovou migraci použít MS SQL Server 2000 nebo 2005. Díky modulárnosti Frameworku lze použít vlastní implementaci pro práci s daty a použít tak jakýkoliv jiný zdroj dat. Framework bude do budoucna rozšiřován o nové zdroje dat. Uvažuje se například o XML souborech, MS Access, MS Excel, Oracle nebo MySQL.
Přípravou zdrojových dat se rozumí jejich příprava do takové formy, aby byla srozumitelná a snadno použitelná pro vytváření entit pro Microsoft Dynamics CRM. V případě MS SQL to znamená vytvoření pohledu dle požadované struktury. Tento pohled pak vybírá data ze zdrojové databáze pro migraci, například původní data z účetního systému.

Načítání dat pro migraci

Cleverlance CRM Framework z pohledu výše popsaného vybírá bloky dat, které dále zpracovává. Velikost těchto bloků lze samozřejmě konfigurovat, defaultní hodnota je pět tisíc záznamů. Na každém načteném řádku je provedena validace dat a kontrola vazeb na jiné entity. Dále se provede kontrola, zda záznam obsahuje všechny atributy potřebné pro vznik dané entity v CRM. Framework umí také nastavit defaultní hodnotu nebo pevnou hodnotu pro daný atribut. Validaci dat a vazeb, kontrolu úplnosti dat i přednastavené hodnoty lze konfigurovat nebo nahradit za vlastní implementaci. Lze tak například dosáhnou toho, že v případě chybějící vazby na uživatele bude tento uživatel načten z Active Directory.
Zpracovávání jednotlivých řádků je až do doby odevzdání výsledku volání webové služby CRM prováděno asynchronně. Asynchronní zpracování se provádí na základě aktuálního hardwaru a vytížení stroje. Díky tomu se během vykonávání datové migrace mění počet pracovních vláken, aby se dosáhlo optimální rychlosti a zamezilo se přetížení systému.

Vytváření entit pro CRM

Po validaci načtených dat přichází na řadu vytváření entit CRM, které se posílají jako požadavek na vytvoření pomocí webových služeb CRM. Vytvoří se typ entity, která se migruje, a postupně se plní její atributy načtenými daty. Pokud se migruje entita typu aktivity, jsou automaticky načteny a vytvořeny také návazné entity typu activityparty. Data se musí převést ze vstupního formátu SQL do formátu CRM. Například z SQL DateTime na CRMDateTime. Převody dat do datových typů CRM lze nahradit vlastní implementací, nebo nahradit jen určitý datový typ.

Volání webových služeb CRM

Vytvořené CRM entity, které jsou naplněné validními daty, se posílají jako požadavek na vytvoření pomocí webových služeb CRM. Toto volání je ještě stále provázeno asynchronně. Framework při tomto neustálém volání webových služeb používá předinicializované spojení na CRM server, čímž se eliminuje prodleva potřebná pro otevírání nových a nových spojení a zvyšuje se rychlost vytváření dat. Tuto část Frameworku lze opět konfigurovat, případně nahradit vlastní implementací. Lze tak například dosáhnout vlastního load balancingu a rozesílat požadavky na více CRM serverů v clusteru pro ještě vyšší rychlost.

Záznam o výsledku vytváření entit

Po volání webových služeb CRM je výsledek tohoto volání předán rodičovskému vláknu a tím končí asynchronní část zpracovávání dat. Rodičovské vlákno takto po blocích sbírá výsledky vytváření entit, které pak promítne zpět do zdrojové databáze. Z těchto údajů jsou pak čerpány údaje pro vazby dalších entit na právě migrovanou entitu. Data, která nejsou vytvořena z důvodu jiného než nekonzistence dat, jsou po provedení všech požadavků ještě jednou poslána pomocí webových služeb CRM na vytvoření. Pokud i v tomto kroku dojde k chybě, je uživateli zobrazen report a je na něm, jak s daty dále naloží. Je kdykoliv možné pokusit se naimportovat pouze tyto neprovedené záznamy, nebo v případě pádu systému či neočekávaného ukončení lze navázat a pokračovat v migraci.

Zálohy databází

Cleverlance CRM Framework poskytuje prostředky pro zálohu databází CRM a zdrojové databáze pro datovou migraci. Migrace je pro uživatele velmi snadná, není zapotřebí znalost MS SQL. První záloha, kterou se doporučuje provést na začátku migrace, je záloha plná. Každá další záloha může být rozdílová, čímž se ušetří místo na disku.

Použití CRM Frameworku

Datovou migraci lze pomocí Cleverlance CRM Frameworku provést dvěma způsoby: pomocí uživatelského rozhraní, nebo programově pomocí tříd, které migraci implementují. Následující odstavce popisují tato použití pro migraci faktur a kontaktů z účetního systému firmy do MS Dynamics CRM. Předpokládejme, že v MS SQL jsou již vytvořeny potřebné pohledy s požadovanou strukturou, které poslouží jako zdroj vstupních dat.
Použití uživatelského rozhraní je velmi snadné, intuitivní natolik, aby datovou migraci zvládnul uživatel s běžnými znalostmi. Po načtení hlavního formuláře, zadání adresy CRM serveru a nakonfigurování databází je zobrazen seznam entit, které lze do daného CRM prostředí importovat. Obsaženy jsou samozřejmě i custom entity, tedy ty, které jsou vytvořeny zákazníkem. Prostým zaškrtnutím se vyberou entity pro datovou migraci, nastaví se pořadí migrace (kvůli vazbám na další entity), pomocí tlačítka se vloží zálohy databází a pouhým kliknutím na tlačítko se spustí samotná migrace. Uživatel je poté informován o průběhu migrace pomocí stavového řádku a statusu u jednotlivých entit. Zobrazuje se například počet entit k migraci, počet již zmigrovaných entit, procentuální stav aj.
Programové použití je možné v .NET Frameworku 3.5 po přidání reference na Cleverlance.CRM.Framework.dll. Zpřístupní se tím třídy, které slouží pro práci se CRM i pro datovou migraci. Součástí je i logování, třídy pro práci s konfiguračním nastavením a další. Nejjednodušším způsobem použití je třída CRMEntity, která je generická, a dále jen volat metody této třídy:

String entityName = "opportunity";
CRMEntity entityMapper = new CRMEntity(entityName);
SQLStateAdapter stateAdapter = new SQLStateAdapter(entityName);
 SQLMigrationReader reader = new SQLMigrationReader(entityMapper, stateAdapter);
 CRMMigrationWriter writer = new CRMMigrationWriter(entityMapper, stateAdapter);
EntityMigration migration = new EntityMigration(reader, writer);
 migration.DoMigration();

Toto volání spustí samotnou datovou migraci pro entitu contact. Dále se bude logovat do debugovacího okna a konfigurace se načte z konfiguračního souboru. V delegátu stavu migrace jsou předávány všechny potřebné údaje, jako počet entit k migraci, kolik entit už je odmigrováno apod.

Rychlost při nasazení

Díky optimalizaci pomocí asynchronního zpracování dat a vytváření entit v CRM lze dosáhnout velmi dobrých výsledků z hlediska rychlosti migrace. Při nasazení na průměrném serverovém hardwaru při migraci entity contact se 160 atributy rychlostí zhruba dvanáct tisíc záznamů za minutu. Cleverlance CRM Framework ovšem nešetří čas potřebný pro migraci pouhým rychlým vytvářením entit, ale také mnoha automatizovanými úkony, které velmi ulehčují práci pověřeným pracovníkům. V případě složitějších migrací je tak možné zkrátit migraci z několika měsíců na týden.

Autor působí jako .NET team leader / SW architekt ve společnosti Cleverlance Enterprise Solutions.