cms.c2sgmbh/docs/c2s/C2S_MIGRATION_ANALYSIS.md
Martin Porwoll 723eefa5b8 feat: add seed script and migration analysis for complexcaresolutions.de (tenant 10)
Migrates all WordPress content to Payload CMS blocks: 10 pages, 3 testimonials,
navigation, contact form, social links, site settings, and 1 blog post.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 18:46:40 +00:00

15 KiB
Raw Permalink Blame History

complexcaresolutions.de → Payload CMS Migration Analysis

Source: WordPress (Divi Builder) on Hetzner 1 Target: Payload CMS Tenant ID 10 Date: 2026-02-28


1. Site Overview

Property Value
Domain complexcaresolutions.de
WordPress URL https://www.complexcaresolutions.de
Theme Divi + Divi-c2s-child
Brand Colors Navy #004166, Gold #B3AF09
Phone 0800 80 44 100
Fax 0800 80 44 190
Email kontakt@complexcaresolutions.de
Company complex care solutions GmbH
Address Hans-Böckler-Str. 19, 46236 Bottrop
Geschäftsführer Martin Porwoll
HRB 15753 (AG Gelsenkirchen)
USt-IdNr DE334815479
Social Media LinkedIn, Facebook, Instagram, Twitter, YouTube
Datenschutz alfright.eu (key: f60250224d4a459a90dbeeb289cd47f9, tenant: alfright_schutzteam)
Media Files 55 images/uploads
Status WordPress returning HTTP 500 (broken)

2. Navigation Structure

Hauptmenü (7 items)

Order Label Slug Parent
1 Patienten patienten
2 Zweitmeinung zweitmeinung Patienten (submenu)
3 Ärzte aerzte
4 Versicherungen versicherungen
5 Über uns ueber-uns
6 Motivation motivation
7 Kontakt kontakt
Order Label Slug
1 Datenschutz datenschutzerklaerung
2 Impressum impressum

3. Page Inventory & Content Mapping

Pages TO MIGRATE (10 substantial pages)

3.1 Startseite (ID: 11, slug: startseite)

Content Structure:

  1. Hero — "Willkommen bei complex care solutions" + subline about healthcare company
  2. Image-Text pairs — Schilddrüsen-Zweitmeinung + Gallenblasen-Zweitmeinung CTAs
  3. Card Grid — "Die besten Lösungen" (3 cards: Expertenmeinungen, Spezialisierte Unterstützung, Smarte Technologie)
  4. Text Section — "Wir schaffen Mehrwert" (3 paragraphs about quality, cost control, quality assurance)
  5. Quote/Text — "Unser Versprechen" (company values statement)
  6. Contact Footer — Phone, email, social media, contact form

Payload Blocks:

  • hero-block (headline, subline, CTA)
  • image-text-block × 2 (Schilddrüsen + Gallenblasen sections)
  • card-grid-block (3 cards: "Die besten Lösungen")
  • text-block ("Wir schaffen Mehrwert")
  • quote-block ("Unser Versprechen")
  • contact-form-block

3.2 Patienten (ID: 987511082, slug: patienten)

Content Structure:

  1. Hero — "Die beste Versorgung für unsere Patienten"
  2. Text — "Umfassende medizinische Lösungen" (overview)
  3. Card Grid — 3 service cards (Zweitmeinung, Intensivpflegeberatung, Medikationsanalyse) with descriptions
  4. Contact Footer

Payload Blocks:

  • hero-block
  • text-block (intro)
  • card-grid-block (3 service cards linking to subpages)
  • contact-form-block

3.3 Zweitmeinung (ID: 32, slug: zweitmeinung, LARGEST PAGE 48KB)

Content Structure:

  1. Hero — "Zweitmeinung rettet Leben" + CTA
  2. Section: Kardiologie — Headline + description + image + 2 blurbs (Qualifizierte Kardiologen, Schnelle Zweitmeinungen)
  3. Section: Onkologie — Headline + description + image + 2 blurbs
  4. Section: Chirurgie — Headline + description + image
  5. Section: Intensivmedizin — Headline + description + image + 2 blurbs
  6. Section: Vorteile — "Eine zweite Meinung für Ihre Gesundheit" + 3 benefit blurbs
  7. CTA — "Holen Sie sich eine Zweitmeinung"
  8. Testimonials — 3 patient testimonials (Basalzellkarzinom, Radiologie, Herzstolpern)
  9. Contact Footer + integrated Divi contact form

