Hello team,
We are exploring the benefits of TWG and we've made a simple connector between Salesforce and the Graph.
So far, we achieved to push some data that can be queried via Rovo. It needs some guidance, but at least companies and Cases can be found.
However, we are trying to do relationships between:
To do so, we follow the approach 1 in the docs
We send a payload like this using setObjects method:
{
"connectionId": "12345678-90ab-cdef-1234-567890abcdef:fedcba98-7654-3210-fedc-ba9876543210",
"objects": [
{
"schemaVersion": "2.0",
"id": "001XX00000ABCD1XYZ",
"updateSequenceNumber": 1781106236000,
"displayName": "Acme Manufacturing Ltd",
"url": "https://example-org.my.salesforce.com/lightning/r/Account/001XX00000ABCD1XYZ/view",
"createdAt": "2026-06-10T15:43:56.000Z",
"lastUpdatedAt": "2026-06-10T15:43:56.000Z",
"permissions": [
{
"accessControls": [
{
"principals": [
{
"type": "ATLASSIAN_WORKSPACE"
}
]
}
]
}
],
"atlassian:customer-org": {
"key": "001XX00000ABCD1XYZ"
}
},
{
"schemaVersion": "2.0",
"id": "500XX00000CASE1XYZ",
"updateSequenceNumber": 1781099752000,
"displayName": "Payment Gateway Error",
"description": "Customers are unable to complete purchases through the checkout flow.",
"url": "https://example-org.my.salesforce.com/lightning/r/Case/500XX00000CASE1XYZ/view",
"createdAt": "2026-06-10T13:55:52.000Z",
"lastUpdatedAt": "2026-06-10T13:55:52.000Z",
"permissions": [
{
"accessControls": [
{
"principals": [
{
"type": "ATLASSIAN_WORKSPACE"
}
]
}
]
}
],
"atlassian:document": {
"type": {
"category": "DOCUMENT",
"mimeType": "text/plain",
"fileExtension": "case"
},
"content": {
"mimeType": "text/plain",
"text": "Payment Gateway Error\nCustomers are unable to complete purchases through the checkout flow.\nIn Progress"
},
"extractedText": "Payment Gateway Error\nCustomers are unable to complete purchases through the checkout flow.\nIn Progress",
"labels": [
"Salesforce Case",
"In Progress"
],
"exportLinks": [
{
"mimeType": "text/html",
"url": "https://example-org.my.salesforce.com/lightning/r/Case/500XX00000CASE1XYZ/view"
}
]
},
"associations": {
"lastUpdatedAt": "2026-06-10T13:55:52.000Z",
"set": [
{
"associationType": "issueIdOrKeys",
"values": [
"PROJ-123"
]
}
]
}
},
{
"schemaVersion": "2.0",
"id": "500XX00000CASE2XYZ",
"updateSequenceNumber": 1781106275000,
"displayName": "User Provisioning Failure",
"description": "Automated onboarding jobs are failing intermittently.",
"url": "https://example-org.my.salesforce.com/lightning/r/Case/500XX00000CASE2XYZ/view",
"createdAt": "2026-06-10T15:26:28.000Z",
"lastUpdatedAt": "2026-06-10T15:44:35.000Z",
"permissions": [
{
"accessControls": [
{
"principals": [
{
"type": "ATLASSIAN_WORKSPACE"
}
]
}
]
}
],
"atlassian:document": {
"type": {
"category": "DOCUMENT",
"mimeType": "text/plain",
"fileExtension": "case"
},
"content": {
"mimeType": "text/plain",
"text": "User Provisioning Failure\nAutomated onboarding jobs are failing intermittently.\nNew"
},
"extractedText": "User Provisioning Failure\nAutomated onboarding jobs are failing intermittently.\nNew",
"labels": [
"Salesforce Case",
"New"
],
"exportLinks": [
{
"mimeType": "text/html",
"url": "https://example-org.my.salesforce.com/lightning/r/Case/500XX00000CASE2XYZ/view"
}
]
},
"associations": {
"lastUpdatedAt": "2026-06-10T15:44:35.000Z",
"set": [
{
"associationType": "issueIdOrKeys",
"values": [
"OPS-456"
]
},
{
"associationType": "atlassian:customer-org",
"values": [
{
"entityId": "001XX00000ABCD1XYZ"
}
]
}
]
}
},
{
"schemaVersion": "2.0",
"id": "00AXX00000COMM1XYZ",
"updateSequenceNumber": 1781170158000,
"displayName": "Please prioritize this issue",
"url": "https://example-org.my.salesforce.com/lightning/r/Case/500XX00000CASE2XYZ/view#comment-00AXX00000COMM1XYZ",
"createdAt": "2026-06-11T09:29:18.000Z",
"lastUpdatedAt": "2026-06-11T09:29:18.000Z",
"createdBy": {
"externalId": "005XX00000USER1XYZ"
},
"permissions": [
{
"accessControls": [
{
"principals": [
{
"type": "ATLASSIAN_WORKSPACE"
}
]
}
]
}
],
"parentKey": {
"type": "atlassian:document",
"value": {
"entityId": "500XX00000CASE2XYZ"
}
},
"containerKey": {
"type": "atlassian:space",
"value": {
"entityId": "10042"
}
},
"atlassian:comment": {
"text": "Please prioritize this issue. Several users have reported the same problem this morning."
}
}
] I can see all of them are correctly digested. Also, I'm aware of the limited relationships visible so far as explained in docs
But then, when we talk with Rovo, the relationship seems to be missing and no related objects appear.
What should we do to make it work properly?
Thanks,
Álvaro
Welcome to the Community, @alvaro_lopez
One thing worth checking is whether the relationships you're creating are actually among the Teamwork Graph "Supported relationship types." Atlassian's documentation currently lists a limited set of association combinations that are guaranteed to create traversable relationships in the graph. I don't see examples for customer-org → document, document → document, or comment → document relationships similar to your Salesforce Case model, so it's possible the objects are ingesting correctly but Rovo isn't able to use those links yet.
https://developer.atlassian.com/platform/teamwork-graph/create-relationships/
I understand that some relationships are still not valid for Rovo even though we can consume them.
However, in the basic example of a Document linked to a work item, we couldn’t make it work so Rovo can find the relationship.
Eventually, we have decided to add more context in the descriptions and other metadata so it can infer the relationships but without the actual links.
Thanks for your help!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.