Explanation of error INVENTORY_ABSENT_ORDERLINE

Explanation of error INVENTORY_ABSENT_ORDERLINE

book

Article ID: KB0073727

calendar_today

Updated On:

Products Versions
TIBCO Fulfillment Order Management 4.0.x

Description

When "Enable Offer Validation" is enabled (by setting "com.tibco.af.oms.enableOfferValidation" to true in ConfigValue_OMS.xml), it is possible that the validation fails with errors "INVALID_PRODUCT_IN_ORDER" and "INVENTORY_ABSENT_ORDERLINE" even if the product is a valid model, see error in log sample below:

-----------------------------------------
15 May 2020 14:55:17,673  INFO [] [] [FOM-OrderService] [com.tibco.aff.oms.service.soap.SOAPActionValidationInterceptor] [handleMessage] - [ThreadID:196] [Tenant ID:TIBCO] RequestAction : SubmitOrderRequest . Actual SOAPAction : http://www.tibco.com/aff/service/soap/SubmitOrder. Expected SOAPAction http://www.tibco.com/aff/service/soap/SubmitOrder OR http://www.tibco.com/aff/service/soap/SyncSubmitOrder
15 May 2020 14:55:17,674  INFO [] [Aook-123] [Member1] [com.tibco.aff.oms.server.soap.OrderServiceEndPoint] [submitOrder] - [ThreadID:196] [Tenant ID:TIBCO] Received Order request with Ref Aook-123
15 May 2020 14:55:17,692  INFO [51f0326222d7469d8b03e6e1efb0e674] [] [Member1] [com.tibco.aff.ope.service.impl.OfferPriceServiceImpl] [validateOffer] - [ThreadID:194] [Tenant ID:TIBCO] [Business Transaction ID:51f0326222d7469d8b03e6e1efb0e674] Received validateOffer request
15 May 2020 14:55:17,692  INFO [51f0326222d7469d8b03e6e1efb0e674] [] [Member1] [com.tibco.aff.ope.engine.OPERuleExecutionController] [publishValidationEvent] - [ThreadID:194] [Tenant ID:TIBCO] [Business Transaction ID:51f0326222d7469d8b03e6e1efb0e674] Entering Method publishValidationEvent
15 May 2020 14:55:17,692  INFO [51f0326222d7469d8b03e6e1efb0e674] [] [] [com.tibco.aff.eca.base.EDSEventPublisher] [publishSynchronousEvent] - publishing synchronous event offerValidation
15 May 2020 14:55:17,692  INFO [51f0326222d7469d8b03e6e1efb0e674] [] [] [com.tibco.aff.eca.base.EDSEventPublisher] [publishSynchronousEvent] - Publishing Event ======>direct:offerValidation
15 May 2020 14:55:17,693  INFO [51f0326222d7469d8b03e6e1efb0e674] [] [] [com.tibco.aff.eca.base.ECARuleProcessor] [process] - Started executing the action for ruleName: offerValidationRule , externalRuleName: null
15 May 2020 14:55:17,693  INFO [51f0326222d7469d8b03e6e1efb0e674] [] [Member1] [com.tibco.aff.ope.engine.OPERuleExecutionController] [publishValidationEvent] - [ThreadID:194] [Tenant ID:TIBCO] [Business Transaction ID:51f0326222d7469d8b03e6e1efb0e674] Exiting Method publishValidationEvent
15 May 2020 14:55:17,693 ERROR [51f0326222d7469d8b03e6e1efb0e674] [] [Member1] [com.tibco.aff.ope.engine.OPERuleExecutionController] [validateOffer] - [ThreadID:194] [Tenant ID:TIBCO] [Business Transaction ID:51f0326222d7469d8b03e6e1efb0e674] Exception while validating offer for offer id [null] .  Error Message [TIBCO-AFF-AOPD-100006] - Invalid Product(s) [PR_A] in order : com.tibco.aff.ope.exception.InvalidProductsException: INVALID_PRODUCT_IN_ORDER
        at com.tibco.aff.ope.rule.action.BasicOfferValidation.execute(BasicOfferValidation.java:98)
        at com.tibco.aff.ope.rule.action.AbstractRuleAction.execute(AbstractRuleAction.java:15)
        at com.tibco.aff.eca.base.ActionBean.execute(ActionBean.java:56)
        at com.tibco.aff.eca.base.ECASequencedRuleProcessor.process(ECASequencedRuleProcessor.java:124)
        at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:103)
        at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
        at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:541)
        at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:120)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)
        at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
        at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62)
        at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
        at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97)
        at org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:529)
        at org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:497)
        at org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:365)
        at org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:497)
        at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:242)
        at org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:148)
        at org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:156)
        at org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:173)
        at com.tibco.aff.eca.base.EDSEventPublisher.publishSynchronousEvent(EDSEventPublisher.java:45)
        at com.tibco.aff.ope.engine.OPERuleExecutionController.publishValidationEvent(OPERuleExecutionController.java:918)
        at com.tibco.aff.ope.engine.OPERuleExecutionController.validateOffer(OPERuleExecutionController.java:395)
        at com.tibco.aff.ope.service.impl.OfferPriceServiceImpl.validateOffer(OfferPriceServiceImpl.java:101)
        at com.tibco.aff.ope.service.soap.OPEServiceEndPoint.validateOffer(OPEServiceEndPoint.java:33)
        at sun.reflect.GeneratedMethodAccessor1591.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:483)
        at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:179)
        at org.apache.cxf.jaxws.JAXWSMethodInvoker.performInvocation(JAXWSMethodInvoker.java:66)
        at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
        at org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.invoke(AbstractJAXWSMethodInvoker.java:232)
        at org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:85)
        at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:74)
        at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at org.apache.cxf.interceptor.ServiceInvokerInterceptor$2.run(ServiceInvokerInterceptor.java:126)
        at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
        at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:131)
        at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
        at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
        at org.apache.cxf.transport.jms.JMSDestination.onMessage(JMSDestination.java:254)
        at org.apache.cxf.transport.jms.util.PollingMessageListenerContainer$Poller.run(PollingMessageListenerContainer.java:84)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