Payload Blocks:

  • hero-block
  • image-text-block × 4 (Kardiologie, Onkologie, Chirurgie, Intensivmedizin) — each with sub-features
  • card-grid-block (3 benefit cards)
  • cta-block
  • testimonials-block (3 testimonials)
  • contact-form-block

Testimonials to seed (Collection):

  1. "Nach einer Gewebeprobe wurde ein Basalzellkarzinom diagnostiziert..." — anonymous patient
  2. "Die radiologische Zweitmeinung, die ich erhielt, war ein echter Lebensretter!..." — anonymous patient
  3. "Seit einiger Zeit bemerkte ich ein Herzstolpern in meiner Brust..." — anonymous patient

3.4 Ärzte (ID: 20, slug: aerzte)

Content Structure:

  1. Hero — "Kompetente Unterstützung für Sie und Ihre Patienten" (subtitle: "Für Ärzte")
  2. Text — "Die beste Unterstützung für Ihre Patienten" (intro question)
  3. Card Grid — 6 feature cards (Qualitätsdiagnose, Lokale Kapazitäten, Leitlinien, Expertennetzwerk, Über-/Fehlversorgung minimieren, Schnelle Prozesse + Transparenz, Beitrag zum Patientenwohl)
  4. CTA — "Werden Sie Teil unseres Expertennetzwerks!"
  5. Contact Footer

Payload Blocks:

  • hero-block (with "Für Ärzte" subtitle)
  • text-block (intro)
  • card-grid-block (features)
  • cta-block
  • contact-form-block

3.5 Versicherungen (ID: 22, slug: versicherungen)

Content Structure:

  1. Hero — "Für höchste Versorgungsqualität, intelligent und wirtschaftlich" (subtitle: "Für Krankenkassen")
  2. Text — "Hochwertige Lösungen für Ihre Versicherten"
  3. Card Grid — 3 service areas (Datenbasierte Forschung + §25b SGB V, Innovationen §68 SGB V, Strategie)
  4. Card Grid — "Ihre Vorteile" (3 benefit cards: Kostenersparnis, Bessere Versorgung, Wettbewerbsvorteil)
  5. Image-Text: Data Science — "Data Science und KI intelligent nutzen" + 3 blurbs
  6. Image-Text: Expertise — "Spezialisierte Expertise" + description
  7. Image-Text: Strategie — "Strategie- und Organisationsentwicklung" + 2 blurbs
  8. Contact Footer

Payload Blocks:

  • hero-block
  • text-block (intro)
  • card-grid-block (service areas)
  • card-grid-block (Vorteile)
  • image-text-block (Data Science)
  • image-text-block (Expertise)
  • image-text-block (Strategie)
  • contact-form-block

3.6 Über uns (ID: 28, slug: ueber-uns)

Content Structure:

  1. Hero — "Gesundheit in den besten Händen" + company description
  2. Text — "Die Geschichte hinter der Gründung" (Martin Porwoll / Whistleblower story)
  3. Card Grid — "Woran wir glauben" + 3 paragraphs about values
  4. Text — "Was wir mitbringen" + 3 competency items (Expertise, Netzwerk, Ethische Grundhaltung)
  5. Timeline — Company history timeline (Divi custom CSS timeline)
  6. Contact Footer

Payload Blocks:

  • hero-block
  • text-block (Gründung)
  • text-block (Woran wir glauben)
  • card-grid-block (Was wir mitbringen - 3 competency cards)
  • timeline-block (company history) — NOTE: Timeline had extensive custom CSS in WordPress; may simplify to text or card layout
  • contact-form-block

3.7 Motivation (ID: 30, slug: motivation)

