cancel
Showing results for 
Search instead for 
Did you mean: 

Export interactions

shabakov
Participant

Hello, experts!

Our client wants to be able export interactions (not contacts) to his email in csv automatically (for example every night). He also wants to be able to export all interactions only with the value in the custom field (filtered by UTM). What are the best ways for us to achieve it?

Accepted Solutions (1)

Accepted Solutions (1)

PengSiong
Employee
Employee

Hi Konstantin,

As pointed by johannes.hirling in help documentation, you can use the interaction OData service API_MKT_INTERACTION_SRV.

Additionally specify below parameters to enable controlled delta extraction process:

$top=${property.top}&$skip=${property.skip}&$filter= InteractionLastChangedDateTime gt datetimeoffset'${property.QueryDeltaTimeStamp}'&$orderby= InteractionLastChangedDateTime

The "top" parameter restricts the maximum records per iflow execution to prevent high volume extraction timeout, or performance impaired.

Example:

Let's say, you have 5k delta records to be extracted and set top=3k.

The 1st execution you will get (extracted) e=3k, as "top" restricts 3k maximum. When e=top, that means potentially there are more remaining records to extract, hence you will continue 2nd execution to get remaining records by "skip" the first 3k already extracted.

At this 2nd extarction, since e=2k<top (no more records), you know that delta extraction is already completed.

Depending on "top" and records numbers, one delta extract might be completed by multiple executions. In this example, it is completed by 2 iflow executions.

The 1st iflow execution can be started by timer scheduler entry.

In order to ensure seamless extraction of remaining records in subsequents execution, current execution can trigger its own self (iflow) by provide another asynchronous SOAP triggers entry and passing current status (total number record already extracted that need to be "skip" etc).

ie. You design this iflow to be triggered by both 1) timer trigger by scheduler, 2) SOAP for subsequent remaining records extracts.

The SOAP is asynchronous to ensure 1st triggers CPI system resources is released when another 2nd (and subsequent) iflow instance is started.

At the end of the complete delta extract, you will set current timestamp to property "QueryDeltaTimeStamp" to save into datastore variable. This can then be read back by next timer trigger as InteractionLastChangedDateTime delta offset specification.

Due to record are reading from top-down (with "top" parameter), the records must be sorted ascending with parameter "orderby" to ensure earliest records (at top) are extracted before the latest changed records.

Finally, to improve performance per execution, you can enable parallel (example using parallel "General Splitter") extraction to call API_MKT_INTERACTION_SRV. If top=3k, and 5 parallel is configured, hence, you can extract 3X5=15K records per iflow execution.

Optimum "top" and parallel setting is purely iflow design decision and determined through some repeat test against your system landscape.

Hope this explanation helps.

best regards,

PengSiong

shabakov
Participant
0 Kudos

Thank you for the very detailed answer!

Answers (3)

Answers (3)

arlene_milano
Explorer
0 Kudos

Hi

We are following the blog :https://www.sap.com/cxworks/article/2589632519/extract_sap_marketing_cloud_data_with_cds_based_export_services

and in using this : Get Interactions with DeltaToken

GET /sap/opu/odata4/sap/cdi_cds/cdi_cds/sap/i_mkt_inter &$select=InteractionContactId,Interacti Host: {{SMC_HOST}} Prefer: odata.maxpagesize=10 Authorization: *

We are not seeing a way to get the 'Last changed' timestamp to fetch the Delta. Can someone help with that?

thanks

Arlene

former_member247020
Active Participant
0 Kudos

Hi,

How many interactions are you planning to extract on a daily basis?
You can use the API to extract the interaction and use soime standard OData parameters to restrict the results.
The UTC timestamp, creation timestamp and last updated timestamp for defining a timeframe.

Interaction API
https://help.sap.com/viewer/0f9408e4921e4ba3bb4a7a1f75f837a7/1902.500/en-US/6322d15482854566a72f6c9f...

OData V2
https://www.odata.org/documentation/odata-version-2-0/uri-conventions/

pslim worked on data extractions on Marketing Cloud.

br,
Johannes

shabakov
Participant
0 Kudos

Hello, Johannes

>How many interactions are you planning to extract on a daily basis?

About 5000 interactions daily.

>You can use the API to extract the interaction and use soime standard OData parameters to restrict the results.

But what about automatically export? Where we can plan this operations and restrict by UTM in Marketing? Or the only option - get all the data (by jobs), transform it and send by email on sCPI side?

former_member267312
Contributor
0 Kudos

Hi Konstantin,

Have you already considered creating a custom CDS view in SAP Marketing Cloud and exposing it via OData? You could query the custom CDS view OData via SAP Cloud Platform to retrieve and process the data as needed.

johannes.hirling your input would be great!

BR

Theo

shabakov
Participant
0 Kudos

Yes, we are thinking about it. But how can we start our export automatically in MKT? Also, how can we filter by UTM or campaign time? We cannot use campaign designer for this purposes...

Do we need create custom fiori application or we can adapt existing one?