15 May 2020 14:55:17,702 ERROR [] [Aook-123] [Member1] [com.tibco.aff.oms.server.impl.OrderServiceImpl] [checkOfferValidation] - [ThreadID:196] [Tenant ID:TIBCO] TIBCO-AFF-OPE-100003
15 May 2020 14:55:17,730 ERROR [] [Aook-123] [Member1] [com.tibco.aff.oms.server.soap.OrderServiceEndPoint] [logExceptionAndGetResultFaultException] - [ThreadID:196] [Tenant ID:TIBCO] [Context Info] Error processing Request
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><ns3:SubmitOrderRequest ExternalBusinessTransactionID="0115" xmlns="http://www.tibco.com/aff/order" xmlns:ns2="http://www.tibco.com/aff/commontypes" xmlns:ns3="http://www.tibco.com/aff/orderservice"><ns3:orderRequest><orderRef>Aook-123</orderRef><header><customerID>TIBCO</customerID></header><line><lineNumber>1</lineNumber><subscriberID>1234567</subscriberID><productID>PR_A</productID><quantity>1</quantity><uom>UOM</uom><action>CEASE</action></line></ns3:orderRequest></ns3:SubmitOrderRequest>
15 May 2020 14:55:17,730 ERROR [] [Aook-123] [Member1] [com.tibco.aff.oms.server.soap.OrderServiceEndPoint] [logExceptionAndGetResultFaultException] - [ThreadID:196] [Tenant ID:TIBCO] INVENTORY_ABSENT_ORDERLINE
----------------------------------

Issue/Introduction

This article explains the circumstances of error INVENTORY_ABSENT_ORDERLINE and how to remediate.

Resolution

The issue happens because the order request does not have an inventoryID tag in the order.

To fix this issue, you will have to add an inventoryID tag in your orderLine such that in your example, it looks like:

---------------
<ord1:line>
<ord1:lineNumber>1</ord1:lineNumber>
<ord1:subscriberID>1234567</ord1:subscriberID>
<ord1:productID>PR_A</ord1:productID>
<ord1:quantity>1</ord1:quantity>
<ord1:uom>UOM</ord1:uom>
<ord1:action>CEASE</ord1:action>
<ord1:inventoryID>1</ord1:inventoryID>
</ord1:line>

---------------

When the inventoryID is not present in the order, the validation fails and the error message from the logs is thrown.