Hi,
Using the PHP library, the customerService.mutate call keeps returning CLIENT_CUSTOMER_ID_IS_REQUIRED - even though the clientCustomerId header field is set. This is verified by calling any other service that requires the clientCustomerId - for instance, adGroupAdService.get or reporting service, etc. - immediately before the request. The first request goes through successfully, while the second one returns the error mentioned above.
Looking in the soap logs, the clientCustomerId field is present in the header of the adGroupAdService request, but not in the customerService.mutate request. We are happy to share the relevant request IDs.
Adding the following line of code to the AdWordsSoapClient.php file just before the GenerateSoapHeader function returns solved the problem:
$headerObject->clientCustomerId = $this->GetAdsUser()->GetClientCustomerId();
However, we would love to see a cleaner solution.