Busflow Docs

Internal documentation portal

Skip to content
Reviewed 28 May 2026

Kuschick Adapter Effort Estimate

Status: Rough estimate after grill session Purpose: Size the Busflow-owned Kuschick adapter as a partner-facing Satzart/xtoura MVP plus later Busflow product capabilities.

Assumptions

  • Kuschick remains System of Record for the Satzart/xtoura MVP.
  • Satzart receives a wrapper for the Kuschick booking form flow, including real confirm writes to Kuschick.
  • The first adapter is lossless and system-specific; full Busflow domain normalization happens in a later central Busflow layer.
  • Read-heavy starting data is cached and preloaded twice daily, e.g. 02:00 and 14:00.
  • Form initialization uses cache and background refresh; final write operations call Kuschick synchronously.
  • Satzart MVP uses No-PII Persistence where possible.
  • No admin/debug UI in MVP; Swagger/OpenAPI, structured logs and stored raw read responses are sufficient.
  • Transport remains a risk: the provided PDF describes XML-over-HTTP, not SOAP/WSDL.

T-Shirt Sizes

SizeMeaning
XS< 1 day
S1-2 days
M3-5 days
L6-10 days
XL11-20 days

Satzart / xtoura MVP

ModuleSizeEffortNotes
Protocol verification & Kuschick sandbox spikeS1-2dConfirm XML-over-HTTP vs SOAP/WSDL, auth key generation, timeout behavior.
Partner/Operator integration configXS-S0.5-1dOperator-scoped Kuschick credentials, base URL, provider settings.
Partner API authS1-2dAPI key per partner-operator integration, hashed storage, rotation model, optional IP allowlist check.
Kuschick transport clientS-M2-4dRequest builder, MD5 daily key, XML parse/build, provider error handling.
OpenAPI / Swagger contractsS1-2dPublic DTOs, cache semantics, error models, polling status. Nest/Swagger already exists.
Scheduled preload jobsM2-4dTwice-daily preload of products/reise starting data, availability-adjacent data, payment/CRM/options where feasible.
Cache model & refresh jobsM2-4dCache entries, age metadata, refreshJobId, polling states, pragmatic stale-while-revalidate basics.
Composite form initialization DTOM2-5dUX-ready model: fields, labels, requiredness, payments, CRM, seat options, validation plan, provider IDs.
Quote / validate flowM2-4dKuschick BUCHUNG with buchungsart=Anfrage, quoteId TTL, payload binding.
Confirm flowM2-4dKuschick BUCHUNG with buchungsart=Buchung, provider outcome states, idempotency/correlation.
Idempotency & fremdvorgang handlingS-M1-3dCorrelation ID, test whether Kuschick stores/searches fremdvorgang, duplicate-submit protection.
Raw response storage & PII redactionS1-2dStore read/cache raw responses; avoid durable PII for booking data in Satzart mode.
Error taxonomy & partner-safe messagesS-M1-3dprovider rejected, provider unavailable, provider outcome unknown, support codes.
Tests & mocked provider fixturesS-M2-5dXML fixtures, cache states, timeout/outcome-unknown cases, quote/confirm contract tests.
Deployment/ops hardeningS1-2dEnv config, secrets, logs, basic monitoring, rate limits.

Pragmatic solid MVP total: roughly 17-32 person-days. This assumes an experienced implementation in the existing NestJS API, scoped tightly around one provider and one partner-facing booking flow.

Very thin functional spike: roughly 7-12 person-days. This proves the Kuschick transport, form starting data, quote/confirm path and OpenAPI shape, but deliberately avoids full resilience, complete edge-case tests, deep cache polish and advanced privacy modes.

Productized Busflow adapter: roughly 30-50 person-days. This is the right frame if the adapter is treated as a durable Busflow product surface with support workflows, stronger observability, broader provider abstractions and better operational tooling.

MVP Cut

The MVP should include:

  • Operator-scoped Kuschick credentials.
  • Partner API key auth and optional IP allowlist.
  • Kuschick transport adapter for the booking-form Satz-Typen.
  • Twice-daily scheduled preload.
  • Cache-backed composite form initialization.
  • Polling-based background refresh.
  • quote / validate with short-lived quoteId.
  • confirm write to Kuschick for Satzart.
  • Clear provider error semantics.
  • Correlation via Busflow ID and, if usable, Kuschick fremdvorgang.
  • No-PII persistence mode for Satzart.
  • Swagger/OpenAPI.