Content Structure:

  1. Hero — "Patientenwohl im Mittelpunkt" (subtitle: "Unsere Motivation")
  2. Text — "Unser Fokus" + 3 paragraphs (patientenzentriert, Transparenz, Expertennetzwerk)
  3. Text — "Motivation und Geschichte" (Martin Porwoll / Zytoskandal founding story)
  4. Quote — Martin Porwoll quote about Zytoskandal and his mission
  5. Text — "Der Zytoskandal Bottrop" (detailed scandal description)
  6. Text — "Martin Porwolls Weg zum Streiter für das Patientenwohl"
  7. Contact Footer

Payload Blocks:

  • hero-block
  • card-grid-block (3 focus areas)
  • text-block (Motivation und Geschichte)
  • quote-block (Martin Porwoll quote)
  • text-block (Zytoskandal)
  • text-block (Porwolls Weg)
  • contact-form-block

3.8 Kontakt (ID: 26, slug: kontakt)

Content Structure:

  1. Contact Section — Phone, email, social media + Divi contact form (Name, Email, Betreff, Nachricht)

Payload Blocks:

  • contact-form-block (linked to form)

Note: The WordPress Kontakt page is essentially just the contact footer section that appears on every page. The form has 4 fields: Name, Email, Betreff (Subject), Nachricht (Message).


3.9 Impressum (ID: 14, slug: impressum)

Content Structure:

  1. Hero — "Impressum"
  2. Text — Full legal text (company info, Handelsregister, Kontakt, USt-ID, EU-Streitschlichtung, Verbraucherschlichtung)
  3. Contact Footer

Payload Blocks:

  • hero-block
  • text-block (legal text, width: narrow)
  • contact-form-block

3.10 Datenschutzerklärung (ID: 16, slug: datenschutzerklaerung)

Content Structure:

  1. alfright.eu widget — Privacy policy generated dynamically
  2. Contact Footer

Payload Blocks:

  • hero-block (headline: "Datenschutzerklärung")
  • html-embed-block (alfright.eu <div> widget with key f60250224d4a459a90dbeeb289cd47f9)
  • contact-form-block

alfright embed code:

<div data-alfidcl-type="dps" data-alfidcl-tenant="alfright_schutzteam" data-alfidcl-lang="de-de" data-alfidcl-key="f60250224d4a459a90dbeeb289cd47f9"></div>
<script src="https://app.alfright.eu/js/alcl/alcl.js" async></script>

Note: c2s uses the alfright.eu <div> widget (not iframe like zweitmeinu.ng). This requires both the div AND the script tag to be embedded.


Pages TO SKIP (4 placeholder/empty pages)

Page Reason
Blog (ID: 24) Empty — only 29 chars of content (empty Divi placeholder)
Medikationsanalyse (ID: 34) Only contains contact footer section, no real content
Intensivpflegeberatung (ID: 38) Only contains contact footer section, no real content
Klinik (ID: 987510888) Lorem ipsum placeholder content

Blog Post TO MIGRATE (1)

"Geheimnis der guten Fürsorge" (ID: 987511216)

Slug: geheimnis-der-guten-fuersorge-warum-uebertherapie-ein-gesellschaftliches-problem-ist Content: Long-form article (~7800 chars) about Übertherapie (over-treatment) in healthcare Structure: Pure text (Gutenberg paragraphs), no Divi shortcodes Category: Blog/News

Payload Collection: posts (with tenant_id = 10) Content: Rich text (Lexical paragraphs)


4. Collections to Seed

4.1 Site Settings (1 record)

site_name: "complex care solutions GmbH"
site_url: "https://complexcaresolutions.de"
company_name: "complex care solutions GmbH"
address: "Hans-Böckler-Str. 19"
zip: "46236"
city: "Bottrop"
phone: "0800 80 44 100"
fax: "0800 80 44 190"
email: "kontakt@complexcaresolutions.de"
Platform URL Status
LinkedIn https://de.linkedin.com/company/complex-care-solutions-gmbh Confirmed
Facebook https://www.facebook.com/complex-care-solutions-GmbH Confirmed
Instagram Listed in nav but no URL set in WordPress
Twitter/X Listed in nav but no URL set in WordPress
YouTube Listed in nav but no URL set in WordPress

Seed only LinkedIn + Facebook (the others have no URLs configured).

4.3 Navigation (1 record)

