Propose Sales Order
Workflow #8 — draft a Fishbowl sales order (status Estimate) from an approved customer PO; created only once sales approves.
Overview
MCP tool propose_order_entry — agent-callable, but it only queues: it creates a pending proposal (Proposal CreatedProposal CreatedEventv0.1.0A propose_* command queued a mutation: a Proposal now exists in status `pending` with a freshly-minted per-card widget t...Ownervisionary-engineeringMapView docs) on the Approval Bus (command service — owns the queue)Approval Bus (command service — owns the queue)Servicev0.1.0The command side: owns the proposal queue. propose_* only queue; a cleared human approves in the card; only then does th...Publishesproposal-created, proposal-approved +3Subscribespropose-vendor-bill, propose-bill-date-correction +6Ownervisionary-engineeringMapRepoView docs and returns the approval card. No vendor write happens here. Watch the full lifecycle: Propose Sales Order — command lifecyclePropose Sales Order — command lifecycleFlowv0.1.0One propose_order_entry call end to end: queue → sales approves → applier imports a draft SO (status Estimate) via Fishb...Ownervisionary-engineeringView flowView docs.
On approval OrderEntryApplier (workflow #8)OrderEntryApplier (workflow #8)Servicev0.1.0Applies an approved sales order: imports a draft SO (status Estimate) via Fishbowl's CSV import path.Publishesfishbowl-import-sales-orderSubscribesproposal-approvedOwnervisionary-engineeringMapRepoView docs imports the draft SO via Fishbowl Import Sales OrderFishbowl Import Sales OrderCommandv0.1.0Creates a draft SO (status Estimate) via Fishbowl's /api/import CSV path — Fishbowl's only write surface.Ownervisionary-engineeringMapView docs (Fishbowl’s CSV import path — its only write surface). Fishbowl is not live yet — at apply time an outage degrades to a structured failed proposal, never a crash.
Response shape note (CQRS): the tool returns the public pending proposal (id, kind, summary, status) so the host can render the approval card — the command’s real “return” is the proposal id; the mutation result only ever exists on the proposal record after a human approves.
Reading this page: a message page renders its contract and its one hop — who sends it, who receives it (that is EventCatalog’s grain: message = contract). The service page shows this workflow’s full fan-out (its
sends); the flow shows the lifecycle step by step.
Input schema
Architecture diagram
Input (from the zod tool schema)
1