1,630 questions

3,175 answers

1,704 comments

478 users

Bizops: How to find constituent associated with marketing finder number (efndnum)

0 votes

Hello All

I've successfully used the Bizops API for a couple tasks in the past.

What I'd like to do now is use the Bizops API to find the constituent associated with an EDM finder number.

When a user receives an EDM sent by us through CRM/BBIS the links (such as the unsubscribe link) include a querystring which includes a value for efndnum.

By looking up the value of efndnum in the table CONSTITUENTAPPEAL I can see that I can find the correct associated constituent guid. But I need to look this up using the Bizops API.

The right tool for the job would seem to be the Bizops "DataList" service called "Marketing Finder Number Lookup". I've tried making a request to this service but I get an error response saying that the underlying stored procedure requires the FINDERNUMBER parameter, even when I pass a filter containing a value for FINDERNUMBER in the request.

Does anyone have any experience with this or suggestions? Or alternative Bizops services I could try?

With much thanks!


Here's the response (truncated):

{"GetRowsReply":
{"StatusOK":false,
"StatusCode":500,
"StatusMessage":"Unable to load data list.  
Procedure or function 'USP_DATALIST_MKTFINDERNUMBERLOOKUP' 
expects parameter '@FINDERNUMBER', 
which was not supplied.",
asked Aug 22 by nightand (113 points)   2 7
edited Aug 22 by nightand

Add your code to this post and we will be able to better assist you.

Thanks for looking. I have a class in php for making the bizops request. Here is the method in the class that I'm using:

public function get_soap_response($wsdl, $function, $request) {
    $request['ClientAppInfo'] = $this->settings[$this->environment]['client_app_info'];

    $sc = new SoapClient($wsdl, $this->settings[$this->environment]['soap_options']);
        return $sc->$function($request);
    }
}

and this is how I call it (when the class is instantiated in $sc):

$result = $sc->get_soap_response($marketingfindernumberlookup_wsdl, 'GetAllRows', array(
    'FINDERNUMBER' => $id,
));

The documentation doesn't show "FINDERNUMBER" as a valid part of the request for "GetAllRows", but it does for "GetRows". But I've tried "GetRows" as well and I get the same error.

I've used this method successfully on other datalists though, for example:

$result = $sc->get_soap_response($adhocquerydatalist_wsdl, 'GetAllRows', array(
    'RecordTypeID' => '0D490307-789B-464B-8878-EA29D164C796'
));

What's the request look like? Can you turn on WSREQUESTLOG on the environment and see what's being requested?

Oh ^%!*, sorry Chris, I just kind of assumed in my own lazy way that all the datalist requests would work the same way. Looking at the WSDL and my request XML has shown me the error of my ways...

Just for information, for anyone else looking, I'm now building the request the following way and am successfully getting a response...

$filter_data = new stdClass();
$filter_data->FINDERNUMBER = 11111;
$filter_data->RECORDSOURCEID = 'DAB4B8C1-1111-2222-3333-01C096B53BA0'; 
$result = $sc->get_soap_response($none_marketingfindernumberlookup_wsdl, 'GetRows', array(
    'Filter' => $filter_data,
));

1 Answer

+1 vote
 
Best answer
$filter_data = new stdClass();
$filter_data->FINDERNUMBER = 11111;
$filter_data->RECORDSOURCEID = 'DAB4B8C1-1111-2222-3333-01C096B53BA0'; 
$result = $sc->get_soap_response($none_marketingfindernumberlookup_wsdl, 'GetRows', array(
    'Filter' => $filter_data,
));
answered Aug 22 by chriswhisenhunt (3,808 points)   8 24 43
selected Aug 22 by nightand
...