NCR Counterpoint to iPaaS.com Product Category Assignment Mapping Documentation
Summary
This mapping collection brings product category assignments from NCR Counterpoint into iPaaS.com. An assignment is the link that places a product in an ecommerce category. It has no name, description, or record of its own — it is entirely defined by the two records it joins, so this collection carries just those two references: the product being assigned, and the category it is assigned to.
Deleted Record Support
Deletions are carried by the Delete NCR Counterpoint Product Category Assignment TO iPaaS.com collection: when the record is removed in Counterpoint, that collection sends the removal to iPaaS.com. Whether the removal transfers automatically depends on the delete trigger event being available; where it is not, the collection runs through Manual Sync. See NCR Counterpoint Known Limitations.
Mapping Collection Status
Status: Enabled. A mapping filter is applied, which narrows which assignments transfer.
Trigger Events: see Transfer Methods in the collection description; automatic transfers require the relevant Outbound/Inbound Data Flow subscriptions to be enabled.
Duplicate or Conflicting Mappings
Delete NCR Counterpoint Product Category Assignment TO iPaaS.com: removes an assignment that this collection has already created. It operates on the same entity and shares the same registered trigger set.
Important: these two collections are complementary rather than alternatives, and are normally enabled together — one puts an assignment in place, the other takes it away. Subscribers or their MiSP should review both collections' filters before enabling either, and should treat NCR Counterpoint as the source of truth for category membership if products are also categorized directly in another connected system.
System Caveats
iPaaS.com Caveats
An assignment cannot exist without both sides: iPaaS.com holds an assignment purely as a link between an existing product and an existing category. There is no partial or pending form of the record for it to fall back to.
Integration Flow
No records are transferred as prerequisites for this collection. The records it references are expected to exist already.
The record is sent to iPaaS.com, where subsequent transfers are routed by the external ID recorded on transfer.
Mappings
Add/Update NCR Counterpoint Product Category Assignment TO iPaaS.com
Mapping Filter
var value1 = await GetSpaceportIdAsync(ITEM_NO, "Product", SpaceportSystemId);
var value2 = await GetSpaceportIdAsync(CATEG_ID, "Product Category", SpaceportSystemId);
if(value1 != null && value2 != null){return true;} else {return false;}
Filter Description.
The filter looks the product up by its Counterpoint item number and the category up by its Counterpoint category id, and allows the assignment through only when both lookups return a match in iPaaS.com. If either side is missing, the filter returns false and the assignment is skipped rather than failed.
Subscribers or their MiSP who remove or weaken this filter lose that protection. The two field formulas would then resolve to empty for a product or category that has not transferred, and iPaaS.com would reject the assignment outright instead of skipping it.
Mapping Type | Source Field (NCR Counterpoint) | Destination Field (iPaaS.com) | Description |
Dynamic Formula |
| InternalId | Required. IPaaS.com rejects the assignment without it, and the value must be greater than zero. |
Dynamic Formula |
| CategoryId | Required. IPaaS.com rejects the assignment without it, and the value must identify a category that exists in iPaaS.com. |
InternalId — Dynamic Formula
Source: return await GetSpaceportIdAsync(ITEM_NO, "Product", SpaceportSystemId); · Destination: InternalId
This is a required field — iPaaS.com rejects the assignment without it, and the value must be greater than zero. Identifies the product being assigned. The formula takes the Counterpoint item number and looks up the matching product already transferred into iPaaS.com, returning that product's iPaaS.com id.
An assignment records a link rather than a record of its own, so this field and CategoryId together are the whole of it — there is no name or description to carry.
The filter on this collection has already confirmed the product exists before this formula runs, so in normal operation the lookup resolves. Subscribers who remove or weaken that filter lose that guarantee: the formula would then resolve to empty for a product that has not transferred, and iPaaS.com would reject the assignment instead of skipping it.
CategoryId — Dynamic Formula
Source: return await GetSpaceportIdAsync(CATEG_ID, "Product Category", SpaceportSystemId); · Destination: CategoryId
This is a required field — iPaaS.com rejects the assignment without it, and the value must identify a category that exists in iPaaS.com. Identifies the category the product is being assigned to. The formula takes the Counterpoint category id and looks up the matching category already transferred into iPaaS.com, returning that category's iPaaS.com id.
As with InternalId, the filter on this collection has already confirmed the category exists before this formula runs. Subscribers who remove or weaken that filter would see iPaaS.com reject assignments whose category has not yet transferred, rather than skip them.
Delete NCR Counterpoint Product Category Assignment TO iPaaS.com
Mapping Filter
var idDictionary = JSONToDictionary(Convert.ToString(TransferWebhookExternalId));
string ITEM_NO = idDictionary["ITEM_NO"];
string CATEG_ID = idDictionary["CATEG_ID"];
var value1 = await GetSpaceportIdAsync(ITEM_NO, "Product", SpaceportSystemId);
var value2 = await GetSpaceportIdAsync(CATEG_ID, "Product Category", SpaceportSystemId);
if(value1 != null && value2 != null){return true;} else {return false;}
Filter Description.
The filter reads the identifying values carried on the delete notification, which arrive together as a single structured value holding both the Counterpoint item number and the Counterpoint category id, and unpacks them. It then looks the product up by the item number and the category up by the category id, and allows the delete through only when both lookups return a match in iPaaS.com. If either side is missing, the delete is skipped rather than failed — there is nothing in iPaaS.com for it to act on.
Subscribers or their MiSP who remove or weaken this filter lose that protection, and deletes naming a product or category that iPaaS.com does not hold would be attempted rather than skipped.
Mapping Type | Source Field (NCR Counterpoint) | Destination Field (iPaaS.com) | Description |
Dynamic Formula |
| InternalId | Required. The delete cannot be applied without it. |
Dynamic Formula |
| CategoryId | Required. The delete cannot be applied without it. |
InternalId — Dynamic Formula
Source:
var idDictionary = JSONToDictionary(Convert.ToString(TransferWebhookExternalId)); string ITEM_NO = idDictionary["ITEM_NO"]; return await GetSpaceportIdAsync(ITEM_NO, "Product", SpaceportSystemId);
Destination: InternalId
This is a required field — the delete cannot be applied without it. Identifies the product whose category assignment is being removed.
This collection is unusual among the delete collections in this integration in carrying mappings at all. Most delete collections need none, because the record being removed has a single id that iPaaS.com can match on its own. A category assignment has no id of its own — it is identified only by the pair of records it links — so the delete has to name both sides, and that is what these two mappings do.
The formula reads the identifying values carried on the delete notification, takes the Counterpoint item number from them, and looks up the matching product already transferred into iPaaS.com. The values arrive together as a single structured value rather than as separate fields, which is why the formula unpacks them before using the item number.
The filter on this collection has already confirmed the product exists before this formula runs. Subscribers or their MiSP should leave both this mapping and CategoryId in place — a delete missing either side does not identify an assignment.
CategoryId — Dynamic Formula
Source:
var idDictionary = JSONToDictionary(Convert.ToString(TransferWebhookExternalId)); string CATEG_ID = idDictionary["CATEG_ID"]; return await GetSpaceportIdAsync(CATEG_ID, "Product Category", SpaceportSystemId);
Destination: CategoryId
This is a required field — the delete cannot be applied without it. Identifies the category the product is being removed from.
The formula works the same way as InternalId: it reads the identifying values carried on the delete notification, takes the Counterpoint category id from them, and looks up the matching category already transferred into iPaaS.com.
Because a product may be assigned to several categories, this field is what confines the delete to the one assignment that was removed in Counterpoint. The product's other category assignments are untouched.
Error Handling
Errors raised while transferring these records surface at Dashboard / Integration Monitoring / Error Logs. The specific messages, their causes and their resolutions are documented in NCR Counterpoint Error Messages. A record stopped by an error is not retried automatically; it must be resolved manually.
Testing & Validation
Replace every placeholder value called out above with one from the target Counterpoint installation, and confirm each exists in Counterpoint.
Transfer a single record through Manual Sync and confirm it appears in Counterpoint as expected.
Confirm any child records transferred with the parent.
Enable the relevant triggers and confirm a new record transfers automatically, and that a change updates the same Counterpoint record rather than creating a second one.
Attempt a transfer with a missing required field and confirm the expected error appears at Dashboard / Integration Monitoring / Error Logs.
Additional Notes
Skipped assignments are not reported: at the time this documentation was written, an assignment held back by the filter because its product or category has not transferred is skipped silently. Nothing is raised against it at Dashboard / Integration Monitoring / Error Logs, because a filter returning false is not an error. Subscribers or their MiSP who expect an assignment that has not appeared should check that both the product and the category transferred first.
No automatic retry or backfill: at the time this documentation was written, the integration does not retry a skipped assignment later, and transferring the missing product or category afterwards does not backfill the assignments that were skipped while it was absent. Those assignments have to be re-run.
These and other runtime behaviors are documented in NCR Counterpoint Known Limitations.
Related Documents
NCR Counterpoint Connections and Settings: the credentials and subscription settings that connect iPaaS.com to Counterpoint.
NCR Counterpoint Installation Instructions: installing CPHive and CPWebhooks on the Counterpoint server.
NCR Counterpoint Known Limitations: what the integration does not do, and the values to replace before go-live.
NCR Counterpoint Error Messages: the errors a transfer can raise, what causes them, and how to resolve them.
NCR Counterpoint API Endpoints: the CPHive endpoints the integration calls.
