Why when I used "master:false", no records were fetched, but when I removed that feature, it fetched records as expected?
You probably have ALL objects in you configuration set to *master:false. *
Let see the example of three related objects:
{
"objects": [
{
"query": "SELECT all FROM Contact",
"operation": "Upsert",
"externalId": "Name",
"master": false
},
{
"query": "SELECT all FROM Account",
"operation": "Upsert",
"externalId": "Name",
"master": false
},
{
"query": "SELECT all FROM AccountContactRelation",
"operation": "Upsert",
"externalId": "AccountId;ContactId",
"master": false
}
]
}
In this case the Plugin will try to resolve the related records between the objects and probably nothing will be fetched.
The resolution.
Put the Account object to master:true (it's a default value, simple
remove this property).
Leave the configuration for the AccountContactRelation and Contact
as master:false so they will remain like a "slave" objects and their
records will be fetched automatically in relation to the fetched Account
records:
{
"objects": [
{
"query": "SELECT all FROM Contact",
"operation": "Upsert",
"externalId": "Name",
"master": false
},
{
"query": "SELECT all FROM Account",
"operation": "Upsert",
"externalId": "Name"
},
{
"query": "SELECT all FROM AccountContactRelation",
"operation": "Upsert",
"externalId": "AccountId;ContactId",
"master": false
}
]
}