The MVP should exclude:

  • Full Busflow domain import into TourTemplate, TourDeparture, BoardingPoint, or Commerce tables.
  • Two-way sync.
  • Buchungs-/Abrechnungs-Sync as a Satzart feature.
  • Admin/debug UI.
  • SSE/WebSocket updates.
  • On-the-fly Busflow price calculation.
  • OAuth/JWT partner ecosystem.

Phase 2 / Busflow Product Capabilities

ModuleSizeEffortWhy Later
Central Busflow normalization layerL-XL10-20dMaps system-specific adapter DTOs into Busflow import/staging models.
Migration/staging pipelineXL15-30dReview UI, conflict handling, materialization into Backoffice/Commerce.
Product/stammdaten import expansionL6-12dDeeper PRODUKTE, PRODUKTDATEN, STAMMZUSTIEGE, STAMMVERSICHERUNGEN use.
Buchungs-/Abrechnungs-SyncXL15-30dStrategic Busflow USP, not a Satzart wrapper feature.
Offline queued Busflow bookingXL15-30dAccept requests when Kuschick is down; needs customer-facing status and manual process.
Integrator cockpitL8-15dCache status, raw responses, provider health, manual resolution workflows.
SSE/WebSocket refresh updatesM3-6dBetter UX after polling MVP proves useful.
OAuth/JWT partner authM-L5-10dNeeded for larger partner ecosystem and scoped delegation.
On-the-fly calculation layerXL20d+Requires importing/calculating Kuschick pricing basis; high domain risk.
Advanced privacy/retention controlsM-L5-10dPer-mode retention, encryption, audit access, deletion workflows.

Risk Multipliers

RiskImpact
No reliable Kuschick test systemAdds 20-40% due to manual verification and delayed bug discovery.
fremdvorgang not stored/searchableAdds complexity for duplicate-submit and outcome-unknown handling.
Slow or unstable provider responsesIncreases caching, retry and timeout design work.
Hidden Kuschick validation rulesExpands quote/confirm mapping and partner error handling.
Browser-direct integration requiredRaises security scope; API keys in clients are unacceptable without a different auth pattern.
PII retention requirements changeCan add encryption, retention and access-control work.

Recommendation

Build the MVP as a solid wrapper product, not as a throwaway integration:

  1. Start with protocol verification and fixtures.
  2. Build API key auth, operator credentials and transport client.
  3. Implement cache/preload before polishing the form DTO.
  4. Ship composite form initialization plus polling refresh.
  5. Add quote/confirm with correlation and explicit outcome states.
  6. Keep Busflow migration/sync as Phase 2, where it becomes product leverage instead of partner custom work.

Commercial Packaging Recommendation

For Satzart, package the work as a small fixed first phase rather than selling the full productized adapter.

Recommended billable frame: "Kuschick Booking API Foundation" at roughly 2.5 weeks. This corresponds to the very thin functional spike plus selected MVP hardening. It is commercially attractive for a price-sensitive customer and still funds Busflow's research base.

The offer should avoid promising the full pragmatic MVP if only the spike is billed. Instead, phrase the deliverable as:

  • working Kuschick booking-flow foundation for the agreed first operator/use case;
  • documented API via Swagger/OpenAPI;
  • basic cache/preload behavior for form starting data;
  • quote/confirm flow against Kuschick;
  • structured provider errors and correlation IDs;
  • no admin/debug UI;
  • no Busflow migration/staging;
  • no two-way sync or Buchungs-/Abrechnungs-Sync;
  • no guarantee that all Kuschick edge cases are covered in phase 1.

Internally, Busflow can build the implementation slightly more solidly than the paid scope requires. That creates strategic reuse without increasing Satzart's contractual expectations. Further hardening, extra Kuschick Satz-Typen, advanced offline behavior, provider-sync features or support tooling should become explicit follow-up phases.

Internal documentation — Busflow