(Photo: El Alma del Ebro by Paulo Brandão)
Recently I was creating some SKU and product items using the ACC and I decided to create them with custom ID’s. The items were created fine but then I discovered I couldn’t add these items to the cart, I couldn’t use them in promotions, I couldn’t set up inventory for them, etc. I continually got exceptions like these.
/atg/commerce/order/OrderManager --- CONTAINER:atg.service.pipeline.RunProcessException: An exception was thrown from the context of the link named [setCatalogRefs].; SOURCE:atg.commerce.CommerceException: Unable to retrieve catalog reference for item with id ci90000002 and catalogRefId sku_free_01. /atg/commerce/order/OrderManager at atg.service.pipeline.PipelineChain.runProcess(PipelineChain.java:371) /atg/commerce/order/OrderManager at atg.service.pipeline.PipelineChainContext.runProcess(PipelineChainContext.java:185) /atg/commerce/order/OrderManager at atg.service.pipeline.PipelineManager.runProcess(PipelineManager.java:453) /atg/commerce/order/OrderManager at atg.commerce.order.OrderImpl.ensureContainers(OrderImpl.java:1261) /atg/commerce/order/OrderManager at atg.commerce.order.OrderImpl.getCommerceItems(OrderImpl.java:691) /atg/commerce/order/OrderManager ....stack trace CROPPED /atg/commerce/order/OrderManager Caused by :atg.commerce.CommerceException: Unable to retrieve catalog reference for item with id ci90000002 and catalogRefId sku_free_01. /atg/commerce/order/OrderManager at atg.commerce.order.processor.ProcSetCatalogRefs.loadCatalogRef(ProcSetCatalogRefs.java:267) /atg/commerce/order/OrderManager at atg.commerce.order.processor.ProcSetCatalogRefs.runProcess(ProcSetCatalogRefs.java:121) /atg/commerce/order/OrderManager at atg.service.pipeline.PipelineLink.runProcess(PipelineLink.java:233) /atg/commerce/order/OrderManager at atg.service.pipeline.PipelineChain.runProcess(PipelineChain.java:343) /atg/commerce/order/OrderManager at atg.service.pipeline.PipelineChainContext.runProcess(PipelineChainContext.java:185) /atg/commerce/order/OrderManager at atg.service.pipeline.PipelineManager.runProcess(PipelineManager.java:453) /atg/commerce/order/OrderManager at atg.commerce.order.OrderImpl.ensureContainers(OrderImpl.java:1261) /atg/commerce/order/OrderManager at atg.commerce.order.OrderImpl.getCommerceItems(OrderImpl.java:691) /atg/commerce/order/OrderManager ....stack trace CROPPED after 10 lines.
After pulling out my hair out for a few hours I realized the problem was because I had accidentally put a space at the end of the custom ID I had created. Too bad you can’t determine that from the stack trace.
Lesson Learned #1: Don’t put spaces in your custom ID’s, especially at the end.
Lesson Learned #2: Custom ID’s are a luxury you might want to avoid. 🙂