title: What is wrong with this WSDL? Why does SOAPUI generate a wrong request from this WSDL?
body: <p>I have a curious problem with one of my WSDL's</p>
  
  <p>When i create a new SOAP-project in SOAPUI and import the WSDL, SOAPUI generates an example request, but this request is missing the namespace and element for the operation.</p>
  
  <pre><code>&lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&gt;
     &lt;soapenv:Header/&gt;
     &lt;soapenv:Body&gt;
        &lt;customers&gt;
           &lt;!--Zero or more repetitions:--&gt;
           &lt;customerId&gt;?&lt;/customerId&gt;
        &lt;/customers&gt;
     &lt;/soapenv:Body&gt;
  &lt;/soapenv:Envelope&gt;
  </code></pre>
  
  <p>Based on my WSDL and XSD, that I'll include at the end for reference, i would expect the request to look more like this:</p>
  
  <pre><code>&lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:look="http://noa.otto.de/onlinecustomer/webservice/lookupadditionaldata"&gt;
     &lt;soapenv:Header/&gt;
     &lt;soapenv:Body&gt;
      &lt;look:requestAdditionalCustomerData&gt;
            &lt;look:customers&gt;
               &lt;!--Zero or more repetitions:--&gt;
               &lt;look:customerId&gt;?&lt;/look:customerId&gt;
            &lt;/look:customers&gt;
        &lt;/look:requestAdditionalCustomerData&gt;
     &lt;/soapenv:Body&gt;
  &lt;/soapenv:Envelope&gt;
  </code></pre>
  
  <p>But even when i "correct" the request like this manually it won't work and still produce a SOAPFault Exception on the server side, stating that it "Could not retrieve operation name from WS context"</p>
  
  <p>That tells me that the problem is probably not in SOAPUI's ability to generate a correct request from a WSDL, but in my ability to define a correct WSDL :-)</p>
  
  <p>Problem is, i have no more ideas what i could try, i've been at this for almost two days. So i thought maybe somebody else has an idea.</p>
  
  <p>Any thoughts are apreciated and thanks in advance for your time!</p>
  
  <p>regards
  Mario</p>
  
  <p>Oh, and in case it matters, the webservice is deployed in a glassfish/payara 4.1.1</p>
  
  <p>Here is my WSDL:</p>
  
  <pre><code>&lt;definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:webservice="http://noa.otto.de/onlinecustomer/webservice/lookupadditionaldata" xmlns:lookupadditionaldata="http://noa.otto.de/onlinecustomer/schema/lookupadditionaldata" name="LookupAdditionalUniservData" targetNamespace="http://noa.otto.de/onlinecustomer/webservice/lookupadditionaldata"&gt;
  &lt;types&gt;
    &lt;xsd:schema&gt;
      &lt;xsd:import namespace="http://noa.otto.de/onlinecustomer/schema/lookupadditionaldata" schemaLocation="http://blade228.puc.ov.otto.de:52301/onlinecustomer/LookupAdditionalUniservData?xsd=1"/&gt;
    &lt;/xsd:schema&gt;
  &lt;/types&gt;
  
  &lt;message name="requestAdditionalCustomerDataRequest"&gt;
      &lt;part name="customers" type="lookupadditionaldata:intArray"/&gt;
  &lt;/message&gt;
  
  &lt;message name="requestAdditionalCustomerDataResponse"&gt;
      &lt;part name="customerData" type="lookupadditionaldata:customerDataArray"/&gt;
  &lt;/message&gt;
  
  &lt;portType name="LookupAdditionalUniservDataPort"&gt;
      &lt;operation name="requestAdditionalCustomerData"&gt;
          &lt;input message="webservice:requestAdditionalCustomerDataRequest"/&gt;
          &lt;output message="webservice:requestAdditionalCustomerDataResponse"/&gt;
      &lt;/operation&gt;
  &lt;/portType&gt;
  
  &lt;binding name="LookupAdditionalUniservDataPortBinding" type="webservice:LookupAdditionalUniservDataPort"&gt;
      &lt;soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/&gt;
      &lt;operation name="requestAdditionalCustomerData"&gt;
          &lt;documentation&gt;collects customer account information for a given list of idCustomers&lt;/documentation&gt;
          &lt;soap:operation soapAction="requestAdditionalCustomerData" style="document"/&gt;
          &lt;input&gt;
              &lt;soap:body use="literal"/&gt;
          &lt;/input&gt;
          &lt;output&gt;
              &lt;soap:body use="literal"/&gt;
          &lt;/output&gt;
      &lt;/operation&gt;
  &lt;/binding&gt;
  
  &lt;service name="LookupAdditionalUniservDataService"&gt;
      &lt;documentation&gt;this service provides a means for the CASS/ENS/Uniserv system to collect additional customer account data&lt;/documentation&gt;
      &lt;port name="LookupAdditionalUniservDataPort" binding="webservice:LookupAdditionalUniservDataPortBinding"&gt;
          &lt;soap:address location="http://blade228.puc.ov.otto.de:52301/onlinecustomer/LookupAdditionalUniservData"/&gt;
      &lt;/port&gt;
  &lt;/service&gt;
  
  &lt;/definitions&gt;
  </code></pre>
  
  <p>and here is the XSD:</p>
  
  <pre><code>&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://noa.otto.de/onlinecustomer/schema/lookupadditionaldata" targetNamespace="http://noa.otto.de/onlinecustomer/schema/lookupadditionaldata" version="1.0"&gt;
  
      &lt;xs:complexType name="customerData"&gt;
          &lt;xs:sequence&gt;
              &lt;xs:element name="accountBalance" type="xs:long" minOccurs="0"/&gt;
              &lt;xs:element name="birthday" type="xs:dateTime" minOccurs="0"/&gt;
              &lt;xs:element name="blockedOrderValue" type="xs:int" minOccurs="0"/&gt;
              &lt;xs:element name="city" type="xs:string" minOccurs="0"/&gt;
              &lt;xs:element name="combinedCreditWorthinessClass" type="xs:short" minOccurs="0"/&gt;
              &lt;xs:element name="companyId" type="xs:short" minOccurs="0"/&gt;
              &lt;xs:element name="creationDate" type="xs:dateTime" minOccurs="0"/&gt;
              &lt;xs:element name="custNo" type="xs:string" minOccurs="0"/&gt;
              &lt;xs:element name="blockades" minOccurs="0"&gt;
                  &lt;xs:complexType&gt;
                      &lt;xs:sequence&gt;
                          &lt;xs:element name="blockade" type="tns:customerBlockade" minOccurs="0" maxOccurs="unbounded"/&gt;
                      &lt;/xs:sequence&gt;
                  &lt;/xs:complexType&gt;
              &lt;/xs:element&gt;
              &lt;xs:element name="dunningLevel" type="xs:string" minOccurs="0"/&gt;
              &lt;xs:element name="email" type="xs:string" minOccurs="0"/&gt;
              &lt;xs:element name="errorMessage" type="xs:string" minOccurs="0"/&gt;
              &lt;xs:element name="externalAccountBlockingSign" type="xs:byte" minOccurs="0"/&gt;
              &lt;xs:element name="externalBlockingSign" type="xs:byte" minOccurs="0"/&gt;
              &lt;xs:element name="externalCustomerType" type="xs:short" minOccurs="0"/&gt;
              &lt;xs:element name="firstName" type="xs:string" minOccurs="0"/&gt;
              &lt;xs:element name="houseNo" type="xs:string" minOccurs="0"/&gt;
              &lt;xs:element name="id" type="xs:int" minOccurs="0"/&gt;
              &lt;xs:element name="lastName" type="xs:string" minOccurs="0"/&gt;
              &lt;xs:element name="openBackorder" type="xs:int" minOccurs="0"/&gt;
              &lt;xs:element name="phone" type="xs:string" minOccurs="0"/&gt;
              &lt;xs:element name="salutation" type="xs:string" minOccurs="0"/&gt;
              &lt;xs:element name="street" type="xs:string" minOccurs="0"/&gt;
              &lt;xs:element name="weeklyCredit" type="xs:long" minOccurs="0"/&gt;
              &lt;xs:element name="zip" type="xs:string" minOccurs="0"/&gt;
          &lt;/xs:sequence&gt;
      &lt;/xs:complexType&gt;
  
      &lt;xs:complexType name="customerBlockade"&gt;
          &lt;xs:sequence&gt;
              &lt;xs:element name="blockadeAge" type="xs:long" minOccurs="0"/&gt;
              &lt;xs:element name="blockadeName" type="xs:string" minOccurs="0"/&gt;
              &lt;xs:element name="blockadeNumber" type="xs:short" minOccurs="0"/&gt;
              &lt;xs:element name="blockadeState" type="tns:blockadeState" minOccurs="0"/&gt;
              &lt;xs:element name="dominantBlockadeSign" type="xs:boolean" minOccurs="0"/&gt;
              &lt;xs:element name="paymentKey" type="xs:byte" minOccurs="0"/&gt;
              &lt;xs:element name="paymentKeyName" type="xs:string" minOccurs="0"/&gt;
          &lt;/xs:sequence&gt;
      &lt;/xs:complexType&gt;
  
      &lt;xs:simpleType name="blockadeState"&gt;
          &lt;xs:restriction base="xs:string"&gt;
              &lt;xs:enumeration value="ACTIVE"/&gt;
              &lt;xs:enumeration value="SUSPENDED"/&gt;
          &lt;/xs:restriction&gt;
      &lt;/xs:simpleType&gt;
  
      &lt;xs:complexType name="customerDataArray" final="#all"&gt;
          &lt;xs:sequence&gt;
              &lt;xs:element name="item" type="tns:customerData" minOccurs="0" maxOccurs="unbounded" nillable="true"/&gt;
          &lt;/xs:sequence&gt;
      &lt;/xs:complexType&gt;
      &lt;element name="customerDataArray" type="tns:customerDataArray"/&gt;
  
      &lt;xs:complexType name="intArray" final="#all"&gt;
          &lt;xs:sequence&gt;
              &lt;xs:element name="customerId" type="xs:int" minOccurs="0" maxOccurs="unbounded" nillable="true"/&gt;
          &lt;/xs:sequence&gt;
      &lt;/xs:complexType&gt;
      &lt;element name="intArray" type="tns:intArray"/&gt;
  
  &lt;/xs:schema&gt;
  </code></pre>