CSV Multi Order Single Workflow

Layout 1:1 from NimmstaLayout-XML (device pxx=200, pxy=200) · Single order: Trolley → HU/Position assign → Pick by storage → Inventory optional → Quantity/Part-Qty → Scan Storage → Completion

Main flow
REST API endpoints are documented step by step below the diagram — not on the device mockups.
Load Step (Initial)
Loading Data
onSuccess → Trolly Step · onError/empty → NoOpenOrders
Trolly Step
OPTION
Scan Picking Trolley
Scan trolley → Set HU Step · OPTION → Options Trolly Step
Set HU Step
Set HUs
Done
0
BOX S
0
BOX M
0
BOX L
Done → HU ID Step (currentPos=1)
HU ID Step
OPTION
Assign HUs
Scan HU
POS 1
Scan HU → Trolly Place ID · onAppear all POS set → Prepare Storage · OPTION → Options HU ID
Trolly Place ID Step
OPTION
Assign HUs
Scan POS 1
Scan position → Check Trolly Place ID · OPTION → Options Trolly Box Step
Check Trolly Place ID all trolly_place_ID set → Prepare Storage · else → HU ID Step
Prepare Storage Step all check → Completion · else → Storage Step
Storage Step
OPTION
Scan
Storage
3.8
Article Info
Haribo
Scan storage_scan + stock≥1 → Inventory · scan storage_scan → Quantity Confirm · wrong → negative · OPTION → Options Storage Step1
Inventory Step
OPTION
Quantity before pick
0 Stk.
Yes
No
Yes → Quantity Confirm · No → Inventory Count · OPTION → Options Inventory
Inventory Count Step
OPTION
0 Stk.
-1
+1
ENTER
-1/+1 → stay · ENTER → Quantity Confirm or next Storage · OPTION → Options Inventory Count
Quantity Confirm Step
OPTION
Fanta
Quantity
5
Scan Position
POS-1
Scan trolly_place_ID: last → Prepare · more → Scan Storage Step · wrong → negative · OPTION → Options Quantity Confirm
Scan Storage Step
OPTION
Scan
Storage
3.9
Article Info
Coca Cola
Scan storage → Part_Quantity Confirm · wrong → negative · OPTION → Options Scan Storage
Part_Quantity Confirm Step
OPTION
Coca Cola
Quantity
6
Scan Position
BOX POS-2
Scan position: last → Prepare · more → Scan Storage Step · wrong → negative · OPTION → Options Part_Quantity
Completion Step
Job Done
Save
Save → api.workflow.done() · onTrigger → done
Alternative entry (Load Job for Pre Picking Box Step)
Load Job for Pre Picking Box Step openJobs > 0 → Trolly Step · openJobs == 0 → Start Step
Start Step
OPTION
1 order(s)
open_jobs → Trolly Step · OPTION → Options Start Step
Branch: NoOpenOrders (when load fails or no results)
NoOpenOrders
No open orders
Main Menu
Reload
Main Menu → stop · Reload → cancel · onAppear 25s → cancel
Options menus (via OPTION button)
Options Start Step
BACK
No option available
Back
BACK / Back → Start Step
Options Trolly Step
BACK
No Trolley
BACK → Trolly · No Trolley → Set HU Step (box counts)
Options HU ID Step
BACK
Back
BACK / Back → HU ID Step
Options Storage Step
BACK
Back
BACK / Back → Storage Step
Options Picking Box Step
BACK
No picking box
BACK → Picking Box Step · No picking box → Storage Step
Options Storage Step1
BACK
Confirm Storage
Stop Working
Confirm Storage → Quantity Confirm · Stop → stop · next → Step2 · BACK → Storage
Options Storage Step2
Back
Art. skipped
Order skipped
PAGE 1
PAGE 2
Skip article → Storage or Completion · Skip order → Completion · PAGE 1 → Step1 · Back → Storage
Options Storage last item
Back
Vorheriger Artikel:
3.8
5 / 5
Haribo
Back → Options Storage Step2
Options Picking Step
BACK
Art. skipped
Order skipped
Skip article → Storage or Completion · Skip order → Completion · Back → Picking Step
Options Quantity Confirm Step
Back
Stop Working
Stop → stop · Back → Quantity Confirm
Options Part_Quantity Confirm Step
Back
No picking box
Back / No picking box → Part_Quantity Confirm
Options Inventory Count Step
Back
Inv. skipped
Skip inventory → Completion or Storage · Back → Inventory Count
Options Inventory Step
BACK
SKIP INVENTORY
INSERT QUANTITY
Back
Skip → Completion/Storage · Insert quantity → Inventory Count · Back → Inventory Step
Flow overview
Start: Load Step (get-job) → init trolly_ID/HU_ID/trolly_place_ID → Trolly Step (or NoOpenOrders if empty). Alternative: Load Job for Pre Picking Box Step → openJobs>0 → Trolly; else → Start Step (open_jobs → Trolly).
Trolley & HUs: Scan trolley → Set HU Step (box counts S/M/L) → Done → HU ID Step. Scan one HU per job_customer → Trolly Place ID Step. Scan one position per job_customer → Check Trolly Place ID (router). If all positions set → Prepare Storage; else → back to HU ID Step.
Picking: Prepare Storage (router): all check → Completion; else first uncompleted → Storage Step (storage + article). Scan storage_scan: match + stock≥1 → Inventory Step (Yes/No); match → Quantity Confirm; wrong → negative_feedback.
Inventory: Yes → Quantity Confirm. No → Inventory Count (-1/+1, ENTER) → Quantity Confirm or next Storage.
Quantity confirm: Scan trolly_place_ID: last article at location → Prepare Storage; more articles → Scan Storage Step (scan storage again → Part_Quantity Confirm). Wrong scan → negative_feedback.
Scan Storage Step: Shown after Quantity Confirm when more articles at same location; scan storage → Part_Quantity Confirm.
Part_Quantity Confirm: Scan position: last → Prepare; more → Scan Storage Step. Wrong → negative.
Completion: Prepare when all check → Completion Step. Save → api.workflow.done().
Options (OPTION): From any step: BACK to previous or Stop Working / Skip article / Skip order / Confirm Storage / No Trolley (→ Set HU) etc. as per each Options step.

