cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Open Channel Integration - extract specific IDs

SCHNEIDERT
Active Contributor
997

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

Accepted Solutions (1)

Accepted Solutions (1)

CagriSenol
Participant

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>
MarkusGrant
Active Participant

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.

Answers (2)

Answers (2)

former_member737455
Participant

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.

Abd_Am_K
Active Participant

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