Personalisation BoM
Use a Personalisation BoM when you want to capture customer instructions that travel with an order to a fulfilment partner, for example embroidery text, a monogram, or a chosen thread colour, without holding a stocked SKU for every possible combination.
On the standard Item Card, run Define Personalisation BoM. This opens the Personalisation BoM card (creating one automatically for this Item if it does not exist yet).
- Optionally scope it to a Variant Code; leave blank to apply to every variant of the Item.
- Set Active; turn off to retire a BoM without losing its setup.
- On the Components subform, add a line per instruction to capture:
- Non-stock Item No.: must be a Non-Inventory or Service type Item, so capturing it on a Sales Order never creates an Item Ledger Entry.
- Description: the prompt shown to whoever is taking the order, for example "Choose thread colour."
- Personalisation Type: Thread Colour, Text, Monogram, or Other.
- Required: whether a value must be captured before the order can be released.
- Allowed Values: a comma-separated fixed list, or leave blank to allow free text up to Max Length.
How it flows on a Sales Order
Adding a Sales Line for an Item with an Active Personalisation BoM automatically inserts one extra line per component underneath it, each pointing at that component's non-stock Item. The salesperson types the actual instruction into that sub-line's Personalisation Value field. A value is checked against Max Length and Allowed Values as soon as it is typed. At Release Sales Document time, if any component marked Required still has a blank value, release is blocked: "Personalisation component 'X' is required but no value was captured." Changing the parent line's Quantity automatically syncs onto every personalisation sub-line; deleting the parent line deletes its sub-lines too.
Mapping the outbound payload
From Apparel PIM Setup, run Personalisation Payload Mapping. For each of the three properties (Type, Non-stock Item, Value), set a Partner Field Name (the field name your fulfilment partner's contract expects) and an optional Group Name (to nest properties under one sub-object), and toggle Enabled to include or omit that property from the payload. Leaving this table empty entirely falls back to a sensible default flat shape, so a tenant with no specific partner contract still gets usable output. The app builds this payload; sending it over the wire to an actual partner is handled by a separate connector.