Flux de lucru sugerat pentru o migrare complexă a datelor

Acest articol sugerează un proces pas cu pas pentru migrarea unor cantități mari de date. Când transferați date de pe un CRM puternic bazat pe cloud, este important să planificați cu atenție din cauza configurației sale complexe, cum ar fi obiecte personalizate, legături între date și ID-uri unice de înregistrări. Trebuie să vă gândiți atât la pașii tehnici, cât și la modul în care funcționează migrarea în practică.

  • Abordare tehnică: acoperă pașii cheie de migrare - extragerea, transformarea și încărcarea datelor în Dataverse - asigurând în același timp integritatea, păstrarea relațiilor și optimizarea performanței prin validare și gestionarea erorilor.
  • Abordare funcțională: Acoperă sarcinile de migrare funcțională, cum ar fi segmentarea și arhivarea datelor, și evidențiază necesitatea de a implica părțile interesate din afaceri pentru a se asigura că datele le satisfac nevoile.

Abordarea tehnică pentru migrarea datelor

Asigurați o migrare fără probleme urmând o abordare structurată - extrageți, transformați și încărcați date, păstrând în același timp integritatea și minimizând întreruperile.

Diagramă care ilustrează un flux de lucru de migrare a datelor cu șase cercuri interconectate ca pași.

Extragerea datelor din sursă în baza de date de pregătire

Pentru migrări complexe de date, vă recomandăm să pregătiți datele într-o bază de date separată (de exemplu, SQL Server). Această zonă de pregătire surprinde un instantaneu al sistemului sursă fără a întrerupe operațiunile de afaceri în curs.

Considerații cheie:

  • Încărcare completă vs. sarcină delta: Organizați datele ca sarcini complete sau incrementale (delta). Utilizați marcaje temporale generate automat pentru a urmări sosirea datelor și pentru a identifica modificările pentru încărcăturile viitoare.
  • Gestionarea failover-ului: Proiectați procesul pentru a omite înregistrările eșuate (de exemplu, din cauza lungimii câmpului, a căutărilor nevalide) fără a opri migrarea. Înregistrați și rezolvați problemele înainte de reprocesare.
  • Maparea câmpurilor: Convertiți valorile sursă pentru a se potrivi cu formatele țintă din stratul de pregătire și intervalele de valori din baza de date de pregătire înainte de a migra datele în Dataverse pentru a îmbunătăți eficiența.
  • Validarea datelor: Rulați verificări de integritate pentru a detecta probleme precum referințele lipsă. Deoarece extragerea datelor se poate întinde pe ore sau zile, utilizați stratul de pregătire pentru a filtra înregistrările incomplete și pentru a asigura consecvența.
  • Vizualizarea datelor: Utilizați baza de date de pregătire pentru a audita și analiza datele, de exemplu, numărarea înregistrărilor sau însumarea câmpurilor financiare, înainte de migrarea finală.

Transformați datele în baza de date de pregătire țintă

După ce extrageți date din sistemul sursă, transformați-le într-o bază de date de pregătire țintă care oglindește schema Dataverse și conține valori gata pentru inserare sau actualizare directă.

Etape cheie de transformare:

  • Maparea câmpurilor: Mapați coloanele sursă la coloanele Dataverse vizate. Utilizați scripturi pentru a uni și a îmbina tabele acolo unde este necesar.

  • Conversia setului de opțiuni: Convertiți valorile setului de opțiuni bazate pe text în numere întregi Dataverse utilizând un tabel de mapare (de exemplu, OptionSetMapping) și interogări de actualizare în bloc. Creați un tabel pentru a standardiza și automatiza transformarea valorilor setului de opțiuni de la sistemele sursă la sistemele țintă.

    Tabel: OptionSetMapping

    Nume coloană Tip de date
    Nume tabelul sursă string
    Nume tabel țintă string
    Textul sursă string
    Text țintă string
    Valoare țintă string

    Utilizați tabelul OptionSetMapping pentru a transforma și actualiza eficient valorile setului de opțiuni în bloc. De exemplu, pentru a actualiza toate valorile setului de opțiuni din tabelul Contact pe baza valorilor text potrivite:

    Update C.\<OptionsetValue\> = M.\<TargetValue\> 
    FROM Contact C 
    JOIN OptionsetMapping M 
      ON C.OptionsetText = M.TargetText 
      AND M.TargetTableName = 'Contact'
    
  • Evitați GUID-urile personalizate: Lăsați Dataverse să genereze GUID pentru a preveni fragmentarea și problemele de performanță.

  • Verificări lungime șir: Asigurați-vă că valorile șirului se potrivesc cu limitele Dataverse. Tăiați sau reglați după cum este necesar.

  • Câmpuri calculate: Adăugați câmpuri derivate (de exemplu, Nume pentru căutări) dacă lipsesc din sursă.

  • Alte considerații: Atunci când proiectați tabele care să se potrivească cu schema Dataverse, luați în considerare următoarele coloane cheie și tabele de suport.

    • DataMigration_CreatedDateTime: Marcaj de timp populat automat pentru urmărirea loturilor de încărcare a datelor.
    • Semnalizator de acțiune: Indică Inserare (I), Actualizare (U) sau Ștergere (D).
    • Steag de procesare: Urmărește starea - Procesat (P), Neprocesat (U), Eroare (E) sau Succes (S).
    • Coloană unică: Utilizați un ID unic (de exemplu, ID-ul unic din sistemul sursă) pentru a mapa înregistrările.
    • Tabele de succes/eroare: Păstrați tabele separate (de exemplu, Contact_Success, Contact_Error) pentru a înregistra rezultatele și pentru a sprijini încercările.

