Michael, This can happen if the WS you’re invoking uses RPC/Encoding or isn’t really using document/literal encoding in the best possible manner. In that case, you can end up with a multi-part message type when biztalk imports the WSDL that has separate “messages” for each of the service method’s arguments with the actual types involved. I.e. you’lll get a multi-part message type with a bunch of properties with string/int/whatever types.
In that case, you can still use it, but you can’t use a map to create the message; you need to directly fill it out using expressions inside a message assignment shape in your construct shape.