Product Information
FAQ – B2B Contact-to-Account Relationships in SAP Marketing Cloud
You find questions and answers to the topic B2B Contact-to-Account Relationships and SOAP-based Integration:
How do I switch on B2B Relationship functionality?
You will find the “contact projection” switch in the Set Up Your Marketing Solution app in the scenario Contacts and Profiles under Contact Projections for B2B Relationships.
Can we turn off the B2B Switch again or it is irreversible?
Switching back to the state without contact relationships is only possible in the Q-system. In the P-system you must request this from SAP via a service ticket.
Does the migration of the old ODATA to the new SOAP-based integration impact existing data?
Yes, you must run a migration program after you have switched from the old to the new version of integration. You need to submit a service ticket to request this migration. The details are described in the migration guide, which is part of the integration and setup guide.
What happens with Contacts that have been merged before upgrading to the SOAP-based Integration?
It’s important to understand the design principles of the SOAP-based integration with regard to this point. For each business partner in Sales Cloud, a corresponding local business partner record is created in SAP Marketing Cloud. The subsequent extraction creates separate interaction contacts for the persons and accounts. No merge is performed because the business partner in marketing would prevent this since it is the primary data provider for the interaction contact via the ID Origin SAP_MKT_BUPA. As a result of the migration program, which is executed for the SOAP-based integration, the ID Origin SAP_C4C_BUPA becomes an additional ID, which provides the reference to interactions loaded from the Sales Cloud.
If you have already merged business partners into one interaction contact with the ODATA-based Integration, it’s difficult to migrate to the SOAP integration. One option could be to delete merged interaction contacts in SAP Marketing Cloud before you start to migrate to SOAP.
Unfortunately, we currently do not provide a solution that splits merged interaction contacts, because it is simply not possible to provide an adequate solution in the standard.
However, you can request from SAP Marketing Cloud development a query on your interaction contact base to figure out all cases, where contacts contain after a merge two or more C4C_BUPA Ids. To get this list, you must submit a service ticket with the headline “Please provide a list with all the merged Interaction Contacts – those having 2 or more SAP_C4C_BUPA ids.”
How do we handle Marketing Permissions regarding Marketing Area assignments?
According to the SetUp Guide you have to activate marketing areas for campaign execution in order to be able to use Contact-to-Account Relationships.
However, it is sufficient to use one single marketing area, e.g. GLOBAL, if, during campaign execution, you use the BAdI CUAN_MKT_EXEC_MARKETING_AREA to set this single Marketing Area to perform a proper permission check.
How can you set the marketing area for permissions and subscriptions?
- If implicit permissions are used, you are fine, because they are created with marketing area in any case, i.e. if the use of marketing area for campaign execution is switched off.
- Subscriptions have a marketing area assigned as well.
So, it is critical and tricky for explicit permissions:
- If you are just starting with your implementation, you must fill the proper Marketing Area, when loading permissions initially for the contacts.
- If you are already running marketing cloud productively, it’s more difficult.
One approach could be to extract the marketing permissions for the relevant contacts and reload them into SAP Marketing Cloud, using the API API_MKT_CONTACT.
Alternatively, as of release 2108 SAP provides a possibility to assign a single marketing area to the explicit permissions on behalf of a service incident. For more details refer to the chapter in the administration guide.
Do we have to assign a Marketing Area when loading Interactions?
Yes, when loading interactions, for example from a first-party website or business documents like opportunities from sales cloud, or sales orders from S/4HANA, you must pass on a value for the marketing area, e.g. using the BADI Revise Interaction Data before Data Import, refer to the following documentation.
This is especially important if you want to further use interactions for trigger-based campaigns.
As of release 2108 a new application job is available which can be used to update existing interactions with a marketing area using a live target group. For more details refer to the administration guide.
Is there Integration for SAP CRM available that supports B2B relationships?
Currently there is no standard integration for SAP CRM that supports this feature set. However, there is the CX works best practice article available, which guides you with regard to changing integration towards the SOAP-based Business Partner replication.
Can B2B contact-to-account relationships be enabled for multiple Marketing Areas?
Yes, the Marketing Area plays an important role in this feature set. For contacts with multiple assignments to marketing areas, every relationship to the related account will be available in the corresponding marketing area. For example, if a contact is related to Marketing Area A and B, and has relationships to two different accounts, the system provides the cartesian product for the relationships, i.e. in total 4 relationship best records will be created. The same applies if the contact has relationships to one account with different relationship categories.
Why is the attribute COMPANY_NAME not available anymore in API_MKT_CONTACTS?
Thanks for this valuable feedback. This is a requirement which is still being evaluated. We will look into this issue.
Are relationships between two accounts supported?
Currently only contact-to-account relationships are possible. This is a conscious decision as marketing engagements are primarily executed for contacts.
You can add these relationships by means of a CBO, which captures the relationship records between accounts, e.g. to use this in segmentation.
Is there a new API for Interactions that supports Account and Contacts?
Yes, there is a new sub-node on the interaction, which allows you to assign additional contact or accounts. Note, the interaction does not differentiate between accounts and contacts.
How do we handle existing Custom Fields after Upgrade to SOAP-based Integration?
Existing custom fields can continue to be used after you have migrated integration to SOAP-technology. To do so you have to:
- Create another custom attribute in the local business partner (business context “master data: business partner”)
- Use the available BADI to map the values of the new attribute from the business partner to the existing attribute of the interaction contact.
- Afterwards reload data from C4C as described in the migration guide
Alternatively, you can create a new attribute for the business context “master data: business partner” and apply the scenario-based integration. In this case the new attribute will be created also in the interaction contact. This has the consequence that segmentation content for the new attribute needs to be adjusted and data needs to be loaded from additional data sources as well.
Thanks for this FAQ Josef!
Something that I thought would be useful to add, is concerning mapping of Functions.
When interfacing Relations, you might get the error like "Function Z006 does not exist".
Previously, with oData-based integration, configuration for Functions was required in
Manage your solution -> Configure your solution -> Marketing | Marketing | Contacts and Profiles -> Functions for Contacts.
But, with migration to SOAP-based integration, configuration is now needed in this location instead:
Manage your solution -> Configure your solution -> Database and Data Management | Business Partner | Contact Person -> Define functions for Contact Person
What's more, this new configuration only allows for 2-digit-codes, while the previous configuration (and sales cloud) allowed for 4-digit codes.
To top off the complexity, in the "code list mapping" in Sales, you must not add mapping from the 4-digit codes of sales cloud to the 2-digit codes of marketing cloud. No, you must add two leading zeroes on the marketing side.
So if you configured in marketing cloud function code "Z6" then your mapping should be "sales = Z006 to marketing = 00Z6".
Hope this info can help,
Kr
Joyca
Hi Joyca,
the same happens for the departments.
Best regards,
Markus
Thanks for that info Joyca! I was already searching where I made a mistake... using 4-digit codes solved my problem! 🙂
Joyca Vervinckt did you already came across an error saying "Invalid namespace for Function"?
I wanted to create new entries starting with Z1 (e.g. R&D Manager) - assuming we cannot easily go on with 11 - but it says Invalid namespace? Am I doing something wrong?
Best Regards
Tobias
Hmm, no, I made my function codes on Z1, Z2, etc, as well and didn't have that error...
By the way, here is some more communication on a ticket that I had at SAP about this, as I was thinking about the limits of a 2-digit-code. If you could only use Z1 to Z9 then there's only 10 available codes, while Sales has 4-digits so can have 999 different codes.
This was their reply (so Z should be certainly within the allowed namespace)
Thanks also for that Joyca. I tried already with departments and I was able to use also values without "Z" as far as they are not in SAP namespace. Regarding the error with functions I created an incident to let SAP check that. Kind regards
Dear Tobias,
Did you by any chance already got some feedback from SAP? I'm experiencing exactly the same error..
Many thanks in advance for your feedback.
Kind regards,
Amina
Hi Amina Vloeberghs,
yes, we are in Contact with SAP Support and they told us that the issue will be fixed this weekend. So it should work again next Monday (May 24th) 🙂
BR Tobias
Hi Joyca Vervinckt thanks for sharing this solution. I just have this problem that you mention about the functions. I followed the suggested solution step by step:
However, it does not allow me to save in Marketing cloud Z1, etc ... and when I migrated from c4sales to Marketing, I keep getting the error.
Please could you tell me if you know what code I should save in marketing for it to work?
thanks in advance
Hi Carla,
Tobias Schneider had the same error regarding the namespaces. Tobias, did you get a reply on your support ticket about that?
ok Joyca gracias!
By the way, Tobias Schneider , your comment reminded me that after I wrote this comment here on this blog, I had a subsequent issue: the Function descriptions didn't appear in Segmentation. For that, you DO need the configuration on "contact" level instead of the one on "business partner" level. And you need a Badi to map the two...
I made an Influence Request about that just now with more details.
https://influence.sap.com/sap/ino/#/idea/264607
Hi Joyca, thanks for your quick reply. Okay, I already thought that something like that will be necessary... Thanks for the confirmation and the BAdI. That will save some time 😉
Hi Joyca Vervinckt
A query: When you make the previous comment you mean this phrase:
It is precisely that I am in the part of configuring the contact functions and then proceed with the implementation of the BAdi.
but the second path is not located in the system:
So, I doubt if I follow the first path (If I have it identified) to do the configuration.
Best regards
Elio C
Hi Elio,
It should be just 1 line below your screenshot on the left side.
Here it is in the overview list:
Thanks for your answer Joyca Vervinckt
I had already been looking for that option as well, and I would not think that it is a matter of roles and catalogs either.
But with the image you gave me, what I did was apply a search filter and I would understand that it is in this section.
BR.
Elio C.
Hi Josef,
very informative summary, thank you!
Hope there will be some more articles on CX Works soon! 🙂
BR Tobias
Hello Josef,
the integration with Sales Cloud now works so far that the Origin SAP_C4C_BUPA is saved as additional ID as you mentioned
Now we implemented the integration scenario "Request Marketing Permissions and Subscriptions from SAP Marketing" to display the Marketing Permissions in the Sales Cloud.
The problem is that the scenario calls the API with the Sales Cloud ID of the Contact using SAP_C4C_BUPA. As in Marketing Cloud the Origin ID is now SAP_MKT_BUPA nothing is passed back.
Maybe you have an idea how we can solve this issue.
Kind regards,
Markus
Hi Markus,
thanks for this feedback. We are not aware of this issue and would like to ask you to raise a service ticket that we can have a deeper look into your situation.
Best Regards, Josef
Thanks for pointing that out Markus, I didn't test that yet.
You are correct, I also get errors on the Marketing Permissions in Sales Cloud, but even more errors than just nothing found.
I will also open a ticket, but Josef Ehbauer my findings are:
In the meantime there is a new Version 1.1.4 of iFlow 'Request Marketing Permissions and Subscriptions from SAP Marketing' available. With this version it works fine.
Hmm, I did update this CPI artifact to that version, but I'm still getting the error "SoapFaultCode:5 An internal error occurred. For error details check [CPI]" in Sales, and in CPI it sais "Invalid system query option: '$sap-language'." :s
With the old version I never got an error. It just did not provide the data.
This is the result of a successfull message mapping:
Thanks,
turned out to be a typo in CPI in the url of the marketing cloud system. So the error message about "$sap-language" was completely irrelevant/unhelpful.
It works now for us too 🙂 (though we also had an error that the Marketing Area description was longer than 40 characters, so we had to shorten our descriptions in smc to make it work with sales)
Hi Markus Greutter Joyca Vervinckt
we're already on Version 1.1.4 but still have the same issue. And as I looked into the API Call in the iFlow it still uses SAP_C4C_BUPA as described by you above.
Did you do anything else to get it working?
BR Tobias
No, not really.
Just everything before that point needs to be working. So your bupa's from sales to marketing must be replicated using the new flows, and marketing needs to send back its confirmation & its own ID too, those are some of the other artifacts in the package.
The 1.1.4 flow still needs to work for those who are not using the SOAP interface yet, so there's some filter in there that tries to determine if you're on the SOAP version or not.
Here is a screenshot of the mapping in the artifact of version 1.1.2 vs 1.1.4.
The field "ContactPersonReceiverID" from Sales seems to be important in the determination.
Hi Joyca,
thanks again for your quick reply.
Okay, that makes sense. Then I assume it has something to do with our error we're facing in the Business Partner Confirmation (MC doesn't send its own System ID but another one...) which SAP Dev team is still checking.
In our case then I assume that C4C doesn't get the MC-BUPA ID back and thinks we're still using the old integration and by that uses of course SAP_C4C_BUPA to retrieve the permissions.
That helps a lot to understand. Thank you!
BR Tobias
Hello Josef Ehbauer,
you anser the question "Does the migration of the old ODATA to the new SOAP-based integration impact existing data?".
We have a different situation as we directly started with the SOAP-based integration between Sales and Marketing Cloud. But in the Marketing Cloud we already have Interaction Contacts which have been imported from a third-party system.
Now this third-party system shall be replaced by Sales Cloud and the data must be migrated to Sales Cloud. From my understanding if we then send an Account / Contact from Sales Cloud to Marketing Cloud a new Business Partner is created and additionally a linked Interaction Contact. But there is already the existing Interaction Contact from the import.
What would be your recommended approach?
Kind regards,
Markus
Hi Markus,
if you started already with the SOAP-based integration from the very beginning, you are in a lucky position. In this case the loaded business partner data will create interaction contacts which in turn will be merged with already existing interaction contacts, imported from the external source, if for example the email-address as matching criteria is met.
Alternatively you can also delete the data for the interaction contacts, which have been loaded from the external source as they became actually obsolete.
Best Regards, Josef
Hi Josef Ehbauer
in another question regarding Custom Fields (https://answers.sap.com/questions/13220292/sales-marketing-integration-via-soap-custom-fields.html) you pointed out that it is planned in the 2105 release to provide the possibility to enable Custom Fields - created for business context "Master Data: Business Partner" - also for Lead Replication to SAP Sales Cloud. Two questions:
Would be great if you could answer and confirm that.
Kind regards
Tobias
Hi Tobias,
Ad1: You are right that we plan to deliver in 2105 that the scenario-based integration will also enhance the LeadReplicationRequest_Out service. However, from it is advisable that you wait until the upgrade of your Q-system to the 2105 release before you apply the scenario-based integration to have this enhancement available in the lead outbound service LeadReplicationRequest_Out.
Ad2: Your assumptions are correct.
Best regards,
Josef Ehbauer
Okay cool, thanks for your quick reply Josef! 🙂
Hi Josef Ehbauer
one more question regarding that topic. Is it still possible to use Version 2 of API_MKT_CONTACT_SRV if we use the SOAP integration with Sales Cloud? If not, why do we need to use Version 4?
Because we would like to use the standard integration package from SAP for External Landing Page Integration
In the latest integration guide (2102) it is recommended to use the Communcation Arrangement SAP_COM_0342 in SAP Marketing Cloud. But this only includes Version 1 & 2 of the needed service.
What is the recommended approach if we are using the new SOA-based integration from C4C and would like to use the External Landing Page Integration package?
Kind regards
Tobias
Hi Tobias Schneider
Version 2 (and indeed the External LP integration package) completely STOP working when activating the Relationships function in SMC.
See also https://answers.sap.com/questions/13206662/activating-contact-to-account-relationships-breaks.html and https://influence.sap.com/sap/ino/#/idea/259238
I did get into contact with SAP about this, and there should be an update of the CPI flow and the linked communication arrangement in SMC for this external lp integration ready in version 2105.
Hi Joyca Vervinckt
thank you so much! I remembered that I read something about that from you, but wasn't able to find your question anymore. That helps a lot!
Okay so let's hope that SAP will provide an update on the iFlow in 2105!! Did you already try to implement the Extensibility of the current iFlow and make use of version 4 of the Contact API?
Kind regards
Tobias
No, we didn't, we decided to not spend the development effort and to just wait for the upgrade (thus postponing our go-live with the relationships feature).
We did have other integrations not running on CPI too though, that did have to change from using older versions to V4.
Tobias Schneider : the update of the CPI package for the external landing page integration is available now!
There's a new box in Configuration where you can set the Version to 4.
Hi Joyca,
that's great, thank you so much for the update! 🙂
Joyca Vervinckt
did you already try to use it with version 4?
In our case we receive an error message regarding the CorporateAccountName field. Checking the API documentation I saw that it is not included in the ContactOriginData entity set anymore.
In addition to that it looks like there are fields missing like email address. Do you know the reason for that? For me it makes no sense and I think I will create an incident for that. We need the CorporateAccountName to create B2B leads in C4C.
BR Tobias
Hi Tobias Schneider
Yes I did.
I'm not using the CorporateAccountName field though. The forms using that interface flow are from a B2C oriented area.
Regarding email: that does come through in my test.
One of the main differences from V2 to V4 is that Email is no longer part of the ContactOriginData, but really sent separately as a PUT AdditionalIDs part. Which is more logical imo, as email and mobile nrs were always "the special fields" that got transformed into an additional ID anyways.
On https://help.sap.com/viewer/0f9408e4921e4ba3bb4a7a1f75f837a7/latest/en-US/66340fe5e8d84d02b21d3af04476b3f5.html there's a chapter dedicated to "switching to Version 4" with some details.
Hi Joyca,
thanks for providing the link. I agree that the part regarding email as additional ID makes sense.
But I still can't find any logical explanation why CorporateAccountName has gone in V4.
I always seem to be a bit behind you Tobias Schneider
I'm currently working on a case where an external landing page needs to send the CorporateAccountName field.
CPI throws the error "Parsing exception for XML node <CorporateAccountName>",
and indeed when analysing the payloads and the metadata, I notice that CorporateAccountName is only present in the "Contact" structure and not in the "ContactOriginData" structure... and the iflow of course uses the ContactOriginData structure...
Did you find a solution for this?
Hi Joyca Vervinckt, I honestly don't think so 😉
In our case we're still using an older version and have not moved to V4. Not having that CorporateAccountName available was one of the reasons.
Do you know if there's already an improvement request for that?
BR Tobias
Hm, as we activated contact-to-account relationships, we're already on V4 and can't go back :s
I have a ticket open at SAP meanwhile, I'll see what they say and make an improvement request if required, but imo this is a bug and not an improvement request. Something that was available in earlier API versions can't just disappear in a newer version.
Hi Joyca Vervinckt I definitely agree. Hope SAP will provide a solution soon! :-/
Unfortunately, this was SAP's reply:
I checked your requirement with experts. With Version 4 of the API, the CorporateAccountName is not available. We suggest to use version 3 incase you need this field.
But since you mentioned that you have to use Version 4, in this case you can use the custom field and bAdi to get the required behaviour.
Please get back to us incase you have any queries.
Hi Josef Ehbauer
could you maybe briefly explain what technically happens if we switch on the Contact Projections?
Actually we integrated C4C and MC using SOA-based integration for the first time and already get Business Partners together with relationships. Some data (e.g. departments and functions) are related to the Relationship between the two Business Partners in MC (Contact and Account), which I could see in the Inspect Contact app (Relationship Category BUR001).
So, just to make sure: To activate the Contact Projections is only necessary if the same Contact is related to more than one Account in C4C. Is that correct? Or is it mandatory to activate that functionality for any other reasons?
Sorry to bother you with such basic questions.
BR Tobias
Hi Tobias,
SOAP-based integration between Sales Cloud and Marketing can be used independent from the Contact-to-Account relationship functionality, but it is a prerequisite for this capability. The new way of integration brings some advantages in terms of robustness and extensibility and is also a prerequisite for the connection of multiple Sales Cloud systems to Marketing Cloud.
If your system provides data that one contact is related at to a unique account only, it is not necessary to activate the switch for contact-to-account relationships. In this the case the basic B2B capabilities of SAP Marketing Cloud should be sufficient for the customer’s processes.
Best Regards,
Josef
Hi Josef,
thank you so much again for your reply.
That's great and makes it a little bit easier, because in this case for example the API_MKT_CONTACT_SRV v2 is still working (e.g. for the Landing Page Data Integration) 🙂
So, if the Customer at a later point in time decides to use Contact-To-Account-Relationship (because maybe in the future he will have that scenario, that a contact will be related to multiple accounts), then we could "easily" switch on that functionality because using the SOA-based integration, MC is already "prepared" for that scenario, right?
BR Tobias
Absolutely! BR, Josef
Hello Josef Ehbauer
thanks for this blog.
And I see this functionality "B2B Contact-to-Account Relationships" is currently been delivered based on integration from SAP Sales Cloud(C4C) to SAP Marketing Cloud.
Are we considering integration from SAP S4 (on-premise/Cloud) to the SAP Marketing Cloud to support this feature ? I could not see any planned innovation for this. And I have few customers and they having S4 as leading system and considering this feature.
Since S4 based integration is not being planned until 2021, we are considering for custom built integration to bring in this feature in SAP Marketing Cloud from S4. I believe we can still use the same SOAP APIs on the SAP Marketing Cloud to generate this feature. Any thoughts(suggestions) from you ?
Cheers
Kamesh
Hi Kamesh,
in order to integrate S/4HANA we recommend to use SAP Master Data Service for Business Partners. For details refer to the corresponding chapter in our integration guide.
Best Regards,
Josef
Hi Josef,
I posted a question regarding ECC integration that needs the Contact-to-Account relationship.
https://answers.sap.com/questions/13462785/best-practice-for-contact-to-account-relationship.html
Hope you can advise. Thanks!
Hello Josef Ehbauer
we are working on the SOAP-based Integration of Business Partners from Sales Cloud to Marketing Cloud. While setting up the iFlows we found out that the SOAP-interface of the Marketing Cloud does not contain any fields for the geographical location (longitude and latitude) but the outbound messages from Sales Cloud does include this fields.
Is it possible to pass geographical location in standard without custom fields?
With the OData-API this was possible.
Regards
Danny
Hi Denny,
thanks for that feedback, it seems that the SOAP-interface on SAP Marketing Cloud is missing this standard information, but it should not be a big issue to enhance the API accordingly. Kindly raise a service ticket or an Influencer Request that development can have a look at this and plan for an enhancement.
BR, Josef