Tabele de secvență și căutări de preîncărcare

După transformări statice, ordonați tabelele pentru a reduce dependențele ciclice - cazuri în care tabelele se referă între ele, făcând imposibile importurile izolate. Utilizați această abordare:

  • Listați toate tabelele eligibile pentru migrare.
  • Numărați căutările unice pentru fiecare tabel (ignorați câmpurile predefinite, cum ar fi Created By și alte căutări de tabel dacă nu migrați).
  • Sortați tabelele în ordine crescătoare după numărul de căutări.
  • Includeți tabele de relații N:N, numărând ambele căutări.
  • Excludeți căutările cu mai multe tabele (de exemplu, câmpurile "referitores").

Această abordare definește secvența de încărcare a migrării datelor și funcționează bine în majoritatea scenariilor. Pentru cazuri mai complexe:

  • Utilizați un identificator unic (de exemplu, importsequencenumber) pentru a potrivi înregistrările între pregătire și Dataverse atunci când sunt generate GUID-uri în timpul inserării.
  • Separați jurnalele de succes și erori pentru a evita problemele de blocare și pentru a îmbunătăți performanța.
  • Preîncărcați GUID-urile de căutare din tabele deja migrate pentru a rezolva referințele în timpul inserării.
  • Gestionați dependențele ciclice prin:
    • Inserarea înregistrărilor fără căutări dependente.
    • Actualizarea acestor căutări după încărcarea înregistrărilor asociate.

Încărcați date în Dataverse

