8 Replies Latest reply: May 3, 2013 8:51 AM by Anuj Dwivedi--Oracle RSS

    EDI Document Retry - Document protocol identification Error

    user1715764
      Hello Team,

      We are doing an outbound SOA 11G EDI transaction with Document Retry Interval set , so if any Functional Ack is not received , it will resend the document.
      Once we send the outbound EDI , message is in state MSG_WAIT_FA . After the document retry interval , it again tries to send the document but fails with document protocol error .
      Before throwing "Document protocol identification Error" , it throws "Invalid data source, reason: The size of the blob must be greater than zero".

      Stack trace:

      com.edifecs.xengine.XEException: Invalid data source, reason: The size of the blob must be greater than zero.[[
      at com.edifecs.xengine.xeobjects.XEHelper.createSourceFromBLOBNative(Native Method)
      at com.edifecs.xengine.xeobjects.XEHelper.createSourceFromBLOB(Unknown Source)
      at oracle.tip.b2b.document.edi.EDIDocumentPlugin.identifyIncomingDocument(EDIDocumentPlugin.java:577)
      at oracle.tip.b2b.engine.Engine.identifyDocument(Engine.java:4804)
      at oracle.tip.b2b.engine.Engine.processIncomingMessageImpl(Engine.java:2224)
      at oracle.tip.b2b.engine.Engine.processIncomingMessage(Engine.java:1650)
      at oracle.tip.b2b.msgproc.Request.postTransmit(Request.java:2731)
      at oracle.tip.b2b.msgproc.Request.requestRetry(Request.java:3438)
      at oracle.tip.b2b.engine.Engine.messageRetry(Engine.java:4424)
      at oracle.tip.b2b.engine.Engine.handleTimeoutEvent(Engine.java:4071)
      at oracle.tip.b2b.engine.Engine.processEvents(Engine.java:3208)
      at oracle.tip.b2b.scheduler.TimeoutEventHandler.execute(TimeoutEventHandler.java:108)
      at oracle.integration.platform.blocks.scheduler.ScheduledJob.execute(ScheduledJob.java:163)
      at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
      at oracle.integration.platform.blocks.executor.WorkManagerExecutor$1.run(WorkManagerExecutor.java:120)
      at weblogic.work.j2ee.J2EEWorkManager$WorkWithListener.run(J2EEWorkManager.java:183)
      at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
      at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
      com.edifecs.xengine.XEException: Invalid data source, reason: The size of the blob must be greater than zero.
      at com.edifecs.xengine.xeobjects.XEHelper.createSourceFromBLOBNative(Native Method)
      at com.edifecs.xengine.xeobjects.XEHelper.createSourceFromBLOB(Unknown Source)
      at oracle.tip.b2b.document.edi.EDIDocumentPlugin.identifyIncomingDocument(EDIDocumentPlugin.java:577)
      at oracle.tip.b2b.engine.Engine.identifyDocument(Engine.java:4804)
      at oracle.tip.b2b.engine.Engine.processIncomingMessageImpl(Engine.java:2224)
      at oracle.tip.b2b.engine.Engine.processIncomingMessage(Engine.java:1650)
      at oracle.tip.b2b.msgproc.Request.postTransmit(Request.java:2731)
      at oracle.tip.b2b.msgproc.Request.requestRetry(Request.java:3438)
      at oracle.tip.b2b.engine.Engine.messageRetry(Engine.java:4424)
      at oracle.tip.b2b.engine.Engine.handleTimeoutEvent(Engine.java:4071)
      at oracle.tip.b2b.engine.Engine.processEvents(Engine.java:3208)
      at oracle.tip.b2b.scheduler.TimeoutEventHandler.execute(TimeoutEventHandler.java:108)
      at oracle.integration.platform.blocks.scheduler.ScheduledJob.execute(ScheduledJob.java:163)
      at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
      at oracle.integration.platform.blocks.executor.WorkManagerExecutor$1.run(WorkManagerExecutor.java:120)
      at weblogic.work.j2ee.J2EEWorkManager$WorkWithListener.run(J2EEWorkManager.java:183)
      at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
      at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)

      ]]
      [2013-04-23T16:43:37.730-07:00] [soa_server1] [ERROR] [] [oracle.soa.b2b.engine] [tid: [ACTIVE].ExecuteThread: '20' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: 0000JstGL1D8_qL5qRO5yY1HTlfk000002,1:21124] [APP: soa-infra] [component_instance_id: 350018] Error -: B2B-50083: Document protocol identification error.[[
      Error -: B2B-50083: Document protocol identification error.
      at oracle.tip.b2b.engine.Engine.identifyDocument(Engine.java:4826)
      at oracle.tip.b2b.engine.Engine.processIncomingMessageImpl(Engine.java:2224)
      at oracle.tip.b2b.engine.Engine.processIncomingMessage(Engine.java:1650)
      at oracle.tip.b2b.msgproc.Request.postTransmit(Request.java:2731)
      at oracle.tip.b2b.msgproc.Request.requestRetry(Request.java:3438)
      at oracle.tip.b2b.engine.Engine.messageRetry(Engine.java:4424)
      at oracle.tip.b2b.engine.Engine.handleTimeoutEvent(Engine.java:4071)
      at oracle.tip.b2b.engine.Engine.processEvents(Engine.java:3208)
      at oracle.tip.b2b.scheduler.TimeoutEventHandler.execute(TimeoutEventHandler.java:108)
      at oracle.integration.platform.blocks.scheduler.ScheduledJob.execute(ScheduledJob.java:163)
      at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
      at oracle.integration.platform.blocks.executor.WorkManagerExecutor$1.run(WorkManagerExecutor.java:120)
      at weblogic.work.j2ee.J2EEWorkManager$WorkWithListener.run(J2EEWorkManager.java:183)
      at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
      at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)

      Any help is appreciated!.
        • 1. Re: EDI Document Retry - Document protocol identification Error
          Anuj Dwivedi--Oracle
          Which transport and exchange protocol are you using? Error is not coming while resending the transaction, rather it is failing while processing the response returned by target server. Please provide the configuration info in detail.

          Regards,
          Anuj
          • 2. Re: EDI Document Retry - Document protocol identification Error
            user1715764
            Hi Anuj,

            Thanks for your reply.
            This is AS2 over http. Yes looks like error is in response as it shows INBOUND on host. I could see "Duplicated exchange protocol message error " on remote TP & "Document protocol identification Error ." on host trading partner . Both are happening instantly at same time.

            Here is the flow for Host A & TP B :
            1. A send 861 EDI to TP B & waits for FA.
            2. B receives 861 EDI , but does not send FA 997.
            3. A keeps waiting & than does a document retry as set in Agreement Details.
            4. Error occurs on remote partner "B" with "Duplicated exchange protocol message error ". & error on host ""Document protocol identification Error ." .

            Looks like on Document retry Host B2B re-submitted same same protocol message id & remote partner complained of it . - How can I make this work?
            Also what did remote partner send in response which failed at host with "Document protocol identification Error .".?

            We are doing some simulation testing at this time , & this is interaction between 2 Oracle b2b 11g instance.

            Thanks again.
            • 3. Re: EDI Document Retry - Document protocol identification Error
              Anuj Dwivedi--Oracle
              This is AS2 over http
              It explains the issue. In case of AS2, B2B will reject the incoming duplicate message but because of a known bug in 11g, it does not send the negative MDN (ack) back to sender. So if you use Sync ack mode with AS2 then in case of duplicate scenario, the sender will receive a 0 bye message (instead of negative MDN) which will fail with Document Protocol Identification error.

              So please raise a SR with support a get a patch for your system so that B2B can start sending negative MDN in case of duplicate message. After this, you will not get Document Protocol Identification error any more.

              Regards,
              Anuj
              • 4. Re: EDI Document Retry - Document protocol identification Error
                user1715764
                Thanks Anuj. I will create SR for the issue you mentioned.
                However how to prevent Duplicate protocol Message Id when B2B does a retry automatically , it itself sends the same message id to remode trading partner. Will this also be fixed as part of SR?
                • 5. Re: EDI Document Retry - Document protocol identification Error
                  Anuj Dwivedi--Oracle
                  However how to prevent Duplicate protocol Message Id when B2B does a retry automatically , it itself sends the same message id to remode trading partner. Will this also be fixed as part of SR?
                  This is not an issue. B2B is working as designed. Whenever the automatic resubmission occurs as part of Channel Retry or Document Retry, the same message is resubmitted and hence it will have same message id. Same message id is used so that receiver can understand that it's a duplicate (if receiver has already received this doc).

                  If you want to resubmit message with different message id then manually resubmit the APPLICATION MESSAGE from the B2B reports.You may also use command line resubmission feature of B2B (section 20.14 Resubmitting a Message) -

                  http://docs.oracle.com/cd/E28280_01/user.1111/e10229/scrpt_imp_exp_dep.htm#CEGBIEHI

                  Regards,
                  Anuj
                  • 6. Re: EDI Document Retry - Document protocol identification Error
                    DheerajKumarM
                    Alternatively you can set the EM property to receive the message b2b.checkDuplicate = false
                    • 7. Re: EDI Document Retry - Document protocol identification Error
                      user1715764
                      Thanks Anuj & Dheeraj. So that means , Duplicate protocol error needs to be handled at the remote trading partner end. We cannot use document retry option , at the application level , it will only be at the transport layer .
                      Probably need to resubmit application message in such scenario & do not have document retry , if remote partner cannot handle duplicate protocol id's.
                      • 8. Re: EDI Document Retry - Document protocol identification Error
                        Anuj Dwivedi--Oracle
                        Duplicate protocol error needs to be handled at the remote trading partner end
                        Yes, they need to handle it and should send a negative MDN back stating that it's a duplicate document.
                        We cannot use document retry option , at the application level , it will only be at the transport layer .
                        Yes, but correct words should be - "Document Retry option resubmits the wire message instead of resubmitting the application message"
                        Probably need to resubmit application message in such scenario & do not have document retry , if remote partner cannot handle duplicate protocol id's.
                        Yes, if remote TP cannot handle duplicates then retries should not be enabled at B2B. In such cases, manual intervention is required and app message should be resubmitted.

                        Regards,
                        Anuj