Inbound-Import von Stellenanzeigen aus Personio (XML-Feed → Drupal-Migration, gebunden an node.type.vacancy)
und Outbound-XML-Feeds an Projektpartner-Plattformen (Freelancermap, freelance.de, Gulp, Randstad,
gebunden an node.type.project_offer). Zwei Bundles, zwei Zielgruppen — Festanstellungen
vs. Freelance-Aufträge —, getrennt zu pflegen und im Wiki gemeinsam dokumentiert, weil sie alle
über XML-Feeds zwischen Drittsystemen und Drupal vermitteln.
solcom-gmbh.jobs.personio.de/xml
→ migrate_plus → node.type.vacancy. Stündlicher Cron-Import.
Bewerber-Rückleitung via Personio-Hosted-Apply-URL pro Vacancy-Node.
Custom-Modul: web/modules/custom/solcom_vacancy/.
/feeds/freelancermap.xml und /feeds/freelance.xml.
Controller lädt aktive project_offer-Nodes (gespiegelt aus Salesforce via
solcom_project_offer-Migrate), rendert per Twig-XML-Template im
<openPositions>-Format. Vendor-Filterung über
field_sf_channel_freelancermap / field_sf_channel_freelance + Status +
Veröffentlichungs-Fenster. Strategie: Vendor-Pull-on-Request (kein Push). Modul-Heimat:
Sub-Modul solcom_project_offer/modules/solcom_project_offer_feeds/. Epic:
Projektpartnerportal. PRD: 2026-05-17-project-offer-xml-feeds-prd.
/feeds/gulp.xml und /feeds/randstad.xml (vendor-spezifisches Schema je
Marketplace; Gulp + Randstad gehören zur selben Vendor-Gruppe und werden in einer gemeinsamen
Story refined). Gleiche Modul-Heimat wie F-340 (solcom_project_offer_feeds), gleiche
Quelle project_offer, Vendor-Filterung über field_sf_channel_gulp.
Ebenfalls Epic Projektpartnerportal.
/asp/robots/gulplist.asp(x),
freelance.xml, freelancermap.xml, freelancercheck.xml,
jooble-de.xml, jobrapido.asp, trovit.xml,
projektwerk.xml(.aspx), xing-projects.xml, xing-jobs.xml,
xing-jobs-v2.xml sowie /rss/projectfeed.xml und /rss/newsfeed.xml.
Architektur: LegacyFeedBase + eine Feed-Klasse/Twig pro Feed in
solcom_project_offer_feeds/src/Feed/; Gates aus RSM (GULPRobot,
keinePortale), Werte RSM-first mit SF-Fallback. Die /feeds/*.xml-Vendor-Feeds
(F-340/F-360, oben) bleiben parallel bestehen. Legacy-Detail-Links
(detail.asp(x), detail-xing.asp(x)) lösen per 301 mit
lfdNr-Lookup auf. Parity-Kontrakt inkl. konservierter Altlasten — Details + Rejected
Alternatives: ADR-0057.
Wichtig: F-340/F-360 sind Projektpartnerportal-Stories — Freelancermap, freelance.de,
Gulp und Randstad sind Auftragnehmer-Plattformen für SOLCOM als Auftraggeber und suchen
Freelance-Aufträge (= project_offer), nicht Festanstellungen
(= vacancy). Die initiale Version der F-340- und F-360-Story-Hubs hatte diese
Trennung fälschlich an vacancy gebunden; korrigiert via grill-with-docs am 2026-05-17
(siehe Story-Hub-Doku-Korrektur-Section in F-340).
| Strand | Ref | Inhalt |
|---|---|---|
| stories | F-280-personio-xml-feed | Inbound-Import via Personio-XML → migrate_plus → vacancy; stündlicher Cron; Hosted-Apply-URL-Rückgabe. |
| stories | F-340-asp-xml-feeds-freelancermap-freelance | Outbound-Feeds /feeds/freelancermap.xml + /feeds/freelance.xml; Vendor-Pull-on-Request; vendor-spezifisches XML-Schema. |
| stories | F-360-randstad-xml-api | Outbound-Feed /feeds/randstad.xml; Randstad-spezifisches Schema; Projektpartnerportal-Epic. |
| adr | 0014-vacancy-full-canvas-template-overhaul | Vacancy-Full-Canvas-Content-Template (node:vacancy Anzeige-Seite) — Frontend-Pendant zur Personio-Ingest-Infrastruktur. |
| adr | 0015-external-context-docs-and-discovery-agents | Custom-Modul-Konzept solcom_vacancy als Heimat für Personio-Migration und Feed-Controller. |
| context | 0001-it-landscape | IT-Landschaft: Personio als HR-System erwähnt; Gesamtbild der Drittsystem-Integrationen. |
Für einen Dev, der an F-280, F-340 oder F-360 arbeitet:
solcom_vacancy — Personio-Migrate, Vacancy-Bundle, Karriere-Frontend.solcom_project_offer/modules/solcom_project_offer_feeds/ — Pattern-Parität zu solcom_project_offer_alert/. Quelle ist node.type.project_offer, gespiegelt aus Salesforce.migrate_plus-Migration konfigurieren; XML-Feed-URL: solcom-gmbh.jobs.personio.de/xml; Cron-Frequenz: stündlich. Bewerber-Apply-URL aus Personio-Feed nehmen, nicht selbst generieren. ADR-0035 bestätigt anonymes Pulling als toleriertes Compliance-Risiko.project_offer. Live-Sample-XMLs liegen in docs/context/freelance.xml und docs/context/freelancermap.xml.https://solcom.minggo.io/{minggo_workspace_id}/apply/{field_sf_id}. Workspace-ID kommt aus Drupal-Config; SF-ID aus field_sf_id am Node.node.toUrl('canonical', ['absolute' => TRUE]) — kein Pfad-Hardcode.solcom-docs-ingestion wenn Spec verfügbar.