Playbook
Partner Capacity Is Not a CRUD (Create, Read, Update, Delete) Table (Partner Capacity Is Not A Crud Table)
Modeling ferry partner capacity as insert-delete rows ignores ticket lifecycles and approval flows.
Partner Ferry Booking Desk
Part 1 of 8
A series on managing ferry partner capacity through ticket lifecycles and discount workflows.
Capacity is a voyage contract, not a shelf
Partner capacity lives with companies, vehicles, drivers, and discount rules. Flattening it to generic CRUD forces cancel and usage rules to be patched later.
Partner voyage capacity
├─ tickets (lifecycle)
├─ companies / vehicles / drivers
└─ discounts (workflow)
↓
Booking desk decisions
This series builds a ferry booking desk with domain and MFE boundaries.
Concepts, defined where they first appear
📦 Partner Capacity
Sellable/used capacity truth for a partner voyage.
📦 Booking Desk
Ops surface managing tickets and context.
📦 Lifecycle Field
A state field with transition rules — unlike plain CRUD.
📦 Partner Contract Leak
Contract-specific rules leaking into UI or reports.
Treating capacity as a table row gets expensive at cancel and billing time.
Where CRUD breaks
A sold ticket may cancel before use; it does not behave like stock decrement.
Context is mandatory
Without company-vehicle-driver, a ticket is meaningless.
Ticket → requires context graph
MFE boundary
The booking remote embeds in a shell and also runs standalone.
The mappings that get confused most often
❌ Ticket = product stock row
✓ Ticket = capacity right with a lifecycle
❌ Discount = price field
✓ Discount = approved workflow
❌ Show partner internals everywhere
✓ Block contract leakage in reports
A checklist for auditing your own system
- Do you have a ticket transition diagram?
- What side effects does cancel trigger?
- Who must approve before a discount applies?
- Who uses the standalone booking URL?
- Any partner-specific language in report fields?
What to take away from this part
- Partner capacity is lifecycle-shaped.
- Context graph is part of the ticket.
- MFE boundaries protect booking-desk speed.
Teams that treat capacity as CRUD treat cancel as DELETE.
FAQ
Frequently asked questions
What is Partner Capacity?
Sellable/used capacity truth for a partner voyage.
What is Booking Desk?
Ops surface managing tickets and context.
Is it true that "Ticket = product stock row"?
Ticket = capacity right with a lifecycle
What does this part lock in?
This series builds a ferry booking desk with domain and MFE boundaries. Partner capacity lives with companies, vehicles, drivers, and discount rules. Flattening it to generic CRUD forces cancel and usage rules to be patched later.
Engineering Principles Learned
- Model partner capacity with lifecycles, not generic CRUD.
- A ticket without a context graph is invalid.
- Contract details must not leak into every UI/report.
Continue reading
Continue reading
Next in series
Ticket Lifecycle: Sold, Used, Canceled
Ticket Lifecycle: Sold, Used, Canceled — a production lesson from logistics operations platforms.
Same series
Companies, Vehicles, Drivers as Booking Context
Companies, Vehicles, Drivers as Booking Context — a production lesson from logistics operations platforms.
Same series
Discount Approval as a Workflow
Discount Approval as a Workflow — a production lesson from logistics operations platforms.