Salesforce Custom Object Sync - 2 Levels Down | Community
Skip to main content
Ben_Neal1
New Participant
March 26, 2018
Solved

Salesforce Custom Object Sync - 2 Levels Down

  • March 26, 2018
  • 3 replies
  • 6161 views

I'm trying to sync a custom object in Salesforce to Marketo that has a custom junction/MtM object in between it and the Contact but the object isn't available in the list of objects to sync. The entity relationship looks like this: Contact < MtM__c > Membership__c. This can be read as as "a Contact can be associated to many Memberships and a Membership can be associated to many Contacts. Is this type of relationship supported in the Salesforce Custom Object sync?

I see the MtM object is available for syncing, but I would also expect to see the Membership object under that MtM object if supported. I believe permissions are configured correctly. Marketo has the disclaimer "Marketo only supports custom entities that are linked to standard entities one or two levels deep. " That statement isn't clear if a custom entity linked to another custom entity is supported.

Any thoughts? Do I have to use the non-Salesforce custom object to pull in this relationship?

Thanks!

Ben Neal

Best answer by Veronica_Holme4

Hi Ben - I'd expect that to be available for syncing under normal circumstances since you've already stated Velocity scripting limitations don't worry you. What's the relationship between the MtM object and the Membership object? Junction objects are not usually an issue for Marketo so I'd wonder 1) how the relationship between those custom objects is created, and 2) have you given the Marketo sync user permission to read that custom object you're looking for in Salesforce.

For the relationship to be recognised, you need a Lookup or Master/Detail relationship for the sync to see it.

V

3 replies

New Participant
September 7, 2023

For anyone who landed here looking for guidance on setting up complicated many-to-many custom object synchs, Here is an example of something I tested.

 

Here is our setup. There is a Many-to-many mapping that can happen between Leads, Accounts and "Tenant" objects. This is done through an intermediary "Tenant Mapping" object. To complicate things, the Lead and Account could point directly to a Tenant, not going through an intermediary object (but I didn't care about that scenario for Marketo setup purposes).

This is what the Salesforce Object Sync map looks like when you refresh the schema. You can see that, under the Lead, there is a "Tenant" listed directly (this is for getting the tenant that's directly linked to the Lead), and there is a "Tenant Mapping" with a "Tenant - Lead" underneath. That's the one we want to sync over - because it uses the many-to-many intermediate object. Note that "Tenant - Lead" and "Tenant - Account" originally came through as just "Tenant". You have to rename them so they're unique. Marketo will pull the data only once (it won't create copies of the Tenant rows) - this is just a cosmetic renaming you need to do.

 

Sync only the objects in green. Marketo will "implied sync" the intermediate object.

Detailed view. You can see how many of the Tenant objects are available in SFDC, vs. how many were brought over to Marketo. If you refresh this window during initial sync, you'll see the Marketo go up on each refresh.

The result:

  • For people who are SFDC Leads, Marketo is aware of all the Tenant objects connected to them.
  • For Contacts, Marketo will look into the Tenants associated with the Account they belong to. That means all the Contacts under an Account will be aware of all the Tenants that the Account is connected to. 
  • Again, because the linkage between Lead->Tenant and Account->Tenant is a lookup field, Marketo won't update the Tenant data until the Lead or the Account is updated. Each time you alter/add a Tenant / Tenant Mapping record, you have to update the associated Lead/Account.
  • Because the Tenant objects have different names and are seen as different filter conditions, your filters have to check both: in case the Marketo Person is a SFDC Lead or a SFDC Contact

Huge thanks to Veronica Holmes who explained a lot of this in the following video: https://www.youtube.com/watch?v=qXt1CPMZReA 

Veronica_Holme4
Veronica_Holme4Accepted solution
New Participant
March 28, 2018

Hi Ben - I'd expect that to be available for syncing under normal circumstances since you've already stated Velocity scripting limitations don't worry you. What's the relationship between the MtM object and the Membership object? Junction objects are not usually an issue for Marketo so I'd wonder 1) how the relationship between those custom objects is created, and 2) have you given the Marketo sync user permission to read that custom object you're looking for in Salesforce.

For the relationship to be recognised, you need a Lookup or Master/Detail relationship for the sync to see it.

V

Ben_Neal1
Ben_Neal1Author
New Participant
March 30, 2018

Hi Veronica Holmes​. I was able to get 2nd level custom objects synced. It was a field level permission issue that was not allowing the 2nd level object to be synced. Thanks for the follow up.

Veronica_Holme4
New Participant
March 31, 2018

It'd be great if you could mark the thread as answered.

Grégoire_Miche2
New Participant
March 26, 2018

Yes it is supported, but in reality not very practical.

See this discussion on the very same topic.

-Greg

Ben_Neal1
Ben_Neal1Author
New Participant
March 26, 2018

Thanks @Grégoire Michel​. Looking around it seems that a 2nd level object isn't recommended due to Velocity Script integration issues, but is otherwise supported. If my goal is to sync this 2nd level Salesforce object to Marketo with as little additional modification and effort and I only plan to filter based on this object - not needing Velocity - is there something else that makes this "impractical"?

Grégoire_Miche2
New Participant
March 26, 2018

Hi Ben,

No, nothing else

-Greg