Sync Issue with JIRA Cloud and Azure DevOps

Originally asked by Manvir Heer on 28 May 2021 (original question)


I want to sync the story points from Azure Devops to Jira Cloud. How can I know which field is custom field and custom key, and when I should use the value at the end. I hope someone can answer this question.

unknown is Jira Cloud and azure_saasberry is Azure DevOps

Below are all the possible scenerios which I think might be valid:

unknown.issue.“Story point estimate” = azure_saasberry.issue.“Story Points”

unknown.issue.“Original estimate” = azure_saasberry.issue.“Original Estimate”

unknown.issue.customFields.“Story point estimate” = azure_saasberry.issue.customFields.“Story Points”

unknown.issue.customFields.“Original estimate” = azure_saasberry.issue.customFields.“Original Estimate”

unknown.issue.customKeys.“Story point estimate” = azure_saasberry.issue.customKeys.“Story Points”

unknown.issue.customKeys.“Original estimate” = azure_saasberry.issue.customKeys.“Original Estimate”

//With Value

unknown.issue.“Story point estimate”.value = azure_saasberry.issue.“Story Points”.value

unknown.issue.“Original estimate”.value = azure_saasberry.issue.“Original Estimate”.value

unknown.issue.customFields.“Story point estimate”.value = azure_saasberry.issue.customFields.“Story Points”.value

unknown.issue.customFields.“Original estimate”.value = azure_saasberry.issue.customFields.“Original Estimate”.value

unknown.issue.customKeys.“Story point estimate”.value = azure_saasberry.issue.customKeys.“Story Points”.value

unknown.issue.customKeys.“Original estimate”.value = azure_saasberry.issue.customKeys.“Original Estimate”.value


Answer by Ariel Aguilar on 28 May 2021

Hi Manvir,

CustomFields are used to expose full field values, normally if the custom field type is supported by exalate, replica.customFields.foo is the preferred way to share a customfield value. Custom field value for some custom field types could be a complex object, which may be later on used in other ways than just assigning it to a remote custom field.

For example, all the user pickers (custom fields, which store users), should normally be identified as such, and in the create / change processor a user from the value of such a custom field could be used to set the assignee / reporter or other user fields throughout the Jira.

CustomKeys are a helper tool to pass some additional information (not obligatory connected to custom fields) to the other side. An administrator on one side might calculate some things in the data filter, and pass the calculated results to the remote side by assigning the results to a customKey.

The important thing to remember about the custom keys is that the data in the custom keys should be as simple as possible, as exalate just plainly tries to send the value as is, and if the custom key value is a complex object, it may have problems to be serialized: Strings, Numbers, (any other primitive types), Maps, Collections are just fine, but replica.customKeys.foo = issue.customFields.foo.value might be a problem if the foo custom field is not supported by exalate.

For Story Points for visual connection we have documentation that might help:

https://docs.idalko.com/exalate/x/vAXHAw

Then you might want to do:

unknown.issue."Story Points" = azure_saasberry.issue."Microsoft.VSTS.Scheduling.StoryPoints"
azure_saasberry.issue."Microsoft.VSTS.Scheduling.StoryPoints" = unknown.issue."Story Points"

Then for the OriginalEstimate could you please confirm where is the value coming from? Are you using a plugin?

Kind regards,

Ariel