Xurrent uses its own rich text format for comments and custom fields. When syncing with other systems like Jira, ServiceNow, or Zendesk, you need to convert between formats.
This guide explains how to use the NodeHelper methods to convert rich text in your sync rules.
Available NodeHelper Methods
| Method | From | To | Use Case |
|---|---|---|---|
convertWikiToXurrent(text) | Wiki/Jira | Xurrent | From Jira to Xurrent |
convertHtmlToXurrent(text) | HTML | Xurrent | From ADO to Xurrent |
convertXurrentToWiki(text) | Xurrent | Wiki/Jira | From Xurrent to Jira |
convertXurrentToHtml(text) | Xurrent | HTML | From Xurrent to ADO |
stripHtml(text) | HTML | Plain text | Remove all formatting |
Limitations
Jira Wiki → Xurrent (convertWikiToXurrent)
The following Jira Wiki elements are NOT supported and will not be converted:
| Element | Jira Wiki Syntax | Status |
|---|---|---|
| Tables | | or || | Not supported |
| Code Snippets (with language) | {code:java}...{code} | Not supported |
| Action Items / Checkboxes | [x] or [ ] | Not supported |
| Panels | {panel}...{panel} | Not supported |
| Macros | {jira:KEY-123} | Not supported |
Xurrent → Jira Wiki (convertXurrentToWiki)
The following Xurrent elements are NOT supported and will not be converted:
| Element | Xurrent Syntax | Status |
|---|---|---|
| Tables | N/A | Not supported |
| Record References | <request#456> | Not supported |
Note: Basic formatting (bold, italic, headers, lists, links, images, quotes, code blocks) is fully supported in both directions.
Syncing Comments
Outgoing Sync (Xurrent → Other System)
To Jira (Wiki format)
// Data Filter - Outgoing to Jira
// Convert Xurrent comments to Jira Wiki format and exclude internal comments
replica.comments = entity.comments.findAll { !it.internal }.each {
it.body = nodeHelper.convertXurrentToWiki(it.body)
}
To ADO (HTML format)
// Data Filter - Outgoing to Zendesk or ServiceNow
// Convert Xurrent comments to HTML format and exclude internal comments
replica.comments = entity.comments.findAll { !it.internal }.each {
it.body = nodeHelper.convertXurrentToHtml(it.body)
}
To Plain Text (strip all formatting)
// Data Filter - Outgoing as plain text
// Strip all formatting from comments
replica.comments = entity.comments.findAll { !it.internal }.each {
it.body = nodeHelper.stripHtml(nodeHelper.convertXurrentToHtml(it.body))
}
Incoming Sync (Other System → Xurrent)
From Jira (Wiki format)
// Incoming Processor - From Jira
// Convert Jira Wiki comments to Xurrent format
replica.comments.each {
it.body = nodeHelper.convertWikiToXurrent(it.body)
}
entity.comments = commentHelper.mergeComments(issue, replica)
From ADO (HTML format)
// Incoming Processor - From Zendesk or ServiceNow
// Convert HTML comments to Xurrent format
replica.comments.each {
it.body = nodeHelper.convertHtmlToXurrent(it.body)
}
entity.comments = commentHelper.mergeComments(issue, replica)
Syncing Rich Text Custom Fields
Outgoing Sync
To Jira (Wiki format)
// Data Filter - Outgoing
// Convert a rich text custom field to Wiki format
def richTextField = entity.customFields."my_rich_text_field"?.value
if (richTextField) {
replica.customKeys."rich_text_converted" = nodeHelper.convertXurrentToWiki(richTextField)
}
To HTML-based systems
// Data Filter - Outgoing
def richTextField = entity.customFields."my_rich_text_field"?.value
if (richTextField) {
replica.customKeys."rich_text_converted" = nodeHelper.convertXurrentToHtml(richTextField)
}
Incoming Sync
From Jira (Wiki format)
// Incoming Processor
// Convert Wiki format to Xurrent for a custom field
entity.customFields."custom_rich_text" = nodeHelper.getCustomField(247648, "custom_rich_text",nodeHelper.convertWikiToXurrent(replica.description))
From HTML-based systems
// Incoming Processor
entity.customFields."custom_rich_text" = nodeHelper.getCustomField(247648, "custom_rich_text",nodeHelper.convertHtmlToXurrent(replica.description))