mainMenu:

  1. Patienten → /patienten
    • Zweitmeinung → /zweitmeinung (submenu)
  2. Ärzte → /aerzte
  3. Versicherungen → /versicherungen
  4. Über uns → /ueber-uns
  5. Motivation → /motivation
  6. Kontakt → /kontakt

footerMenu:

  1. Datenschutz → /datenschutzerklaerung
  2. Impressum → /impressum

4.4 Contact Form (1 form, 4 fields)

Field Type Required
Name text yes
Email email yes
Betreff text yes
Nachricht textarea yes

Email notification → kontakt@complexcaresolutions.de

4.5 Testimonials (3 records)

  1. Basalzellkarzinom patient — quote about finding right therapy
  2. Radiology second opinion patient — "Lebensretter" quote
  3. Heart patient — Herzstolpern/stress diagnosis

4.6 Pages (10 pages)

See Section 3 for full content mapping.

4.7 Posts (1 blog post)

"Geheimnis der guten Fürsorge warum Übertherapie ein gesellschaftliches Problem ist"


5. Media Files to Migrate

55 total WordPress media files. Key images:

Image Used On
c2s_master_logo_400x130.png Site logo
Favicon-c2s.png Favicon
c2s_startseite.jpg Homepage hero
c2s_startseite_2.jpg Homepage section
c2s_startseite_loesungen.jpg Homepage solutions
c2s_startseite_versprechen.jpg Homepage promise
zweitmeinung.jpg Zweitmeinung hero
zweitmeinung_desktop.jpg Zweitmeinung wide
zweitmeinung_herz.jpg Kardiologie section
zweitmeinung_onkologie.jpg Onkologie section
zweitmeinung_chirurgie.jpg Chirurgie section
zweitmeinung_intensiv.jpg Intensivmedizin section
patienten.jpg Patienten hero
aerzte.jpg Ärzte hero
krankenversicherung.jpg Versicherungen hero
medikationsanalyse.jpg Medikationsanalyse hero
tbvs-image-person-1024x1024-1.png Martin Porwoll portrait
tbvs-image-2560x1440-1.png Hero background
post-4.jpg Blog post image
Various AdobeStock_*.jpg Section backgrounds

Strategy: Upload to Payload media collection with tenant_id: 10. Download from WordPress wp-content/uploads/ on Hetzner 1.


6. Key Differences from zweitmeinu.ng

Aspect zweitmeinu.ng (Tenant 12) complexcaresolutions.de (Tenant 10)
Pages 9 seeded 10 needed
Services 6 (dedicated collection) Embedded in page content (no service collection needed)
FAQs 24 items None
Blog Posts 0 1
Testimonials 0 3
Contact Form 4 fields 4 fields (same: Name, Email, Betreff, Nachricht)
Datenschutz iframe (alfright.eu) div widget (alfright.eu, different key)
Target Audience Pages None 3 (Patienten, Ärzte, Versicherungen)
Content Volume Medium Large (Zweitmeinung page alone is 48KB)

7. Implementation Plan

Phase 1: Seed Script (scripts/seed-c2s.ts)

  1. Create site settings for tenant 10
  2. Create 5 social links
  3. Create navigation (mainMenu with Patienten submenu + footerMenu)
  4. Create contact form (4 fields)
  5. Create 3 testimonials
  6. Create 10 pages with block-based layout
  7. Create 1 blog post

Phase 2: Media Migration

  1. Download all 55 media files from WordPress on Hetzner 1
  2. Upload to Payload via Local API
  3. Link media IDs to pages/blocks (hero images, image-text sections)

Phase 3: Frontend (complexcaresolutions.de)

  • Either create dedicated Next.js frontend OR
  • Reuse existing frontend framework (like zweitmeinu.ng's BlockRenderer pattern)
  • Same design system: Navy #004166, Gold #B3AF09

Phase 4: DNS/Hosting Cutover

  • Replace WordPress on Hetzner 1 with Next.js frontend
  • Point domain to new frontend
  • Verify all pages, SEO, redirects

8. Existing Payload Data (Tenant 10)

Collection Count
Pages 0
Site Settings 0
Navigations 0
Services 0
Forms 0
Posts 0
FAQs 0
Social Links 0
Testimonials 0

Tenant 10 is completely empty — clean slate for seeding.