Următorul pas este să determinați și să implementați abordarea de încărcare a datelor în Dataverse.

  1. Instrumente: Selectați un instrument în funcție de dimensiunea și complexitatea datelor:

    • Instrument de migrare a configurației SDK
    • Azure Data Factory
    • KingswaySoft
    • Scrib
    • Transportorul de date XrmToolBox
  2. Considerații cheie (independent de instrumente):

    • Gestionați dependențele ciclice: Secvențiați sarcinile tabelului pentru a minimiza căutările circulare. Introduceți înregistrări fără căutări dependente, apoi actualizați-le ulterior.

    • ID-uri de înregistrare de urmărire: Capturați GUID-urile Dataverse într-un tabel de succes, apoi actualizați tabelul principal utilizând un identificator unic (de exemplu, importsequencenumber).

    • Optimizați dimensiunea lotului și numărul de fire de execuție: Consultați instrucțiunile pentru optimizarea performanței pentru operațiunile în bloc. Aplicația pe care o utilizați trebuie să gestioneze erorile de protecție a serviciului care apar atunci când sunt trimise un număr extraordinar de solicitări către Dataverse. Dacă scrieți propriul cod și utilizați API-ul web Dataverse, asigurați-vă că încercați din nou erorile 429, așa cum este descris în Limitele API-ului de protecție a serviciilor. Dacă utilizați SDK-ul Dataverse, acesta gestionează aceste erori pentru dvs.

      Pentru a obține performanțe optime, reglați dimensiunea lotului și numărul de fire în funcție de complexitatea tabelului:

      • Tabele out-of-the-box (OOB) (de exemplu, Contact, Cont, Lead): Aceste tabele sunt mai lente din cauza pluginurilor și lucrărilor încorporate. Recomandat: Dimensiunea lotului 200-300, până la 30 de fire (dacă ≤10 căutări și 50-70 coloane).
      • Tabele simple (puține sau deloc căutări): Recomandat: Dimensiunea lotului ≤10, până la 50 de fire.
      • Tabele personalizate moderat complexe (unele căutări): Recomandat: Dimensiunea lotului ≤100, până la 30 de fire de execuție.
      • Tabele mari/complexe (>100 de coloane, >20 de căutări): Recomandat: Dimensiunea lotului 10-20, până la 10-20 de fire de execuție pentru a reduce erorile.
  3. Sfaturi pentru infrastructură: Pentru a maximiza performanța migrării datelor, rulați migrarea de la o mașină virtuală (VM) situată în aceeași regiune cu mediul Dataverse. Această abordare reduce semnificativ latența și accelerează întregul proces. Aflați cum să determinați regiunea mediului Dataverse.

  4. Gestionarea erorilor: Nu ignorați erorile - rezolvați-le pentru a preveni defecțiunile în cascadă. Utilizați valori implicite (de exemplu, căutări necompletate, valori implicite ale setului de opțiuni) pentru a insera înregistrări substituente și a captura GUID-uri.

  5. Actualizări de stare: setați starea activă numai în timpul inserării inițiale a înregistrării. Pentru înregistrări inactive sau coduri de stare/stare personalizate, actualizați-le după validarea datelor. Pentru majoritatea tabelelor particularizate, actualizările de stare pot urma imediat după inserare. Cu toate acestea, pentru tabele speciale, cum ar fi Caz, Oportunitate sau Client potențial, întârziați actualizările de stare până la sfârșitul migrării. Odată ce aceste înregistrări sunt închise, ele nu pot fi modificate decât dacă sunt redeschise - un proces consumator de timp care pune în pericol integritatea datelor.

  6. Proprietate și securitate: Setați proprietarul corect al înregistrării în timpul inserării datelor, deoarece atât securitatea la nivel de utilizator, cât și securitatea unității de business în Dataverse sunt legate de unitatea de business a proprietarului. Atribuiți unitatea de afaceri potrivită la creare - actualizarea acesteia ulterior elimină toate rolurile de securitate.

    • Utilizați utilizatori de cioturi:
      • Dataverse acceptă utilizatori stub (fără licență), care sunt utili pentru migrări mari sau istorice. Utilizatorilor stub li se atribuie automat rolul de securitate Agent de vânzări - nu redenumiți și nu modificați acest rol. Utilizatorii de cioturi pot deține înregistrări dacă au acces de citire la nivel de utilizator la tabelele relevante.
    • Recomandări:
      • Creați toți utilizatorii fără licență în timpul migrării cu unitatea de business corectă setată la momentul inserării.
      • Nu modificați unitatea de business după creare, deoarece acest lucru elimină toate rolurile, inclusiv Vânzător.
      • Asigurați-vă că rolul de agent de vânzări are acces de citire la toate tabelele eligibile pentru migrare.
      • Chiar și utilizatorii dezactivați în mediul Dataverse cu acest rol pot deține înregistrări.
  7. Gestionarea monedei: Setați ratele de schimb în timpul inserării utilizând un plugin de prevalidare, deoarece Dataverse nu acceptă ratele istorice.

Postați încărcarea datelor în Dataverse

După încărcarea datelor în Dataverse, urmați acești pași pentru a asigura integritatea datelor și a minimiza problemele din aval:

  1. Actualizați tabelul principal cu GUID-uri:

    • După o încărcare reușită, copiați GUID-urile înregistrărilor Dataverse din tabelul de succes în tabelul principal, utilizând un identificator unic, cum ar fi importsequencenumber.
    • Actualizați indicatorul de procesare pentru a marca înregistrările ca:
      • P – Procesat
      • E – Eroare
      • U – Neprocesat Această strategie permite reluări eficiente prin omiterea înregistrărilor deja procesate și acceptă rezoluția de căutare în încărcările ulterioare.
  2. Reîncercarea înregistrărilor eșuate: Pentru a reduce reprelucrarea și a menține integritatea referențială, luați în considerare aceste acțiuni:

    • Decupați valorile șirului dacă depășesc lungimile permise.
    • Aplicați valorile implicite ale setului de opțiuni atunci când mapările lipsesc.
    • Atribuiți un proprietar de rezervă dacă proprietarul inițial nu este disponibil (chiar și ca utilizator ciot).
    • Utilizați valori goale sau implicite pentru căutările nerezolvate.
    • Chiar și înregistrările substituente pot ajuta la generarea GUID-urilor necesare pentru căutările în tabelele asociate.

