V1.3.11 Released - template migration for GDPR compliance

This is the second release related to upcoming Atlassian GDPR Changes we are required to comply with. In this release we have upgraded all default system Templates, Themes and Macros to be GDPR friendly. The new templates won’t look for user data (username, display name, email address, etc) in the stored event context anymore. The data will be retrieved at “rendering time” based on the “accountId” stored in the event (like user fields, changelogs, etc.).

If you have custom templates/macros/themes don’t worry (too much). We have migrated custom template detecting and replacing old pieces of template with new ones. This is not a perfect migration so you would need to revisit your templates/macros/themes. Also personal information in events is still kept for now, old template should work.

Below are examples of the changes made automatically. Please review your own custom Templates and replace any variants that accessed user data through legacy methods:

Before (legacy non-GDPR compliant)

After (GDPR compliant)

Description

Before (legacy non-GDPR compliant)

After (GDPR compliant)

Description

#set ($fields = $context.issue.fields) #if ($fields.assignee.name.textValue()) $fields.assignee.name.asText() #else Unassigned #end

 

#set ($assigneeAccountId = $fields['assignee'].accountId.asText()) #set ($assigneeVal = $jemhUtils.getUserDescription($assigneeAccountId)) #if ($!assigneeVal) $jemhUtils.setFieldRendered() $assigneeVal #else (cant get assignee) #end

 

 

context.user.displayName.asText()

$jemhUtils.getUserDescription($context.user)

Display name is PII, getUserDescription loads the user and retrieves the display name at rendering time.

id="email_$worklog.author.name.textValue()"

id="email_$jemhUtils.getUserAccountId($worklog.author)"

User name is PII and it’s deprecated information. Atlassian will remove them from the user in March 2019. If you need some user identificator, please use the account id by calling $jemhUtils utility method.

$comment.author.avatarUrls['24x24'].asText()

$jemhUtils.getUserAvatar($comment.author,'24x24')

User avatars are PII, JEMHC loads them at rendering time from the user object

$context.entity.user.emailAddress.textValue()

$jemhUtils.getUserEmailAddress($context.entity.user)

Email addresses need to be retrieved at rendering time using $jemhUtils’s getUserEmailAddress

$baseurl/secure/ViewProfile.jspa?name=$changelogGroup.updateAuthor.name.asText()

$jemhUtils.getUserProfileUrl($changelogGroup.updateAuthor)

User profile page has changed. The new helper method will give you the correct URL based on the user’s account id.

$jemhUtils.isJiraUser($context.user.name.asText())

$jemhUtils.isJiraUser($context.user)

A way to know if a user is a real Jira user and not JEMHC’s addon user.

$changeLogItem.fromString.asText()

$jemhUtils.getChangeLogFromValue($changeLogItem)

Change log values would need be processed as they may contain account ids. The account ids need to be converted to user’s display name. This how you render a ‘from’ value of a change log.

$changeLogItem.toString.asText()

$jemhUtils.getChangeLogToValue($changeLogItem)

Like above, This how you render a ‘to’ value of a change log.

If you notice that your emails are not displaying the information correctly (e.g. macro content is rendering) or you are having problem migrating custom templates, please contact support@thepluginpeople.com referring the problem and your host url.

Next steps

In the near future, we will allow customers to opt in to Personally Identifying Information (PII) removal from Events and Preview Context. This will test that your custom templates are really and truly getting personal information at runtime and not from the event. Any “event.user.displayName” left behind would not be resolved.

Around March when Atlassian deprecation notice finishes, JEMHC will start trimming out all personal information from events. You will want to have validated all your custom templates render correctly and perform any manual replacements that could not be done automatically, before that time.

Other fixes

Some other fixes we have released in this version: