on ‎2021 Aug 09 9:26 AM
Dear Experts,
following use case:
When an interaction of a specific interaction type is imported in SAP Marketing Cloud, we would like to use Open Channel campaign to send the data of the contact (who has executed the interaction) to SAP Cloud Integration.
The speciality is that we only want to send specific IDs of that contact to CI.
In the export definition I used the field ID of Data Source SAP_CE_CONTACT_IA_ERP_CUSTOMER (DA-SAP_CE_CONTACT_IA_ERP_CUSTOMER-ID), but that way I always get multiple IDs sent to CI (e.g. email-address, internal MC ID, and so on...).
Does anybody know if it is possible to extract only specific IDs? E.g. only the email-address?
Or is there any better way to achieve this goal?
BR Tobias
Request clarification before answering.
Hi Tobias,
I solved this issue as given below. I hope this works for you either.
I used both ID & ID Origin as an export parameter and convert them within the XSLT. (I used **IC_ID** but you of course can use **ID** both have the same feature)
<xsl:for-each select="//CampaignTargetGroupMembers">
<mobile>
<IDOrigin>
<xsl:for-each select="TargetGroupMemberAttributeData">
<xsl:if test="AttributeId = 'DA-_SAP_CF_CE_CONTACT_IA_ERP_CUST-IC_ID_ORIGIN'">
<xsl:value-of select="Value" />
</xsl:if>
</xsl:for-each>
</IDOrigin>
<ID>
<xsl:for-each select="TargetGroupMemberAttributeData">
<xsl:if test="AttributeId = 'DA-_SAP_CF_CE_CONTACT_IA_ERP_CUST-IC_ID'">
<xsl:value-of select="Value" />
</xsl:if>
</xsl:for-each>
</ID>
</mobile>
</xsl:for-each>
<br>Then I did a message mapping to have desired ID;
Basically, I put 3 attributes into the below groovy script. ID, ID Origin and (Desired Origin; "EMAIL or MOBILE or SAP_C4C_BUPA etc.")
Note: In my case I used a value mapping but you might also set this as a external parameter without sending it from Marketing Cloud etc. ).

Since ID and Origin are in the same order seperated by "," this code worked for me.
def String getUsersKey(String idOrigin, String ID, String app){
String[] idOriginList;
idOriginList = idOrigin.split(',');
String[] idList;
idList = ID.split(',');
String appText = app;
int i;
int ii;
String map = '';
idOriginList.find{i++
if (it == appText)
{
return true
}else{
return false
}
}
idList.find{ii++
if (i == ii)
{
map = it
return true
}else{
return false
}
}
return map
}<br>
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
In our case we had contacts with several IDs for the same ID Origin, e.g. SAP_FORM with several form fillouts. In this case the Origins are not duplicated, but all of the IDs are exported which throws the IDs and ID Origins "out of sync". For us it was better to go with Christian's custom HANA view solution below.
Hi Tobias
If you want to have the IDs of a specific ID origin, I am afraid you need to create a (quite simple) custom HANA view. Thats also what I did to fulfill my requirements.
Use the table CUAND_CE_IC_FCET as basis for the custom view and create a filter for the specific ID origin.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi schneidert,
I think you can create a custom CDS view with type External api and apply your necessary filters to export the specific IDs.
BR
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 1 | |
| 1 | |
| 1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.