REST API — Step by Step

Each card = one workflow step. Endpoints are listed one after another. Configure as HTTP Data Connection identifiers in Productivity Cloud.

Main flow

1 Load Step (Initial)
GET get-job Load open picking job and all pick lines
2 Trolly Step
POST assign-trolley Register trolley ID for multi-order picking
3 HU ID Step
POST assign-hu Assign handling unit to trolley / order
4 Trolly Place ID Step
POST assign-trolley-place Assign pick target position on trolley
5 Prepare Storage Step
GET get-pick-line Load current line: storage, quantity, article, stock
POST complete-job Close picking job and send results to ERP
6 Storage Step
GET get-pick-line Load current line: storage, quantity, article, stock
GET validate-storage Validate storage location barcode
7 Scan Storage Step
GET get-pick-line Load current line: storage, quantity, article, stock
GET validate-storage Validate storage location barcode
8 Quantity Confirm Step
GET get-pick-line Load current line: storage, quantity, article, stock
PATCH confirm-pick-to-place Confirm pick and assign to trolley place
POST report-short-pick Report partial pick / shortage quantity
9 Part_Quantity Confirm Step
GET get-pick-line Load current line: storage, quantity, article, stock
PATCH confirm-pick-to-place Confirm pick and assign to trolley place
POST report-short-pick Report partial pick / shortage quantity
10 Inventory Step
GET get-pick-line Load current line: storage, quantity, article, stock
GET get-stock Read on-hand stock after pick (inventory prompt)
11 Inventory Count Step
GET get-pick-line Load current line: storage, quantity, article, stock
GET get-stock Read on-hand stock after pick (inventory prompt)
PATCH update-stock-count Submit corrected stock count after inventory
12 Completion Step
POST complete-job Close picking job and send results to ERP

Alternative entry & branches

13 Load Job for Pre Picking Box Step
GET get-job Load open picking job and all pick lines
14 NoOpenOrders
GET get-job Load open picking job and all pick lines

Options menu

15 Options Trolly Step
POST assign-trolley Register trolley ID for multi-order picking
16 Options HU ID Step
POST assign-hu Assign handling unit to trolley / order
17 Options Storage Step
POST confirm-without-scan Confirm article without barcode scan
18 Options Picking Box Step
GET/POST validate-picking-box Validate scanned picking container barcode
POST assign-picking-box Assign container to order / pick job
19 Options Storage Step1
POST confirm-without-scan Confirm article without barcode scan
20 Options Storage Step2
POST skip-article Skip current article, move to next line
POST skip-order Skip entire order in multi-order job
21 Options Picking Step
POST skip-article Skip current article, move to next line
POST skip-order Skip entire order in multi-order job
22 Options Quantity Confirm Step
POST skip-article Skip current article, move to next line
POST skip-order Skip entire order in multi-order job
23 Options Part_Quantity Confirm Step
POST skip-article Skip current article, move to next line
POST skip-order Skip entire order in multi-order job
24 Options Inventory Step
PATCH update-stock-count Submit corrected stock count after inventory
25 Options Inventory Count Step
PATCH update-stock-count Submit corrected stock count after inventory

Technical Reference — CSV Multi Order Single

Single order with trolley and HU assignment. See the step-by-step section above for which endpoint belongs to which workflow step.

1 · HTTP Data Connection setup

Connection type
HTTP Data Connection
Identifier
e.g. erp-system — referenced as dataConnection in the workflow
Base URL
Customer web service URL (HTTPS)
Authentication
None, Basic, Bearer, or OAuth
Endpoint identifier
Unique name per operation (must match step cards above)
Endpoint URL
Relative path, e.g. /orders/{orderId}/lines/{lineId}
Pre / post processing
Transform request and map response to NIMMSTA job format
requestOverride
Workflow can override body, headers, params, query (JavaScript)
Async rules: await works in loadData pre/post processing, onStopJobCode, and api.workflow.runActionCodeAsync(...). Step handlers (onScan, onButtonPress) are synchronous — use a loading step or workflow actions for API calls.

2 · Workflow integration patterns

loadData (Load Step)
"loadData": {
  "endpoint": "get-job",
  "dataConnection": "erp-system",
  "preProcessCode": "workflowStep.lastError = null; return request;",
  "postProcessCode": "return response.data;",
  "onSuccess": [{ "code": "job = setJob(response); ..." }]
}
Async action (confirm / complete)
"actions": [{
  "code": "api.workflow.runActionCodeAsync('confirmPickLine')
    .then(() => { ... })
    .catch((e) => { workflowStep.lastError = e; });"
}]

3 · Job object (get-jobsetJob)

{ "name": "Order or batch name", "results": [ { /* fields below */ } ] }
Field in job.results[]Description
job_customerCustomer / sub-order
trolly_ID / HU_ID / trolly_place_IDTrolley logistics
storage / storage_scanStorage location
required_quantity / stockQuantity / stock
scannedArticles / checkPicking progress

4 · Request / response examples

assign-hu
POST /picking/handling-units
{ "orderId": "AU-1001", "huBarcode": "HU-S-001", "trolleyId": "TW-9988" }

Coordinates 1:1 from NimmstaLayout (device pxx=200, pxy=200). CSV Multi Order Single workflow (PoVTemplates/CSV Multi Order Single.json).