Soap 1.2

It looks like E10 has both SOAP 1.1 and 1.2.
I can get 1.1 working in SoapUI, but I cannot get SOAP 1.2 to work.
Is there some secret way to configure it so I can use the SOAP 1.2 services from Epicor?

This is the response I’m receiving when trying to use the 1.2 services and, frankly, I don’t know enough about this to know what to do with it.

  <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
     <s:Header>
        <a:Action s:mustUnderstand="1">http://www.w3.org/2005/08/addressing/soap/fault</a:Action>
     </s:Header>
     <s:Body>
        <s:Fault>
           <s:Code>
              <s:Value>s:Sender</s:Value>
              <s:Subcode>
                 <s:Value xmlns:a="http://schemas.xmlsoap.org/ws/2005/02/sc">a:BadContextToken</s:Value>
              </s:Subcode>
           </s:Code>
           <s:Reason>
              <s:Text xml:lang="en-US">The message could not be processed. This is most likely because the action 'Erp:BO:Customer/CustomerSvcContract/GetByCustID' is incorrect or because the message contains an invalid or expired security context token or because there is a mismatch between bindings. The security context token would be invalid if the service aborted the channel due to inactivity. To prevent the service from aborting idle sessions prematurely increase the Receive timeout on the service endpoint's binding.</s:Text>
           </s:Reason>
        </s:Fault>
     </s:Body>
  </s:Envelope>

Are you standing up the SOAP 1.2 binding in Web.config? NOTE - Integration APIs (Basic, soap 1.2, etc) are not in the Admin Console UI so you need to manually edit them.

Look for:
<system.serviceModel>


<…>

  <wsHttpBinding>
    <binding name="SOAPHttp" maxReceivedMessageSize="2147483647">
      <security mode="Message">
        <message clientCredentialType="UserName" />
      </security>
      <readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxStringContentLength="2147483647" />
    </binding>
  </wsHttpBinding>
  <customBinding>

Yeah, I have this.
I changed the security to none to test, but that gave me an access denied.

  <wsHttpBinding>
    <binding name="SOAPHttp" maxReceivedMessageSize="2147483647">
      <security mode="None">
        <!--"Message">
        <message clientCredentialType="UserName" />-->
      </security>
      <readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxStringContentLength="2147483647" />
    </binding>
  </wsHttpBinding>

It is enabled in the protocol mapping section?

<system.serviceModel>
    <protocolMapping>
    <remove scheme="http" />
    <add scheme="http" binding="wsHttpBinding" bindingConfiguration="SOAPHttp" />

Yes, it is.

How exactly have you configured SOAP 1.2?

Are you asking how I configured it in SoapUI?

yes. Actually, what is SoapUI?

It’s a tool to test web services. (https://www.soapui.org/)
Here’s the raw that’s being input:

  POST http://isiepicor/TEST/Erp/BO/Customer.svc HTTP/1.1
  Accept-Encoding: gzip,deflate
  Content-Type: application/soap+xml;charset=UTF-8;action="Erp:BO:Customer/CustomerSvcContract/GetByCustID"
  Content-Length: 595
  Host: isiepicor
  Connection: Keep-Alive
  User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

  <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:erp="Erp:BO:Customer">
     <soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"><wsa:Action>Erp:BO:Customer/CustomerSvcContract/GetByCustID</wsa:Action><wsa:MessageID>uuid:c25c582a-7585-4f29-b431-963c920e2a89</wsa:MessageID><wsa:To>http://isiepicor/TEST/Erp/BO/Customer.svc</wsa:To></soap:Header>
     <soap:Body>
        <erp:GetByCustID>
           <!--Optional:-->
           <erp:custID>707250</erp:custID>
           <!--Optional:-->
           <erp:withShipTo/>
        </erp:GetByCustID>
     </soap:Body>
  </soap:Envelope>

I see… So how the binding is set up there? you need to match client binding to server;s security mode -

    <binding name="SOAPHttp" maxReceivedMessageSize="2147483647">
      <security mode="Message">
        <message clientCredentialType="UserName" />
      </security>
    </binding>