1

I'm trying to create a email send definition object (user initiated) using a filter, but when I select Interections->User-Initiated Email on the Recipients Targeted Data Filters, it shows "MYFilterDefinition" (All Subscribers), even setting a specific List to my sendDefinitionList (as shown in the code below).

I also tried to configure filter.setDataSource (commented), but got the same result.

The code looks like this:

/* creating filter to remove domains from lists */
FilterDefinition filter = new FilterDefinition();
filter.setCustomerKey("filterCustomerKey");

SendDefinitionList sendDefinitionList = new SendDefinitionList();
sendDefinitionList.setSendDefinitionListType(SendDefinitionListTypeEnum.SOURCE_LIST);
sendDefinitionList.setDataSourceTypeID(DataSourceTypeEnum.FILTER_DEFINITION);

com.exacttarget.fuelsdk.internal.List lista =  new com.exacttarget.fuelsdk.internal.List();
lista.setCustomerKey(sendConfiguration.getMmList().getEtList().getCustomerKey());

sendDefinitionList.setList( lista );
//filter.setDataSource(lista);

sendDefinitionList.setFilterDefinition(filter);

List<SendDefinitionList> sendDefinitionListCollection = new ArrayList<SendDefinitionList>();
sendDefinitionListCollection.add(sendDefinitionList);

SendClassification sc = new SendClassification();
sc.setCustomerKey(sendConfiguration.getMmSendClassification().getEtSendClassification().getCustomerKey());

String customerKey = "EmailSendDefinition" + sendConfiguration.getId();
EmailSendDefinition emailSendDefinition = new EmailSendDefinition();
emailSendDefinition.setName(customerKey);
emailSendDefinition.setCustomerKey(customerKey);
emailSendDefinition.setDescription(sendConfiguration.getMmEmail().getName());
emailSendDefinition.setDynamicEmailSubject(sendConfiguration.getMmEmail().getEtEmail().getSubject());
emailSendDefinition.setEmail( ObjectConverter.convertFromEtObject(sendConfiguration.getMmEmail().getEtEmail(), Email.class, true) );
emailSendDefinition.setEmailSubject(sendConfiguration.getMmEmail().getEtEmail().getSubject());
emailSendDefinition.setSendClassification( sc );
emailSendDefinition.getSendDefinitionList().add(sendDefinitionList);

CreateRequest createRequest = new CreateRequest();
createRequest.setOptions(new CreateOptions());
createRequest.getObjects().add(emailSendDefinition);

/* create a new user-initiated */
Soap soap = baseBean.getETClientInstance().getSOAPConnection().getSoap();
CreateResponse createResponse = soap.create(createRequest);

if(!createResponse.getOverallStatus().equals("OK")) {
..
}

Print of All Subscribers selected1

This post helped me a lot, but something is missing in java: https://code.exacttarget.com/question/how-do-you-create-filter-segment-empty-profile-attributes.

Can you see anything wrong of missing in the code? How do I apply a filter in a List or Data Extension of an EmailSendDefinition object ?

1 Answer 1

2

I'm pretty sure this was failing due to the same bug found and fixed here: Error when trying to create an User-Initiated object (ETEmailSendDefinition). I have verified that the following code works in version 0.99999 of the Java SDK:

First, to create the data filter (FilterDefinition):

ETClient client = new ETClient();

FilterDefinition filterDefinition = new FilterDefinition();
filterDefinition.setName("BlankCityFilter");
filterDefinition.setCustomerKey("BlankCityFilter");
filterDefinition.setDescription("BlankCityFilter");

SimpleFilterPart simpleFilterPart = new SimpleFilterPart();
simpleFilterPart.setProperty("City");
simpleFilterPart.setSimpleOperator(SimpleOperators.EQUALS);
simpleFilterPart.getValue().add("");

filterDefinition.setDataFilter(simpleFilterPart);

CreateRequest createRequest = new CreateRequest();
createRequest.setOptions(new CreateOptions());
createRequest.getObjects().add(filterDefinition);

Soap soap = client.getSOAPConnection().getSoap();

CreateResponse createResponse = soap.create(createRequest);

Then, to create the user-initiated send definition (ETEmailSendDefinition) using that data filter:

ETClient client = new ETClient();

com.exacttarget.fuelsdk.internal.List list = new com.exacttarget.fuelsdk.internal.List();
list.setId(1992264); // my subscribers

FilterDefinition filterDefinition = new FilterDefinition();
filterDefinition.setCustomerKey("BlankCityFilter");
filterDefinition.setDataSource(list);

Email email = new Email();
email.setId(3202709); // email id (you can use customer key too)

SendDefinitionList sendDefinitionList = new SendDefinitionList();
sendDefinitionList.setList(list);
sendDefinitionList.setDataSourceTypeID(DataSourceTypeEnum.FILTER_DEFINITION);
sendDefinitionList.setFilterDefinition(filterDefinition);

SendClassification sendClassification = new SendClassification();
sendClassification.setCustomerKey("13817"); // Default Commercial

EmailSendDefinition emailSendDefinition = new EmailSendDefinition();
emailSendDefinition.setName("test2");
emailSendDefinition.setCustomerKey("test2");
emailSendDefinition.setEmail(email);
emailSendDefinition.setSendClassification(sendClassification);
emailSendDefinition.getSendDefinitionList().add(sendDefinitionList);

CreateRequest createRequest = new CreateRequest();
createRequest.setOptions(new CreateOptions());
createRequest.getObjects().add(emailSendDefinition);

Soap soap = client.getSOAPConnection().getSoap();

CreateResponse createResponse = soap.create(createRequest);

Let me know if this still isn't working for you.

-ian

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .