Context-Snapshot · docs/context/0008a · 2026-05-14 · P2503-127

FCSB · Live-Describe-Snapshot TR1__Job__c RecordType: Publication

TL;DR — Pre-Build-Gate für Slice 1 des project_offer-Sync-Plans. Live-Describe gegen FCSB-Sandbox solcom--fcsbsolcom.sandbox.my.salesforce.com via OAuth-Refresh-Flow erfolgreich (HTTP 200, 271 Felder am Object). RecordTypeId für Publication bestätigt: 012Wx000000C7ngIAC. SOQL-COUNT auf RecordType=Publication: 219 aktive Records. 22 Plan-Felder verifiziert, 4 Mapping-only-Felder existieren in Sandbox nicht (Drift gegen 0008-fcsb-bh4sf-publication-mapping: SC_VISRequestNo__c, SC_SolcomExternalId__c, SC_BH4SFRequestNo__c, SC_JobType__c), 1 Plan-Field-Name korrigiert (hohr__Publishing_start_date_time__chohr__Publishing_start_date__c, datetime trotz Name). Drift ist Mapping-Doc-Drift, kein Code-Drift — bestehende Migrate-YAMLs referenzieren die 4 fehlenden Felder nicht. Production-RecordTypeId ist noch TBD (FCSB-Sandbox ≠ FCSB-Prod, beide gemeinsam in Slice 1 zu setzen).

Run-Metadaten

Datum
2026-05-14
Sandbox-Org
FCSB
API-Version
v59.0
HTTP-Status
200 OK
Felder Total
271
Active Publications
219
Cron-Quota-Sizing
unkritisch
Auth-Flow
OAuth Refresh
PropertyValue
Instance URLhttps://solcom--fcsbsolcom.sandbox.my.salesforce.com
Token Endpointhttps://test.salesforce.com/services/oauth2/token
Describe Endpoint/services/data/v59.0/sobjects/TR1__Job__c/describe
Token Access-Length112 chars (Bearer)
Drupal-Servicesolcom_sf_publication.salesforce_client
Cred-Keys (drupal/key)solcom_sf_fcsb_client_id, solcom_sf_fcsb_client_secret, solcom_sf_fcsb_refresh_token (Environment-Provider)

RecordTypes auf TR1__Job__c

Bestätigt: Publication-RecordType in FCSB-Sandbox aktiv. Folgende RecordTypes haben mit dem solcom-Use-Case keinen direkten Bezug, sind aber zur Information dokumentiert.

developerNameRecordTypeId (Sandbox)nameactivesolcom-Relevanz
Publication012Wx000000C7ngIACPublicationtruePRIMARY — Inbound-Migrate-Filter
Internal_Vacancy012Wx000000C7neIACInternal VacancytrueKarriere-Vacancy-Sync (separat)
Pool_Vacancy012Wx000000C7nfIACPool Vacancytrue
Secondment012Wx000000C7niIACRequesttrue
Plus 6 weitere RecordTypes aktuell inactive (Consulting, Fixed_Term_Booking, Permanent, Recruitment_Selection, Retained, Try_and_Hire) — nicht für PPP relevant.
Production-RecordTypeId: NICHT durch diese Sandbox abdeckbar. Vor Production-Cutover muss derselbe Describe-Aufruf gegen FCSB-Production gemacht werden — Sandbox-IDs werden in Drupal nicht funktionieren. Slice 1 trägt die Sandbox-ID als Config-Default ein und documents die Prod-RecordTypeId-Beschaffung als Deploy-Pre-Step.

Felder-Verifikation: 22 Plan-Felder gegen Sandbox

Alle 22 Inbound-Felder + 1 Outbound-Feld aus dem Plan-Mapping (0008) sind in der FCSB-Sandbox vorhanden. Typen + Labels stimmen mit dem Mapping-Doc überein.

Identity & Title

Plan-FieldStatusTypeLabel (live)
TR1__Job_Title__cOKstringJob Title
TR1__Sector1__cOKpicklistIndustry

Beschreibungstexte

Plan-FieldStatusTypeLabel (live)
hohr__Long_description__cOKtextareaTasks of the position
hohr__Requirements_description__cOKtextareaMust-haves in experience and education
hohr__Internal_description__cOKtextareaFramework conditions
TR1__Experience_Requirements__cOKtextareaNice to have
hohr__Parent_Job__cOKreferenceParent Job

Publishing-Window & Status

Plan-FieldStatusTypeLabel (live)Note
hohr__Publishing_start_date__cNAME-DRIFTdatetimePublishing Start Date TimePlan/0008 sagt hohr__Publishing_start_date_time__c — existiert nicht. In der Sandbox heißt das Feld hohr__Publishing_start_date__c (datetime, trotz Name). Slice 1 muss das Migrate-Mapping nicht ändern (referenziert bereits korrekt), nur Field-Help-Texte korrigieren.
hohr__Publishing_end_date_time__cOKdatetimePublishing End Date Time
SC_PublicationStatus__cOKpicklistPublication Status

Publishing-Channels (PPP-Filter)

Plan-FieldStatusType
SC_Publishing_Channel_Freelance__cOKboolean
SC_Publishing_Channel_Freelancermap__cOKboolean
SC_Publishing_Channel_Gulp__cOKboolean
SC_Publishing_Channel_Homepage__cEXTRAboolean
Extra-Channel SC_Publishing_Channel_Homepage__c: Existiert in Sandbox, ist aber nicht im aktuellen Plan-Mapping referenziert. Optional Folgeschritt: Soll der PPP-Filter „PPP=true" über diesen Channel oder über SC_PublicationStatus__c=Online gehen? — Decision in Slice 1.

Lokation & Timing

Plan-FieldStatusType
TR1__City__cOKstring (Label: Location)
TR1__Estimated_Start_Date__cOKdate (Label: Desired start)
SC_LatestStart__cOKdate
SC_Duration__cOKstring
SC_Utilisation__cOKstring

External Keys

Plan-FieldStatusType
SC_AutoNumber__cOKstring
SC_ExternalPublicationNo__cOKstring
SC_ExternalRequestNo__cOKstring

Outbound

Plan-FieldStatusType
hohr__Job_Application_URL__cOKurl

Drift gegen 0008-Mapping-Doc

Vier in 0008 als „Erweiterte / optionale Felder" geführte API-Namen existieren in der FCSB-Sandbox nicht. Das aktuelle Migrate-Mapping referenziert keinen dieser Namen — somit kein Code-Drift, nur Mapping-Doc-Drift.

Mapping-Doc-FieldExistiert in SandboxPlausibler SubstituteAktion in Slice 1
SC_VISRequestNo__cFEHLTVIS-Nr. nur via Relation hohr__Parent_Job__r.SC_ExternalRequestNo__c erreichbar (wie ursprünglich im Mapping-Doc primär dokumentiert)Mapping-Doc-Annotation, dass direktes Job-Level-Feld in FCSB-Sandbox nicht (mehr) existiert
SC_SolcomExternalId__cFEHLTSC_AutoNumber__c oder SC_ExternalRequestNo__cField-Lookup für External-Id auf SC_AutoNumber__c umstellen (Plan-Doc-Korrektur)
SC_BH4SFRequestNo__cFEHLTSC_ExternalRequestNo__cMapping-Doc-Annotation; aktuelles Migrate-Mapping referenziert es nicht
SC_JobType__cFEHLTSC_Type__c (picklist, Label „Type") — Werte unklar, in beiden Sample-Records nullMapping-Doc-Annotation; Picklist-Werte separat per SC_Type__c/describe abzuholen wenn JobType-Filter in Phase 2 gebraucht wird
Root-cause des Drift: Die Mapping-Doc 0008 wurde aus dem Excel-Interface-Mapping IC_I220_BH4SF_Publication_Website abgeleitet. Excel ist die SOLCOM/Entero-Soll-Beschreibung des Interfaces; die FCSB-Sandbox spiegelt den aktuellen Salesforce-Konfigurations-Stand. Excel scheint einen geplanten oder zurückgerollten Feld-Stand zu beschreiben. Für MVP irrelevant: Migrate-Mapping nutzt nur die 22 verifizierten Inbound-Felder.

Steady-State-Volume & Quota-Sizing

MetricValueSource
SOQLSELECT COUNT() FROM TR1__Job__c WHERE RecordTypeId='012Wx000000C7ngIAC'Live
HTTP200
Active Publications219Live
Geocoder-Quota-StressNIEDRIG — 219 City-Werte gesamt, Pre-Seed deckt die DE-Großstädte ab (Slice 8 Risk Med)Plan §04
Cron-Hourly-LoadNIEDRIG — Stunden-Cron-Diff vermutlich <10 Records, SOQL-Quota-Verbrauch unkritischPlan §01 Inbound-Pull
PaginationBei steady-state 219 Records kein Body-Paging notwendig (LIMIT 2000 reicht). SfHttpFetcher hat Paging-Support für zukünftiges Wachstum.

Sample-Record

Ein Beispielsatz (gekürzt) als Sanity-Check der Live-Query mit verifizierten Field-Namen.

SOQL: SELECT Id, TR1__Job_Title__c, SC_PublicationStatus__c, hohr__Publishing_start_date__c,
       hohr__Publishing_end_date_time__c, TR1__City__c, SC_AutoNumber__c, SC_Type__c, SC_RemoteShare__c
FROM TR1__Job__c WHERE RecordTypeId='012Wx000000C7ngIAC' LIMIT 2

Response (HTTP 200, totalSize=2, done=true):
  Record 1:
    Id:                                a1WAU000001xxoH2AQ
    TR1__Job_Title__c:                 "Testshare"
    SC_PublicationStatus__c:           null
    hohr__Publishing_start_date__c:    2025-08-12T11:07:12.000+0000
    hohr__Publishing_end_date_time__c: null
    TR1__City__c:                      null
    SC_AutoNumber__c:                  "1000011"
    SC_Type__c:                        null
    SC_RemoteShare__c:                 null
  Record 2:
    Id:                                a1WAU000001xzA92AI
    TR1__Job_Title__c:                 null
    SC_PublicationStatus__c:           null
    ...
Sample-Befund: In beiden ersten Records ist SC_PublicationStatus__c NULL. Das bedeutet: Die 219 Publication-Records sind nicht zwangsläufig alle „Online". Das aktuelle Migrate-Mapping (P2503-131) filtert beim Render-Time nur SC_PublicationStatus__c == "Online" → Slice 2 (Lifecycle-Window) muss diesen Filter sicher implementieren, sonst werden Test-Records sichtbar.

Implications für Slice 1