Utilizarea tabelelor elastice pentru migrarea datelor

Tabelele elastice sunt concepute pentru a gestiona volume mari de date în timp real. Cu tabele elastice, puteți importa, stoca și analiza volume mari de date fără probleme de scalabilitate, latență sau performanță.

Tabelele elastice oferă capabilități unice pentru schema flexibilă, scalarea orizontală și eliminarea automată a datelor după o anumită perioadă de timp.

Tabelele elastice sunt stocate în Azure Cosmos DB și acceptă:

  • Date fără schemă prin coloane JSON
  • Scalare orizontală automată
  • Timp de viață (TTL) pentru ștergerea automată a datelor învechite
  • Partiționare pentru optimizarea performanței

Tabelele elastice sunt cele mai potrivite pentru importurile în vrac cu schemă variabilă.

Tabelele elastice sunt ideale pentru anumite tipuri de date.

Tip de date Descriere
Date brute de ingestie Jurnale sursă, fluxuri de senzori sau exporturi în bloc din sisteme vechi. De exemplu, jurnalele de interacțiune cu clienții dintr-un ERP moștenit, fire de e-mail vechi și tichete de asistență din sistemul anterior.
Înregistrări semi-structurate Date cu câmpuri opționale sau în evoluție care nu se potrivesc unei scheme rigide. De exemplu, formulare de feedback ale clienților cu câmpuri opționale sau formulare de înregistrare la evenimente cu note sau etichete personalizate.
Pregătirea datelor pentru validare O zonă de așteptare temporară înainte de sincronizarea datelor cu tabele relaționale. De exemplu, date despre clienții potențiali importați care așteaptă deduplicarea și validarea înainte de a fi adăugate la tabelul principal Clienți potențiali.
Date sensibile la timp sau care expiră Utilizați TTL (Time-to-Live) pentru ștergerea automată a înregistrărilor CRM temporare. De exemplu, coduri de reducere promoționale legate de o campanie, link-uri de acces unice pentru sondaje pentru clienți sau portaluri de integrare și răspunsuri temporare la sondaje.
Date în bloc partiționate Partiționați datele după ID sau categorie pentru a îmbunătăți performanța și scalabilitatea. De exemplu, partiționați după ID-ul contului sau ID-ul regiunii în timpul migrării în bloc a datelor sau segmentați jurnalele de activitate ale clienților în funcție de ID-ul campaniei pentru analize.

Tipuri de date nepotrivite pentru tabele elastice

Tabelele elastice sunt optimizate pentru scenarii flexibile, la scară mare, dar nu toate tipurile de date se potrivesc. Această secțiune evidențiază modelele comune de date CRM care sunt mai bine stocate în altă parte pentru a asigura performanța, eficiența costurilor și întreținerea. Aflați mai multe despre caracteristicile care nu sunt acceptate în prezent cu tabelele elastice

Tip de date Reason
Date extrem de relaționale Tabelele elastice nu acceptă asocieri sau căutări
Înregistrări critice pentru afaceri Fără integritate tranzacțională sau suport pentru pluginuri
Date care necesită validare complexă Mai bine gestionat în tabele standard cu reguli de afaceri

Segmentarea funcțională a datelor și cadrul de arhivare

Planificarea tehnică eficientă include selectarea instrumentelor și infrastructurii potrivite, alinierea volumelor de date sursă și țintă și stabilirea proceselor de audit și reconciliere. Multe migrări devin complexe din cauza lipsei de analiză inițială, în special în ceea ce privește datele care trebuie să fie mutate și unde le este locul. Această secțiune prezintă principiile de bază ale analizei datelor pentru a sprijini o migrare de succes.

Segmentarea datelor

Segmentarea datelor este un pas cheie în migrarea de la un sistem CRM la Dataverse. Organizați tabelele de date în funcție de funcția de afaceri, cum ar fi vânzări, servicii sau marketing, pentru a simplifica planificarea și execuția migrării.

Segmentarea tabelelor

