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

417 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 | — |
### Footer Menu (2 items)
| 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:**
```html
<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"
```
### 4.2 Social Links (2 confirmed + 3 placeholder)
| 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.**