Klar til DDB CMS - migrering af indhold fra Ding1 til Ding2

19
v/ Ewan Andreasen ([email protected]) Klar til DDB CMS! grering af indhold fra Ding 1 til

description

Slides fra workshoppen Klar til DDB CMS! (se http://ting.dk/event/klar-til-ddb-cms-0) Indhold: 1. Metode og planlægning af migreringsprocessen 2. Introduktion til drupal-modulet migrate 3. Præsentation af modulet migrate_ding1_ding2, udarbejdet af Ewan Andreasen i forbindelse med Vejle Bibliotekernes migrering fra eksisterende Ding-hjemmeside. 4. Demonstration af migrering af forskellige typer indhold: brugere, sider, ordforråd og ding-specifikke indholdstyper 5. Test af data, fejlfinding, og finjustering af migrationer

Transcript of Klar til DDB CMS - migrering af indhold fra Ding1 til Ding2

Page 1: Klar til DDB CMS - migrering af indhold fra Ding1 til Ding2

v/ Ewan Andreasen ([email protected])

Klar til DDB CMS!- Migrering af indhold fra Ding 1 til Ding 2

Page 2: Klar til DDB CMS - migrering af indhold fra Ding1 til Ding2

Planlægning

• Hvad er migrering?• En god migrationsproces– Er automatiseret– Kan rulles tilbage og gentages– Kan udføres over flere omgange uden ”rod i data”

• Overblik over kildens data• Klargøring af destinationssitet• Mapping• Håndtering af afhængigheder

Page 3: Klar til DDB CMS - migrering af indhold fra Ding1 til Ding2

Overblik over kildedata• Kildesitet består af

design, navigation, funktionalitet og indhold

• migreringen tackler KUN indhold

Page 4: Klar til DDB CMS - migrering af indhold fra Ding1 til Ding2

• Migrering ved arbejde direkte på databasens tabeller er vanskeligt at få korrekt

• Antal trin der skal udføres er så mange, at en automatiseret proces er et krav

Page 5: Klar til DDB CMS - migrering af indhold fra Ding1 til Ding2

Overblik over kildens felter

Page 6: Klar til DDB CMS - migrering af indhold fra Ding1 til Ding2

Klargøring af destinationssitet

• Bring sitet til fungerende tilstand– Få styr på design, navigation og funktionalitet

• Opret eksempeldata (for senere sammenligning)• Upload kildedata til destinationssitet• Installér migrate-moduler

– migrate (men hent RC1 fra https://drupal.org/node/2029049 ) (+ enable migrate UI)

– migrate_extras, – migrate_d2d (men hent beta1 fra https://drupal.org/node/2001680– migrate_ding1_ding2 (http://github.com/vejlebib/migrate_ding1_ding2) – Enable Migrate, Date Migration, Migrate Extras, Drupal-to-Drupal Migration

og Migration fra Ding1 til Ding2

Page 7: Klar til DDB CMS - migrering af indhold fra Ding1 til Ding2

Overblik over destinationens felter

Page 8: Klar til DDB CMS - migrering af indhold fra Ding1 til Ding2

Mapping strategier• 1-til-1 – eks. titel titel

• Split (1-til-mange)– eks. navn fornavn, efternavn

• Merge (mange-til-1)– Eks. fornavn, efternavn fulde navn

• Drop (kan ikke overføres – ingen match)• Standardværdi – eks. destinationens nye felter

• Transformation– eks. brug ny term i stedet for gammel

Page 9: Klar til DDB CMS - migrering af indhold fra Ding1 til Ding2

Håndtering af afhængigheder

• Afhængigheder afgør rækkefølgen af migrationens dele– Eks. kan huskelister ikke migreres, før brugere er

migreret, – Arrangementssider kan ikke migreres, før

biblioteker og filer er migreret,– Etc.

Page 10: Klar til DDB CMS - migrering af indhold fra Ding1 til Ding2

Brugerroller (DingRole)

Brugerkonti (DingUser)

Autentificering (DingAuthmap)

Alma profil(DingProfileProviderAlma)

Emneord (DingEventCategoryTerm)

(DingEventTargetTerm)(DingNewsCategoryTerm)

(DingTagsTerm)

Filer(DingFile)

Kampagner(DingCampaign)

Biblioteker(DingLibrary)

Medarbejderprofil(DingProfileStaff)

Arrangementer(DingEvent)

Evt. Place2book int.(DingPlace2book)

Sider(DingPage)

Nyheder(DingNews)

Afhængigheder i DDB CMS

Bogmærker (DingBookmark)

Page 11: Klar til DDB CMS - migrering af indhold fra Ding1 til Ding2

Migrate (drupalmodul)• Kan migrere data ind i Drupal fra mange datakilder

– Databaser (MySQL, Oracle, MS-SQL ..), tekstfiler (XML, JSON, CSV)– Men IKKE ustrukturerede data (eks. statisk HTML)

• Bruger drupals funktioner til oprettelse af indhold (eks. node_save)– Kode fra øvrige moduler der er installeret gennemgås også når nyt indhold

gemmes

• Kan manipulere data før, under og efter overførsel• Arkitektur

– Migrate er basismodulet– Andre moduler bidrager med egen migrate-support – CMS-specifikke moduler bygger ovenpå migrate, eks.

Page 12: Klar til DDB CMS - migrering af indhold fra Ding1 til Ding2

Migrate UI

- vs. kommandolinjen med drush (anbefales)

Page 13: Klar til DDB CMS - migrering af indhold fra Ding1 til Ding2

Opsamling af begreber

Kildedata samles op og præsenteres som rækker af data, der kan manipuleres medI destinationen skabes et nyt objekt (bruger, indholdsside m.fl.)I migrations-map noterer systemet, hvilke nye ID på destinationssitet der svarer til de gamle ID i

kildedataMapping af felter er angivelsen af, hvilke felter i kildens data der svarer til hvilke felter i

destinationen.En migration-klasse indeholder typisk flere felt-mappings.

Migrationen som proces består af flere migrations-klasser, der køres i en bestemt rækkefølge for at håndtere afhængigheder indholdet imellem

Page 14: Klar til DDB CMS - migrering af indhold fra Ding1 til Ding2

migrate_ding1_ding2 (modul)

• Bygger ovenpå modulet Drupal-to-drupal data migration (https://drupal.org/project/migrate_d2d)

• Overfører data fra et ding1 site ind i DDB CMS (et ding2-site)

• Andre CMS-specifikke moduler:– Wordpress Migrate (https://drupal.org/project/wordpress_migrate)– TYPO3 migrate (https://drupal.org/project/TYPO3_migrate)

Page 15: Klar til DDB CMS - migrering af indhold fra Ding1 til Ding2

Demonstration og øvelser

• Opstart af DrupalPro (https://drupal.org/project/drupalpro )

• Upload kildedata– mysql -u root -p vejle_ding1 < VejleBib-2013-03-25.sql– TJEK: åbn database i phpMyAdmin

• Intro til phpMyAdmin• Opsætning af migrate

– Ret i settings.php, db-indstillinger– Ret i settings.php, sti til filer– Overfør drupal_private_key

• Intro til migrate UI• Intro til en migrate-klasse

Page 16: Klar til DDB CMS - migrering af indhold fra Ding1 til Ding2

Øvelser: kørsel af migrations-klasser

• Prøv at køre DingEvent– drush mi DingEvent– Afhængigheder er ikke opfyldt..

• Kør DingRole– drush mi DingRole

• Kør DingUser– Med feedback

– drush mi --feedback=”5 items” DingUser • Kør DingFile

– Med limit– drush mi --limit=”10 items” DingFile

• Rul DingFile tilbage– drush mr DingFile

Page 17: Klar til DDB CMS - migrering af indhold fra Ding1 til Ding2

Øvelser: Arbejde med andre CMS

• Artesis web: Ding2 Ding2• Wordpress: Brug Wordpress Migrate (

https://drupal.org/project/wordpress_migrate)– Generér wordpress export-fil– Brug migrate UI

Page 18: Klar til DDB CMS - migrering af indhold fra Ding1 til Ding2

Forberedelsen til DDB CMS

• Øv migrationer med egne data (brug ding2tal kode)

• Opret eget DDB CMS site når den frigives• Hent altid seneste version af

migrate_ding1_ding2

Page 19: Klar til DDB CMS - migrering af indhold fra Ding1 til Ding2

Referencer• Kort introduktion ved Ben Dougherty: http://

devblog.com.au/migrating-drupal-6-to-drupal-7-with-the-migration-framework

• Migrate documentation: https://drupal.org/node/415260• http://www.slideshare.net/primerg/migration-from-legacy-cms-to-drupal

-4808821• Drupal-to-drupal data migration documentation:

https://drupal.org/node/1813498• Acquia Drupal-to-Drupal intro, part 1:

http://www.acquia.com/blog/drupal-drupal-data-migration-part-1-basics• Acquia Drupal-to-Drupal intro, part 2:

http://www.acquia.com/blog/drupal-drupal-data-migration-part-2-architecture

• https://www.acquia.com/blog/migrating-drupal-way-part-i-creating-node• Video: “Get your bits in!” http://vimeo.com/54448150