Începeți prin a lista toate tabelele eligibile pentru migrare, grupate în funcție de domeniul de activitate (de exemplu, vânzări, marketing, servicii). Apoi:

  • Documentați schema în Excel sau un instrument similar.
  • Rulați interogări de bază în sistemul sursă pentru a verifica utilizarea coloanelor.
  • Semnalizați coloanele cu utilizare redusă. Dacă mai puțin de 5% din înregistrări conțin valori, consultați părțile interesate pentru a decide dacă să le păstrați sau să le eliminați.

Această analiză simplă poate reduce semnificativ domeniul de aplicare al migrării. În sistemele CRM de lungă durată, este obișnuit să eliminați 30-40% de coloane și până la 20% de tabele, eficientizând procesul și îmbunătățind performanța.

Relevanța coloanelor

Unele coloane ale sistemului sursă se mapează direct la Dataverse, în timp ce altele devin câmpuri calculate. Separați aceste coloane și consultați părțile interesate din afaceri pentru a decide dacă sunt necesare locuri de muncă de migrare.

Ignorați coloanele care sunt relevante numai în sistemul sursă sau care nu sunt semnificative în țintă. Aceasta include multe câmpuri predefinite, cum ar fi Creat de, Modificat de sau Număr versiune rând, cu excepția cazului în care servesc unui anumit scop în migrare.

Date de tip de fișier

Dacă sistemul sursă include date de tip fișier, semnalizați aceste câmpuri din timp și planificați o strategie de migrare separată. Luați în considerare următoarele tipuri de fișiere:

  • Documente Office (de exemplu, Word, Excel, PowerPoint): Pentru până la 20.000 de fișiere, migrați la o platformă colaborativă precum SharePoint pentru a activa accesul mai mulți utilizatori.
  • Fișiere multimedia (de exemplu, imagini, videoclipuri): Alegeți o platformă care acceptă redarea. Opțiunile includ SharePoint, servicii de streaming sau alte soluții de stocare compatibile cu media.
  • Volume mari sau dimensiuni de fișiere: Dacă costul de stocare este o problemă, utilizați Azure Blob Storage sau coloana de fișiere native din Dataverse, care utilizează Azure Blob în culise.
  • Protecție împotriva programelor malware: Rulați fișiere printr-un instrument de detectare a programelor malware (de exemplu, Azure Advanced Threat Protection) înainte de migrare pentru a asigura securitatea.

După revizuirea relevanței fișierelor, descoperiți adesea că volumul total de date scade semnificativ - în special în sistemele CRM de lungă durată - făcând migrarea mai eficientă.

Strategii de arhivare a datelor

Unele date, cum ar fi e-mailurile vechi, cazurile închise sau clienții potențiali descalificați, rămân importante, dar sunt rareori accesate. Pentru a reduce volumul de migrare fără a perturba operațiunile de afaceri, dezvoltați o strategie inteligentă de arhivare.

Pasul 1: Identificați datele arhivabile

Candidații obișnuiți includ:

  • E-mailuri mai vechi de trei ani
  • Cazuri închise
  • Oportunități pierdute
  • Clienți potențiali descalificați
  • E-mailuri de marketing, postări și jurnale de audit

Examinați sistemul pentru a identifica alte tabele pe care le puteți arhiva.

Pasul 2: Alegeți o abordare de arhivare

  • Păstrați datele în sistemul sursă. Păstrați câteva licențe de administrator pentru acces în timp ce dezactivați altele pentru a reduce costurile.
  • Mutați în spațiul de stocare extern. Utilizați baze de date locale, Azure Blob Storage sau Azure Tables pentru a stoca înregistrările arhivate. Această abordare reduce costurile de stocare și migrare, dar necesită o strategie de migrare separată.
  • Utilizați un mediu Dataverse separat. Această opțiune este mai puțin comună, dar este utilă dacă doriți să izolați datele arhivate. Puteți retrage acest mediu mai târziu pentru a simplifica planificarea tranziției.

Pentru a asigura migrarea rapidă și fiabilă a datelor în Dataverse:

  • Utilizați o mașină virtuală (VM) în aceeași regiune cu mediul Dataverse pentru a reduce latența și a îmbunătăți viteza de migrare.
  • Alegeți o mașină virtuală de înaltă performanță. Cel puțin, utilizați o mașină virtuală D4 cu opt nuclee, 28 GB RAM și 500 GB spațiu de stocare pentru a gestiona eficient volume mari de date.
  • Preferați o bază de date locală pe VM. Evitați conexiunile la distanță în timpul migrării. Dacă utilizați Azure Data Factory, implementați-l în aceeași regiune cu mediul Dataverse pentru performanțe optime.

Pasul următor