Why are we getting the error "Relationship attributes 'start_entity' or 'end_entity' parsing failed" during a dataload?

Question:

We have several entity and relations in our data model. We have been loading them in Dev and Test.

We have observed that the attached relationship data are failing. 

Mapping Name : Account_Teammember Mapping

Input File : AccToTeammember1.csv

Error : Relationship attributes 'start_entity' or 'end_entity' parsing failed

===================================================================

 

All the start object entity & End object entity are loaded and present in tenant with respective crosswalk & source table

The input has around 1.3 k records, while loading  only 1.3k records; only 109 records are successfully loading.

If we separately try to load any single record which failed, it is loading successfully.

 

Answer:

The reason why this data load job fails for some records is a wrong mapping.

Crosswalk for relationships in the mapping is configured as

"crosswalks": [  
{  "contributorProvider": false,  
"dataProvider": true,  
"sourceTable": "=source('col.0')", 
 "type": "configuration/sources/Salesforce", 
 "value": "=source('col.8')" }  ]

The value are getting from Identifiers_ID column.

 

df064015-137c-4dc8-a8b7-8a2644bcdc54.png

 

Now, let's look at the first record reported in the error file.

SourceTable,StartObject,EndObject,SourceSystem,SourceTable,StartObject_SourceTable,EndObject_SourceTable,Identifiers_Type,Identifiers_ID,Start_OBJECT_ID,End_OBJECT_ID,ROLE,errorDescription
Account.Teammember,Account,User,SFDC,Account.Teammember,Account,User,SFDC Account User Relation ID,00560000005LBfqAAG,0016000000xbmXJAAY,00560000005LBfqAAG,Account Executive,"Relationship attributes 'start_entity' or 'end_entity' parsing failed"

As you can see it has Identifiers_ID equals 00560000005LBfqAAG.

The source file has two records with the same value:

However, the values for Start_OBJECT_ID are different. So the same relationship (crosswalk value is the same) is established for different pairs of entities. As a result, the final JSON which DL prepares for loading is the following:

 

{
  "startObject": {
    "crosswalks": [
      {
        "sourceTable": "Account",
        "type": "configuration/sources/Salesforce",
        "value": "0016000000xbmXJAAY"
      },
      {
        "sourceTable": "Account",
        "type": "configuration/sources/Salesforce",
        "value": "0010z00001ViQ0sAAF"
      }
    ]
  },
  "attributes": {
    "AccountContactRole": [
      {
        "value": "Account Executive"
      }
    ]
  },
  "type": "configuration/relationTypes/AccountToContact",
  "crosswalks": [
    {
      "sourceTable": "Account.Teammember",
      "dataProvider": true,
      "type": "configuration/sources/Salesforce",
      "contributorProvider": false,
      "value": "00560000005LBfqAAG"
    }
  ],
  "endObject": {
    "crosswalks": [
      {
        "sourceTable": "User",
        "type": "configuration/sources/Salesforce",
        "value": "00560000005LBfqAAG"
      }
    ]
  }
}

This is not valid as the startObject is defined by two crosswalks.  

Was this article helpful?
0 out of 0 found this helpful

Comments

0 comments

Please sign in to leave a comment.