1

We have this little piece of code

$getDERows = new ET_DataExtension_Row();
$getDERows->authStub = $this->soap_client;
$getDERows->filter = array("Property" => "Client.ID", "SimpleOperator" => "equals", "Value" => $this->client_id);
$getDERows->props = array('ELECTRONICTXT', 'IDENTIFIER', 'TITLE', 'DATE');
$getDERows->Name = $customerKey;
$getDERows->CustomerKey = $customerKey;
$res = $getDERows->get();

As you see we have 3 variables:

  • name
  • customer key (these are the same - not sure if good)
  • client id (mid)

When I run this:

Message: Error: The Filter Property 'Client.ID' is not a retrievable property

and I frankly don't know how to filter based on the Client.ID the data extensions rows. If I remove the filter row, it returns a bunch of results which noone can tell us from which Client.ID came.

UPDATE

Problem with Creating as well, how to specify Client.ID

$postDRRow = new ET_DataExtension_Row();
$postDRRow->authStub = $this->soap_client;
$postDRRow->CustomerKey = $customerKey;
$postDRRow->props = $props;
$res = $postDRRow->post();
  • The Client.ID is likely your parent. How many business units do you have set up? I know this works for Data Extensions and other objects, but I've not tried it with DataExtension_Row – garek007 Jul 18 at 17:02
  • Looking at mine you don't need to filter on Client.ID, that's likely why it doesn't work. The customer key you set pulls rows from that specific data extension. – garek007 Jul 18 at 17:05
  • @garek007 OK then, let's reformulate, how do you write a DataExtensions Row to a Client.ID? – Pentium10 Jul 18 at 17:24
  • First you need to get the CustomerKey of the data extension. Once you request that, it will be returned from whatever Business Unit it lives in. – garek007 Jul 18 at 17:37
  • What I mean is, you are requesting rows from a specific data extension. You need to code the customer key for the data extension rows you are trying to get, otherwise, how does your code know what data extensions rows you want? You are trying to retrieve, not create right? – garek007 Jul 18 at 18:31
1

Regarding Business Units, first tell me this. Can you confirm that you are retrieving Data Extensions from all business units? We thought we were at first, bu it turns out the SDK limits you to one business unit. So one way you could filter is by setting the accountId in your config array here

  $config = array(
    'appsignature' => 'none',
    'clientid' => $clientid,
    'clientsecret' => $clientsecret,
    'baseAuthUrl' => $auth_url,
    'defaultwsdl' => 'https://webservice.exacttarget.com/etframework.wsdl',
    'xmlloc' => dirname(__DIR__,1).'/ExactTargetWSDL.xml',    
    'baseSoapUrl' => $soap_url,
    'baseUrl' => $base_url,    
    'useOAuth2Authentication' => true,
    'accountId' => '<TARGET_ACCOUNT_ID>', 
  );

and that restricted our results to that business unit. But we didn't like that because it meant that you couldn't truly get all results from all business units at once. So we found this line in ET_Get and commented out the if statement. This made it so that Fuel actually returned results from ALL business units. Once you're getting results from all BUs, you should see the filters actually do work the way you've written them.

    //if ("Account" == $objType) {
        $retrieveRequest["QueryAllAccounts"] = true;
    //}

I just had this same issue earlier today with create. Try this to specify Client.ID.

$get->props = array(
  "Name" => $deName, 
  "CustomerKey" => str_replace(" ", "_", $deName),
  "IsSendable" => true,
  "Client"=> array("ID" => 1234567),
  "SendableDataExtensionField" => array(
    "Name"=>"SubscriberKey",
    "Value"=> NULL
  ),
  "SendableSubscriberField"=>array(
    "Name" => "Subscriber Key",
    "Value" => NULL
  )
);

You need to pass ID in an array.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.