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)