1

I've started to use Outbound Messaging and everything works fine assuming the message is parsed and ACK'd the first time. However if the message fails and a retry happens, the full information is not passed to the endpoint. Instead the following message is sent

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<notifications xmlns="http://soap.sforce.com/2005/09/outbound" xmlns:ns2="urn:sobject.enterprise.soap.sforce.com">
    <OrganizationId>00DK000000W3mXXXXX</OrganizationId>
    <ActionId>04kK00000004FXXXXX</ActionId>
    <SessionId xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
    <EnterpriseUrl>https://csX.salesforce.com/services/Soap/c/35.0/00DK000000W3mXXXXX</EnterpriseUrl>
    <PartnerUrl>https://csX.salesforce.com/services/Soap/u/35.0/00DK000000W3mXXXXX</PartnerUrl>
    <Notification>
        <Id>04lK000000PJu8TIAT</Id>
        <sObject>
            <ns2:Id xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
        </sObject>
    </Notification>
    <Notification>
        <Id>04lK000000PJu8YIAT</Id>
        <sObject>
            <ns2:Id xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
        </sObject>
    </Notification>
</notifications>

Is there a way to obtain the message's content from this Id provided? Or should our endpoint store the initial copy of the message (with it's Id) prior to doing any type of processing on it and then use this Id when it tries to redeliver? This seems like it's not the right way to do it since the state of the endpoint is in question if Salesforce has to redeliver.

6
  • this is odd, you should get the configured fields on each delivery attempt. What fields are configured to be sent. is something modifying the object such that those fields aren't set by the time the retry is attempted ?
    – superfell
    Feb 1, 2016 at 21:04
  • All (well almost all) of the fields are marked to be sent. The fields are set the first time that the message is sent, just not in subsequent tries. Feb 1, 2016 at 21:23
  • 1
    its sends the current state of the object at each attempt, so i would verify that the actual sobject row is still as you expect. [if it is, then you'll probably need to log a case with support, this seems like a bug]
    – superfell
    Feb 1, 2016 at 21:41
  • @superfell Isn't it pretty common to see resends for unclear reasons? I have the feeling that you have to prepare the endpoint for that anyways
    – user28311
    Feb 1, 2016 at 22:16
  • yes, but the resends should include the current state of the records, the endpoint should handle getting a resend of data its already processed, but that's not the case in this question.
    – superfell
    Feb 1, 2016 at 22:56

1 Answer 1

2

Turns out, there is actually nothing wrong with the outbound message. After lots of debugging on our proxy layer, it turns out that something is wrong with the consumer of the messages. Putting in a simple endpoint that simply spits out the outbound message XML everything is there every time. Now to work with the developer that's working on the receiving endpoint to see what is going wrong there.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .