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
Reference custom fields by their display name (label) as shown in Xurrent. See How to Sync Custom Fields in Xurrent for details.
Outgoing Sync
To Jira (Wiki format)
// Data Filter - Outgoing
// Convert a rich text custom field to Wiki format
def richText = entity.customFields."My Rich Text Field"?.value
if (richText) {
replica.customKeys."rich_text_converted" = nodeHelper.convertXurrentToWiki(richText)
}
To HTML-based systems
// Data Filter - Outgoing
def richText = entity.customFields."My Rich Text Field"?.value
if (richText) {
replica.customKeys."rich_text_converted" = nodeHelper.convertXurrentToHtml(richText)
}
Incoming Sync
The request's template must be known: on create, set entity.templateId first; on update, the current template is used.
From Jira (Wiki format)
// Incoming Processor
// Convert the Jira description (Wiki format) into a Xurrent rich text custom field
entity.customFields."Custom Rich Text"?.value = nodeHelper.convertWikiToXurrent(replica.description)
From HTML-based system
// Incoming Processor
entity.customFields."Custom Rich Text"?.value = nodeHelper.convertHtmlToXurrent(replica.description)