我需要通过S2S从组织A分享到组织B的联系人,以便在正确(先前共享)的帐户下自动显示在组织B中。使用Salesforce-to-Salesforce自动接受帐户和相关联系人
我的目标是发布组织A中的帐户A1及其相关联系人,并将它们全部自动显示在组织B中(无需手动干预),并保留相同的帐户/联系人关系。
我确信我之前做过这件事,但最后几次我做到这一点的可能性是自定义主细节记录。
有人可以澄清,如果这实际上是可能的,或S2S只支持这个真正的自定义主从关系?
到目前为止,我已经尝试了手动共享(“转发到连接” - 有和没有“转发相关记录”复选框)和自动(通过更新后和/或插入触发后的帐户和/或联系人中的PartnerNetworkConnection)分享。我也尝试了联系,然后帐户,然后帐户然后联系。我也尝试检查并取消选中联系人的“自动接受”,甚至取消选中它,在天真的希望,将导致
如果我使用触发器来自动发送联系人并填充ParentRecordId在PartnerNetworkRecordConnection记录上,联系人被共享但不被自动接受,我必须手动将其映射到帐户。如果我在未指定ParentRecordId的情况下共享它,它会自动接受,但没有任何帐户。从“帐户”中的“转发相关记录”复选框的“转发连接”似乎也执行相同的操作 - 帐户和所有子联系人都会转发,但联系人记录不会被自动接受。
我确定Salesforce-to-Salesforce处理了这个问题,但我找不到任何关于它的更多信息。任何人都有一个配方,用于自动共享和自动接受与相关联系人的帐户?
如果是代码监督(我非常怀疑它),这里是我用来共享联系人的代码。它是松散的基础上的代码示例 “Salesforce的到Salesforce最佳实践”(http://wiki.developerforce.com/page/Best_Practices_for_Salesforce_to_Salesforce)
public static void share(List<Contact> triggerNew) {
// Define connection id
Id networkId = ConnectionHelper.getConnectionId('Some Partner Connection');
Set<Id> localContactAccountSet = new Set<Id>();
List<Contact> localContactSet = new List<Contact>();
Set<Id> sharedAccountSet = new Set<Id>();
// only share records created in this org, do not add contacts received from another org.
for (Contact ct : triggerNew) {
if (ct.ConnectionReceivedId == null) {
localContactAccountSet.add(ct.AccountId);
localContactSet.add(ct);
}
}
if (localContactAccountSet.size() > 0) {
List<PartnerNetworkRecordConnection> newConns = new List<PartnerNetworkRecordConnection>();
// Get the contact account's partner network record connections
for (PartnerNetworkRecordConnection accountSharingRecord : [SELECT p.Status, p.LocalRecordId, p.ConnectionId FROM PartnerNetworkRecordConnection p WHERE p.LocalRecordId IN :localContactAccountSet]) {
// for each partner connection record for contact's account, check if it is active
if ((accountSharingRecord.status.equalsignorecase('Sent') || accountSharingRecord.status.equalsignorecase('Received')) && (accountSharingRecord.ConnectionId == networkId)) {
sharedAccountSet.add(accountSharingRecord.LocalRecordId);
}
}
if (sharedAccountSet.size() > 0) {
for (Contact ct : localContactSet) {
if (sharedAccountSet.contains(ct.AccountId)) {
PartnerNetworkRecordConnection newConnection =
new PartnerNetworkRecordConnection(
ConnectionId = networkId,
LocalRecordId = ct.Id,
SendClosedTasks = false,
SendOpenTasks = false,
SendEmails = false,
ParentRecordId = ct.AccountId);
newConns.add(newConnection);
}
}
if (newConns.size() > 0) {
database.insert(newConns);
}
}
}
}
我跟着官方(http://wiki.developerforce.com/page/An_Introduction_to_Salesforce_to_Salesforce)文档,它对我来说工作得很好。我已发布帐户和联系人,然后订阅这些对象,选中“自动映射字段”选项。你确定你没有查询ID吗? – 2012-07-25 13:47:01