Datenmigration: Podio zu Drupal

podio

For a more in depth documentation visit the Mondula Blog (also the documentation there is written in english)

 

Dieser Artikel beschreibt, wie man Inhalte aus Podio in ein Drupal 7 System migriert. Dabei gibt es zwei Ansätze:

  1. Drupal führt in regelmäßigen Abständen einen Abgleich der Daten durch. Dies hat den Vorteil, dass man die Zeiträume, in denen die Daten kopiert werden, selbst bestimmen und somit in die frühen Morgenstunden verlagern kann, an denen nicht viele Besucher auf den Seiten erwartet werden.
  2. Podio benachrichtigt Drupal, sobald Inhalte erstellt oder aktuallisiert werden. Dies hat den Vorteil, dass Inhalte, sobald sie bei Podio erstellt werden, sofort auch im Drupal System auftauchen.

Im folgenden werden beide Varianten vorgestellt und beschrieben.

Drupal zieht sich die Inhalte in regelmäßigen Abständen:

1. Feeds installieren.

Feeds ist ein Modul, welches uns erlaubt wiederkehrende Datenmigrationen sehr einfach vorzunehmen und was noch wichtiger ist: Wir können die Daten aus Podio kinderleicht mit den Daten aus Drupal verknüpfen, ohne selbst programmieren zu müssen.

2. Feeds Podio Fetcher installieren. Feeds JSONPath Parser installieren.

Feeds Podio Fetcher ist für das Abholen der Daten bei Podio zuständig und bringt gleich zwei Fetcher mit:

Podio Multiple Item Fetcher: Stellt Anfragen an Podio und besorgt sich alle Daten einer App. Sinnvoller Einsatz: Migration von Inhalten in regelmäßigen Abständen

Podio Single Item Fetcher: Fragt Daten zu einem einzigen Item von Podio ab. Sinnvoller Einsatz in Kombination mit Podio Listener Modul

Der Einsatz von diesem Modul erfordert den Podio PHP Client. Der Client muss ins sites/all/libraries Verzeichnis kopiert werden. WICHTIG: Zusätzlich muss eine readme.txt Datei unter sites/all/libraries/podio-php angelegt werden und mit folgendem Inhalt befüllt werden:

Version: 1.0

 

Feeds JSONPath Parser ist dafür da, das Format der Daten von Podio zu verarbeiten. Podio liefert die Daten im JSON Format aus. WICHTIG: Beachtet die Installationshinweise auf der Modulseite.

3. Feeds Tamper und Feeds Tamper PHP installieren.

Diese beiden Module sind optional und werden nur dann benötigt, wenn Ihr Dateien wie Bilder, Sounds oder Videos aus Podio extrahieren wollt. Handelt es sich bei euren Daten um reine Texte bzw. Zahlen, so werden diese Module nicht benötigt.

4. Auf podio.com einloggen, auf eine App gehen, AppOptionen ausklappen und Entwicklung anklicken. app_id und app_token merken.

5. Auf https://developers.podio.com/api-key gehen und sich eine Client ID und Client Secret erstellen.

6. Inhaltstypen erstellen, der die Datenstruktur der PodioApp abbildet. Datentypen beachten! Podio Enumerate kann als Liste(Text) dargestellt werden. Referenzen sowie Embeds werden derzeit nicht unterstützt.

7. Feed "Podio" erstellen. Podio Mutiple Items Fetcher als Fetcher angeben. JSONPath Parser als Parser auswählen. 

8. Mapping eintragen: Json -> field

json parser config

9. Feeds Tamper so konfigurieren, dass Bilder (und Files generell) heruntergeladen werden:

$file = PodioFile::get($field);

file_put_contents("public://" . $file->name, $file->get_raw());

return "public://" . $file->name;

10. Auf www.example.com/import surfen und den eben eingestellten Feed anklicken.

11. Die aus Podio gewonnen Schlüssel eintragen.

12. JSONPath Mapping angeben.

13. Import...

 

Podio informiert Drupal, dass Inhalte aktuallisiert werden müssen:

1. Feeds installieren.

Feeds ist ein Modul, welches uns erlaubt wiederkehrende Datenmigrationen sehr einfach vorzunehmen und was noch wichtiger ist: Wir können die Daten aus Podio kinderleicht mit den Daten aus Drupal verknüpfen, ohne selbst programmieren zu müssen.

2. Feeds Podio Fetcher installieren. Feeds JSONPath Parser installieren.

Feeds Podio Fetcher ist für das Abholen der Daten bei Podio zuständig und bringt gleich zwei Fetcher mit:

Podio Multiple Item Fetcher: Stellt Anfragen an Podio und besorgt sich alle Daten einer App. Sinnvoller Einsatz: Migration von Inhalten in regelmäßigen Abständen

Podio Single Item Fetcher: Fragt Daten zu einem einzigen Item von Podio ab. Sinnvoller Einsatz in Kombination mit Podio Listener Modul

Der Einsatz von diesem Modul erfordert den Podio PHP Client. Der Client muss ins sites/all/libraries Verzeichnis kopiert werden. WICHTIG: Zusätzlich muss eine readme.txt Datei unter sites/all/libraries/podio-php angelegt werden und mit folgendem Inhalt befüllt werden:

Version: 1.0

 

Feeds JSONPath Parser ist dafür da, das Format der Daten von Podio zu verarbeiten. Podio liefert die Daten im JSON Format aus. WICHTIG: Beachtet die Installationshinweise auf der Modulseite.

3. Podio Listener Modul installieren.

Podio Listener ist dafür zuständig Podio's Webhooks zu verifizieren und diese zu interpretieren, um sie dann anschließen and Feeds weiterzuleiten.

4. Feeds Tamper und Feeds Tamper PHP installieren.

Diese beiden Module sind optional und werden nur dann benötigt, wenn Ihr Dateien wie Bilder, Sounds oder Videos aus Podio extrahieren wollt. Handelt es sich bei euren Daten um reine Texte bzw. Zahlen, so werden diese Module nicht benötigt.

5. Auf podio.com einloggen, auf eine App gehen, AppOptionen ausklappen und Entwicklung anklicken. app_id und app_token merken.

6. Auf https://developers.podio.com/api-key gehen und sich eine Client ID und Client Secret erstellen.

7. Inhaltstypen erstellen, der die Datenstruktur der PodioApp abbildet. Datentypen beachten! Podio Enumerate kann als Liste(Text) dargestellt werden. Referenzen sowie Embeds werden derzeit nicht unterstützt.

8. Feed "PodioSingleItem" erstellen. Podio Single Item Fetcher als Fetcher angeben. JSONPath Parser als Parser auswählen. 

9. Mapping eintragen: Json -> field

json parser config

10. Feeds Tamper so konfigurieren, dass Bilder (und Files generell) heruntergeladen werden:

$file = PodioFile::get($field);

file_put_contents("public://" . $file->name, $file->get_raw());

return "public://" . $file->name;

11. Auf www.example.com/import surfen und den eben eingestellten Feed anklicken.

12. Die aus Podio gewonnen Schlüssel eintragen.

13. JSONPath Mapping angeben. Hier ist eine beispielhafte Zuordnung:

json parser config

14. Auf podio.com einloggen, auf eine App gehen, AppOptionen ausklappen und Entwicklung anklicken. Dort Webhooks für item.create und item.update anlegen und an deine Domain schicken: www.mysite.com/import/[Feedname aus Schritt 8]

Nach kurzer Zeit müsste der Hook erfolgreich verifiziert werden.

15. Nun nur noch Datensätze unter Podio anlegen/ändern und diese sollten automatisch im Drupal auflaufen.