Version: eXtendPS-SE 1.4.38 and above
Audience: Administrator, Developer
Problem
When a product part is mapped with the ITEM NAME/NUMBER {itemid} field, the PromoStandards services return a PartId that includes both parent and child item names (format: Parent Item:Child Item). However, the service responses should only include the child item name as the PartId.
Cause
This occurs due to the default behavior of matrix items in NetSuite when using the ITEM NAME/NUMBER field mapping.
Solution
There are three approaches to resolve this issue:
Approach 1: Modify access token user preferences
Best for cases where showing only child items without matrix parent prefix is acceptable:
Go to Home → Set Preferences from the access token user's NetSuite account.
Enable the Only Show Last Subitem preference and save.

Approach 2: Use feed name or web store display name
Recommended when you have unique Web Store Display Names for matrix child items:
- Use
Feed Name {feedname}instead ofITEM NAME/NUMBER {itemid}and specifyITEM NAME/NUMBER {itemid}under Part Search Filters. - Configure the following services:
- Live Inventory Service: Set
feednameas Part Id,itemidas Part Search Filters. - Order Shipment Notification Service: Set
feednameas Supplier Part Id,itemidas Part Search Filters. - Product Data Service: Set
feednameas Product Part Id,itemidas Part Search Filters. - Media Content Service: Set
feednameas Part Id,itemidas Part Search Filters. - Product Pricing and Configuration Service: Set
feednameas Part Id,itemidas Part Search Filters. - Invoice Service: Set
item.feednameas Line Item Part ID.
- Live Inventory Service: Set
Approach 3: Use functional mappings
For cases where other approaches don't work:
- Add required functions to
suite_promoapi_invoice_transformers.js. Example function included below. - Specify
fn:getItemIdWithRemovedColonin PartID fields. - Include
itemidsearch filter. - Configure services as follows:
- Live Inventory Service: Set
fn:getItemIdWithRemovedColonas Part Id,itemidas Part Search Filters. - Order Shipment Notification Service: Set
fn:getItemIdWithRemovedColonas Supplier Part Id,itemidas Part Search Filters. - Product Data Service: Set
fn:getItemIdWithRemovedColonas Product Part Id,itemidas Part Search Filters. - Media Content Service: Set
fn:getItemIdWithRemovedColonas Part Id,itemidas Part Search Filters. - Product Pricing and Configuration Service: Set
fn:getItemIdWithRemovedColonas Part Id,itemidas Part Search Filters.
- Live Inventory Service: Set
/** * @param {Object} args * @property {Object} args.itemSearchResult * @property {Object} args.itemSearchResults * @property {Object} args.partItemSearchResult * @property {Object} args.partItemSearchResults * @property {String} args.fieldId * @property {String} args.joinId */ function getItemIdWithRemovedColon(args) { log.debug({ title: 'getItemIdWithRemovedColon args', details: args }); log.debug({ title: 'getItemIdWithRemovedColon Object.keys(args)', details: Object.keys(args) }); // To use in the Inventory Service 1.2.1 as partId // To use in the Product Data 1.0.0 as product Id // To use in the Product Data 2.0.0 as product Id // To use in the P&C 1.0.0 as product Id // To use in the P&C 1.0.0 as part Id // To use in the Media Content service var itemSearchResult = args.itemSearchResult; var itemSearchResults = args.itemSearchResults; // To use in the Product Data 1.0.0 as part Id // To use in the Product Data 2.0.0 as part Id var partItemSearchResult = args.partItemSearchResult; var partItemSearchResults = args.partItemSearchResults; var itemId = ''; if (partItemSearchResult) { itemId = partItemSearchResult.getValue({ name: 'itemid', join: (args.joinId || '') }) || ''; if (itemId) { itemId = removeColonFromItemId(itemId); } } else if (itemSearchResult) { itemId = itemSearchResult.getValue({ name: 'itemid', join: (args.joinId || '') }) || ''; if (itemId) { itemId = removeColonFromItemId(itemId); } } return itemId; } /** * @desc - To remove the colon from the item id field * @param {String} itemId */ function removeColonFromItemId(itemId) { itemId = (itemId || '').split(":"); itemId = itemId[itemId.length - 1]; if (itemId) { itemId = itemId.trim(); } return itemId; }
- After making any configuration changes, test with sample calls to different PromoStandards services for both matrix and non-matrix items to verify response formats and PartId consistency.