Harbourline is a demonstration company we built and run — four stores, a distribution centre, thirteen months of trading. Nothing below is a customer’s result.
Balancing the stores before the weekend
Captured on 30 October 2026 with Claude through the AlmondTill connector; the figures re-read from Harbourline’s records on the same day (every one listed below).
What moves between Harbourline's stores before the weekend, what the distribution centre sends, and what still needs the supplier.
The assignment
“Balance our stores before the weekend. Find what's overstocked in one store and short in another, move it along our usual lanes, and never take a store below its display minimum. Tell me what still needs the supplier.”
What it used
- The replenishment rules — the display minimum each floor keeps, what a store may give away, and how far stock may travel.
- The usual lanes into each store: its own stock room and the distribution centre always, the other floors ranked by distance, everything else after.
- The pull desk into every floor — 4 walks over 44 pages and 36,396 position reads — each proposed line with the store's own position, reorder point and target, and its recent sales.
- The donor's own spare for every store-to-store line — 2 reads, one per donor and variant.
- The stock on hand today, store by store (19 report pages).
- The city on each store's location record, so the follow-up's Montreal is read and not guessed.
- The variants, products, styles and categories behind every line, so knitwear is known by its category and every line has its name.
- 501 calls in all, every one through the connector.
The rules the desk kept are the merchant's own, read from the replenishment rules. A store keeps its display minimum: two units of a variant on the floor, in every store's rules. A store gives only what stands above its own target and that minimum, and only when the spare is three units or more. Stock moves along the usual lanes, within six hundred kilometres. A transfer request holds at most 24 lines. The order of the lines, the cut into requests and the hold are the assistant's arithmetic: inside each store-and-donor pair the lines run fast-movers-first by each line's own sales over the last thirty days, a pair's lines are cut into requests of 24, and a line held back is held, not sent from somewhere else.
The proposal
The stores are short of the same things, so little moves between them. 4 lines move store to store — 7 units in all — each from a store holding more of a variant than its own target and display minimum together. The distribution centre carries the week: 308 lines and 468 units into the four stores. 6,074 positions below target found no store with spare stock; they still need the supplier.
| From | To | Style | Colour and size | Units | Spare at the donor | The lane |
|---|---|---|---|---|---|---|
| Harbourline Queen West — shop floor | Harbourline Yorkville — shop floor | Knitwear style 458 (FW26) | Charcoal, L | 1 | 5 of 10 on hand | 2 km, a usual lane |
| Harbourline Yorkville — shop floor | Harbourline Queen West — shop floor | Women's style 574 (FW26) | Forest, 10 | 2 | 5 of 10 on hand | 2 km, a usual lane |
| Harbourline Queen West — shop floor | Harbourline Rideau — shop floor | Knitwear style 458 (FW26) | Charcoal, L | 3 | 5 of 10 on hand | 354 km, a usual lane |
| Harbourline Queen West — shop floor | Harbourline Sainte-Catherine — shop floor | Knitwear style 458 (FW26) | Charcoal, L | 1 | 5 of 10 on hand | 505 km, a usual lane |
Harbourline Queen West gives Knitwear style 458 (FW26) in Charcoal, size L, to three stores — 1 to Harbourline Yorkville, 3 to Harbourline Rideau and 1 to Harbourline Sainte-Catherine: the whole of its spare of 5 and not a unit more. It had 10 on hand against a target of 3 and a display minimum of 2. Harbourline Yorkville gives Harbourline Queen West 2 of Women's style 574 (FW26) in Forest, size 10, from a spare of 5 — 10 on hand against a target of 3 and a display minimum of 2. Every store-to-store line was checked against the donor's own spare before it was proposed: 4 lines checked, each at or under that spare.
What the distribution centre sends, store by store:
| Store | Lines | Units | Requests |
|---|---|---|---|
| Harbourline Yorkville — shop floor | 74 | 109 | 4 |
| Harbourline Queen West — shop floor | 95 | 157 | 4 |
| Harbourline Rideau — shop floor | 58 | 81 | 3 |
| Harbourline Sainte-Catherine — shop floor | 81 | 121 | 4 |
In all: 312 lines and 475 units over 8 store-and-donor pairs, cut into 19 transfer requests of at most 24 lines each — 308 lines from the distribution centre and 4 from another store, every store-to-store pair a request of its own.
What still needs the supplier — the positions below target that no store could fill:
| Store | Positions |
|---|---|
| Harbourline Yorkville — shop floor | 1,504 |
| Harbourline Queen West — shop floor | 1,546 |
| Harbourline Rideau — shop floor | 1,499 |
| Harbourline Sainte-Catherine — shop floor | 1,525 |
6,074 positions in all. Every one is there for the same reason — no store held spare stock of the variant: 6,074 positions with no donor, none covered only in part. Buying for them is the buy desk's weekly job, the first worked example; this one moves stock and buys nothing.
The follow-ups
“Montreal's weather just turned. Move knitwear there first, and don't take anything out of Yorkville this week.”
The store in Montreal is Harbourline Sainte-Catherine — shop floor; its location record says Montréal. Its knitwear goes first: 38 lines and 38 units, moved to the front of its requests and cut into requests of their own ahead of the rest, fast movers first inside — among them the Knitwear style 458 (FW26) line from Harbourline Queen West. Nothing leaves Harbourline Yorkville this week: 1 line was coming out of it — 2 units of Women's style 574 (FW26) in Forest, size 10, into Harbourline Queen West — and it is held for the supplier or next week; the assistant does not pick another donor, the desk does. The plan before the follow-up: 312 lines, 475 units, 19 transfer requests. After it: 311 lines, 473 units, 18 requests.
The exceptions
- The donor's spare was read for every store-to-store line before it was proposed: 4 lines checked, each at or under the donor's spare; 0 lines whose donor could not be read.
- 19 transfer requests were rehearsed through the connector, one for each request in the plan, and shown back with their confirmation tokens; none was confirmed, and the count of open transfer requests was the same before and after.
- 6,074 positions below target found no store with spare stock. The plan sends nothing for them and says so; they are the buying plan's, not this week's transfers.
What stayed the merchant's call
The assistant wrote nothing. Every transfer request above was rehearsed through the connector and shown with its confirmation token; none was confirmed, and the stores' stock stands as it was. The lanes, the display minimum and the three-unit rule are the merchant's own replenishment rules. The order of the lines, the cut into requests and the Yorkville hold are the assistant's arithmetic over the engine's suggestions, and the merchant can change any of them. What still needs the supplier is a buying question, not a transfer — the weekly buying plan's job, the first worked example. The owner's own session, with these prompts put to the assistant, follows.
Where every figure comes from
Every figure on this page is read from the run file at the render. Each one is a call’s answer by its number, or a figure derived from the answers by the formula beside it. Nothing is typed.
| Figure | Value | Read from |
|---|---|---|
| capturedAt | 30 October 2026 | the run file — the figures’ capture instant |
| company.name | Harbourline | the run file — the capture’s own record |
| derived.balancing.displayMinimum.checked | 4 | derived — the store-to-store lines whose donor’s excess was read — every one at or under that excess, else the derivation refuses (never below the display minimum) |
| derived.balancing.displayMinimum.notShown | 0 | derived — the store-to-store lines whose donor’s excess could not be read — the read was refused or named no line |
| derived.balancing.floors.01a16b0e-4119-7822-b5c1-41c11023cc81.city | Montréal | derived — the city on the floor’s location record (get_record PhysicalFacilityLocation, reached through the layout’s physical facility) — it decides the follow-up’s first store |
| derived.balancing.followUp.after.lines | 311 | derived — the lines after the follow-up — the first answer’s less the held lines |
| derived.balancing.followUp.after.requests | 18 | derived — the platform requests after the follow-up — the held pairs gone; the first store’s lines moved first cut into their own requests and the rest into theirs; every other pair as before |
| derived.balancing.followUp.after.units | 473 | derived — the units after the follow-up — the first answer’s less the held units |
| derived.balancing.followUp.before.lines | 312 | derived — the first answer’s lines, counted |
| derived.balancing.followUp.before.requests | 19 | derived — the first answer’s platform requests, added over the pairs |
| derived.balancing.followUp.before.units | 475 | derived — the first answer’s units, added |
| derived.balancing.followUp.held.0.quantity | 2 | derived — the units of a held line |
| derived.balancing.followUp.heldLines | 1 | derived — the lines whose donor is the held floor — they wait for the supplier or next week, counted |
| derived.balancing.followUp.knitwearLines | 38 | derived — the first store’s lines moved first — their own request first in each of its pairs, counted |
| derived.balancing.followUp.knitwearUnits | 38 | derived — the units of the lines moved first, added |
| derived.balancing.fromWarehouse.byStore.01a16b0e-35a0-7906-a6df-bc172d43dd27.lines | 74 | derived — the floor’s lines from the distribution centre, counted over the pages |
| derived.balancing.fromWarehouse.byStore.01a16b0e-35a0-7906-a6df-bc172d43dd27.units | 109 | derived — the floor’s units from the distribution centre, added |
| derived.balancing.fromWarehouse.byStore.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.lines | 95 | derived — the floor’s lines from the distribution centre, counted over the pages |
| derived.balancing.fromWarehouse.byStore.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.units | 157 | derived — the floor’s units from the distribution centre, added |
| derived.balancing.fromWarehouse.byStore.01a16b0e-3d7a-7716-87db-e9c8cfe8691e.lines | 58 | derived — the floor’s lines from the distribution centre, counted over the pages |
| derived.balancing.fromWarehouse.byStore.01a16b0e-3d7a-7716-87db-e9c8cfe8691e.units | 81 | derived — the floor’s units from the distribution centre, added |
| derived.balancing.fromWarehouse.byStore.01a16b0e-4119-7822-b5c1-41c11023cc81.lines | 81 | derived — the floor’s lines from the distribution centre, counted over the pages |
| derived.balancing.fromWarehouse.byStore.01a16b0e-4119-7822-b5c1-41c11023cc81.units | 121 | derived — the floor’s units from the distribution centre, added |
| derived.balancing.fromWarehouse.lines | 308 | derived — the lines whose donor is the distribution centre, over every floor, counted |
| derived.balancing.fromWarehouse.units | 468 | derived — the units of every line from the distribution centre, added |
| derived.balancing.rehearsals.sent | 19 | derived — the run_write rehearsals the capture sent — every one the door’s words or its dry run, with a token never sent back, counted |
| derived.balancing.requests.byStore.01a16b0e-35a0-7906-a6df-bc172d43dd27.byDonor.01a16b0e-324b-7821-97f1-e39815440b3a.requests | 4 | derived — the pair’s lines divided by the cap, rounded up — the platform requests it takes; the lines fast-movers-first (the 30-day net velocity, then the variant id) |
| derived.balancing.requests.byStore.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byDonor.01a16b0e-324b-7821-97f1-e39815440b3a.requests | 4 | derived — the pair’s lines divided by the cap, rounded up — the platform requests it takes; the lines fast-movers-first (the 30-day net velocity, then the variant id) |
| derived.balancing.requests.byStore.01a16b0e-3d7a-7716-87db-e9c8cfe8691e.byDonor.01a16b0e-324b-7821-97f1-e39815440b3a.requests | 3 | derived — the pair’s lines divided by the cap, rounded up — the platform requests it takes; the lines fast-movers-first (the 30-day net velocity, then the variant id) |
| derived.balancing.requests.byStore.01a16b0e-4119-7822-b5c1-41c11023cc81.byDonor.01a16b0e-324b-7821-97f1-e39815440b3a.requests | 4 | derived — the pair’s lines divided by the cap, rounded up — the platform requests it takes; the lines fast-movers-first (the 30-day net velocity, then the variant id) |
| derived.balancing.requests.lines | 312 | derived — every line over every pair, counted |
| derived.balancing.requests.linesPerRequest | 24 | derived — the platform’s cap on a transfer request’s lines, from the narrative’s caps |
| derived.balancing.requests.pairs | 8 | derived — the store-and-donor pairs over every floor — one merged request each, counted |
| derived.balancing.requests.requests | 19 | derived — the platform requests — each pair’s lines divided by the cap, rounded up — added over the pairs |
| derived.balancing.requests.units | 475 | derived — every line’s units, added |
| derived.balancing.storeToStore.byStore.01a16b0e-35a0-7906-a6df-bc172d43dd27.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byVariant.01a16bcb-3fb6-753b-b512-b425f3e91b56.donorAvailableQty | 10 | derived — the donor’s available units for the variant, from the same read; none when not shown |
| derived.balancing.storeToStore.byStore.01a16b0e-35a0-7906-a6df-bc172d43dd27.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byVariant.01a16bcb-3fb6-753b-b512-b425f3e91b56.donorExcessQty | 5 | derived — the donor’s own excess above its target and reserve for the variant — the allocationSuggestions read from the donor; none when that read was refused or named no line |
| derived.balancing.storeToStore.byStore.01a16b0e-35a0-7906-a6df-bc172d43dd27.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byVariant.01a16bcb-3fb6-753b-b512-b425f3e91b56.donorReserveQty | 2 | derived — the donor’s reserve floor — its display minimum — for the variant, from the same read; none when not shown or none set |
| derived.balancing.storeToStore.byStore.01a16b0e-35a0-7906-a6df-bc172d43dd27.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byVariant.01a16bcb-3fb6-753b-b512-b425f3e91b56.donorTargetQty | 3 | derived — the donor’s own target level for the variant, from the same read; none when not shown |
| derived.balancing.storeToStore.byStore.01a16b0e-35a0-7906-a6df-bc172d43dd27.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byVariant.01a16bcb-3fb6-753b-b512-b425f3e91b56.quantity | 1 | derived — the units the desk moves on this line — whole units, as the request carries them |
| derived.balancing.storeToStore.byStore.01a16b0e-35a0-7906-a6df-bc172d43dd27.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.distanceKm | 2 | derived — the lane’s great-circle distance, to the whole kilometre (half up); none when a side has no geo seed |
| derived.balancing.storeToStore.byStore.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byDonor.01a16b0e-35a0-7906-a6df-bc172d43dd27.byVariant.01a16c27-be7e-7d3b-b59a-40de8d305308.donorAvailableQty | 10 | derived — the donor’s available units for the variant, from the same read; none when not shown |
| derived.balancing.storeToStore.byStore.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byDonor.01a16b0e-35a0-7906-a6df-bc172d43dd27.byVariant.01a16c27-be7e-7d3b-b59a-40de8d305308.donorExcessQty | 5 | derived — the donor’s own excess above its target and reserve for the variant — the allocationSuggestions read from the donor; none when that read was refused or named no line |
| derived.balancing.storeToStore.byStore.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byDonor.01a16b0e-35a0-7906-a6df-bc172d43dd27.byVariant.01a16c27-be7e-7d3b-b59a-40de8d305308.donorReserveQty | 2 | derived — the donor’s reserve floor — its display minimum — for the variant, from the same read; none when not shown or none set |
| derived.balancing.storeToStore.byStore.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byDonor.01a16b0e-35a0-7906-a6df-bc172d43dd27.byVariant.01a16c27-be7e-7d3b-b59a-40de8d305308.donorTargetQty | 3 | derived — the donor’s own target level for the variant, from the same read; none when not shown |
| derived.balancing.storeToStore.byStore.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byDonor.01a16b0e-35a0-7906-a6df-bc172d43dd27.byVariant.01a16c27-be7e-7d3b-b59a-40de8d305308.quantity | 2 | derived — the units the desk moves on this line — whole units, as the request carries them |
| derived.balancing.storeToStore.byStore.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byDonor.01a16b0e-35a0-7906-a6df-bc172d43dd27.distanceKm | 2 | derived — the lane’s great-circle distance, to the whole kilometre (half up); none when a side has no geo seed |
| derived.balancing.storeToStore.byStore.01a16b0e-3d7a-7716-87db-e9c8cfe8691e.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byVariant.01a16bcb-3fb6-753b-b512-b425f3e91b56.donorAvailableQty | 10 | derived — the donor’s available units for the variant, from the same read; none when not shown |
| derived.balancing.storeToStore.byStore.01a16b0e-3d7a-7716-87db-e9c8cfe8691e.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byVariant.01a16bcb-3fb6-753b-b512-b425f3e91b56.donorExcessQty | 5 | derived — the donor’s own excess above its target and reserve for the variant — the allocationSuggestions read from the donor; none when that read was refused or named no line |
| derived.balancing.storeToStore.byStore.01a16b0e-3d7a-7716-87db-e9c8cfe8691e.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byVariant.01a16bcb-3fb6-753b-b512-b425f3e91b56.quantity | 3 | derived — the units the desk moves on this line — whole units, as the request carries them |
| derived.balancing.storeToStore.byStore.01a16b0e-3d7a-7716-87db-e9c8cfe8691e.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.distanceKm | 354 | derived — the lane’s great-circle distance, to the whole kilometre (half up); none when a side has no geo seed |
| derived.balancing.storeToStore.byStore.01a16b0e-4119-7822-b5c1-41c11023cc81.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byVariant.01a16bcb-3fb6-753b-b512-b425f3e91b56.donorAvailableQty | 10 | derived — the donor’s available units for the variant, from the same read; none when not shown |
| derived.balancing.storeToStore.byStore.01a16b0e-4119-7822-b5c1-41c11023cc81.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byVariant.01a16bcb-3fb6-753b-b512-b425f3e91b56.donorExcessQty | 5 | derived — the donor’s own excess above its target and reserve for the variant — the allocationSuggestions read from the donor; none when that read was refused or named no line |
| derived.balancing.storeToStore.byStore.01a16b0e-4119-7822-b5c1-41c11023cc81.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byVariant.01a16bcb-3fb6-753b-b512-b425f3e91b56.quantity | 1 | derived — the units the desk moves on this line — whole units, as the request carries them |
| derived.balancing.storeToStore.byStore.01a16b0e-4119-7822-b5c1-41c11023cc81.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.distanceKm | 505 | derived — the lane’s great-circle distance, to the whole kilometre (half up); none when a side has no geo seed |
| derived.balancing.storeToStore.lines | 4 | derived — the lines whose donor is another store’s floor, over every floor, counted — the pages merged one request per store-and-donor pair (the kit’s way) |
| derived.balancing.storeToStore.units | 7 | derived — the units of every store-to-store line, added |
| derived.balancing.supplier.byAnnotation.no-donor.gaps | 6,074 | derived — the gaps carrying this annotation over every floor, counted |
| derived.balancing.supplier.byStore.01a16b0e-35a0-7906-a6df-bc172d43dd27.gaps | 1,504 | derived — the floor’s gaps over the pages, counted |
| derived.balancing.supplier.byStore.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.gaps | 1,546 | derived — the floor’s gaps over the pages, counted |
| derived.balancing.supplier.byStore.01a16b0e-3d7a-7716-87db-e9c8cfe8691e.gaps | 1,499 | derived — the floor’s gaps over the pages, counted |
| derived.balancing.supplier.byStore.01a16b0e-4119-7822-b5c1-41c11023cc81.gaps | 1,525 | derived — the floor’s gaps over the pages, counted |
| derived.balancing.supplier.gaps | 6,074 | derived — the rebalance gaps over every floor and page — the lines no donor could fill, counted; what still needs the supplier |
| derived.facts.calls | 501 | derived — every call of the run, counted |
| derived.facts.giveCalls | 2 | derived — the allocationSuggestions reads — one per store-to-store line, counted |
| derived.facts.positionsExamined | 36,396 | derived — each desk walk’s final cumulative examined count, added over the walks |
| derived.facts.pullPages | 44 | derived — the rebalanceSuggestions pages over every floor, counted |
| derived.facts.pullWalks | 4 | derived — the pull desk walks — one per floor, counted |
| derived.facts.reportPages | 19 | derived — the report_run calls, counted |
| names.facilities.01a16b0e-35a0-7906-a6df-bc172d43dd27.caption | Harbourline Yorkville — shop floor | the run’s names — org_layout (call 3), read 30 October 2026 |
| names.facilities.01a16b0e-35a0-7906-a6df-bc172d43dd27.physicalFacility | Harbourline Yorkville | the run’s names — org_layout (call 3), read 30 October 2026 |
| names.facilities.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.caption | Harbourline Queen West — shop floor | the run’s names — org_layout (call 3), read 30 October 2026 |
| names.facilities.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.physicalFacility | Harbourline Queen West | the run’s names — org_layout (call 3), read 30 October 2026 |
| names.facilities.01a16b0e-3d7a-7716-87db-e9c8cfe8691e.caption | Harbourline Rideau — shop floor | the run’s names — org_layout (call 3), read 30 October 2026 |
| names.facilities.01a16b0e-3d7a-7716-87db-e9c8cfe8691e.physicalFacility | Harbourline Rideau | the run’s names — org_layout (call 3), read 30 October 2026 |
| names.facilities.01a16b0e-4119-7822-b5c1-41c11023cc81.caption | Harbourline Sainte-Catherine — shop floor | the run’s names — org_layout (call 3), read 30 October 2026 |
| names.facilities.01a16b0e-4119-7822-b5c1-41c11023cc81.physicalFacility | Harbourline Sainte-Catherine | the run’s names — org_layout (call 3), read 30 October 2026 |
| names.styles.01a16b12-b804-7abb-937b-0f2c8cf6b835.caption | Knitwear style 458 (FW26) | the run’s names — run_read styles (call 430), read 30 October 2026 |
| names.styles.01a16b13-9a92-7b43-b23c-d44318081b3a.caption | Women's style 574 (FW26) | the run’s names — run_read styles (call 430), read 30 October 2026 |
| names.variants.01a16bcb-3fb6-753b-b512-b425f3e91b56.options.Colour | Charcoal | the run’s names — the catalogue (get_record), read 30 October 2026 |
| names.variants.01a16bcb-3fb6-753b-b512-b425f3e91b56.options.size-apparel | L | the run’s names — the catalogue (get_record), read 30 October 2026 |
| names.variants.01a16c27-be7e-7d3b-b59a-40de8d305308.options.Colour | Forest | the run’s names — the catalogue (get_record), read 30 October 2026 |
| names.variants.01a16c27-be7e-7d3b-b59a-40de8d305308.options.size-footwear | 10 | the run’s names — the catalogue (get_record), read 30 October 2026 |
| narrative.assignment | Balance our stores before the weekend. Find what's overstocked in one store and short in another, move it along our usual lanes, and never take a store below its display minimum. Tell me what still needs the supplier. | the narrative’s run — the operator’s session, banked beside the run file |
| narrative.caps.linesPerRequest | 24 | the narrative’s run — the operator’s session, banked beside the run file |
| narrative.followUps.0 | Montreal's weather just turned. Move knitwear there first, and don't take anything out of Yorkville this week. | the narrative’s run — the operator’s session, banked beside the run file |
The tool calls
- whats_next — 1 call
- run_read · me — 1 call
- org_layout — 1 call
- run_read · replenishmentConfigs — 1 call
- run_read · transferLaneRanking — 4 calls
- run_read · rebalanceSuggestions — 44 calls
- report_run · stock_on_hand — 19 calls
- get_record · PhysicalFacilityLocation — 4 calls
- run_read · allocationSuggestions — 2 calls
- get_record · Variant — 186 calls
- get_record · Product — 166 calls
- run_read · styles — 7 calls
- run_read · categories — 1 call
- run_read · transferRequests — 2 calls
- run_write · createTransferRequest — 19 calls
- get_record · OptionGroup — 5 calls
- get_record · OptionValue — 38 calls