JEMH Features

Profiles

Profiles are top level containers for configuration. When a JEMH inbound mail handler is configured, a Profile will be selected from a list (so a Profile will need to be created before the mail handler can be configured).

A single Profile can route mails from one mailbox to multiple projects, thereby addressing a major scalability issue with the default mail handlers. Multiple Profiles can be configured if required.

Profiles and all their related configuration (with the exception of custom template references) can be exported as XML, for easy migration between environments as well as for support purposes.

Profiles contain a Configuration, that defines how JEMH processes emails, these are broken down into various categories:

Security

Places where Privileged User is required:

  • Issue Commenting - used to perform a search and locate the existing issue.

  • JQL Thread Match Rejection - used to perform custom JQL query searches on existing issues to validate commenting

  • Regex Field Processor - used for issue association. In order to perform a search and locate the existing issue.

  • Email Participant Processing - in order to add the sender and email addressees to the request participants field.

  • Sender Processing - in order to add the sender who is a member of the organization as a request participant.

  • Issue Security - in order to retrieve security levels and set issue security on an issue.

  • Project Mapping - in order to add a group to a given project role.

  • Project Mapping - in order to set Epic Link custom field with the value.

  • User - in order to auto-create new Jira users and create Groups, typically auto-joining users to them.

Issue Security

Issue Visibility

Jira Service Desk

Project

User

User Creation

Issue

Dates

Loop Detection

Aliases

Aliases are versatile mechanisms for providing short cuts to common directives, e.g. an Alias bug with value issueType=bug allows a Directive of @bug to be used. Additionally, Aliases can be used to provide a mapping from some other source that happens to match a supported JEMH Field Processor format, for example, if a remote system created a value:

Related Systems: this,that,the other

This value could be mapped to components by setting up an Alias components with a value of Related Systems.

Email

Email Selection

Message Filtering

Pre-processing

Thread Matching

HTML

Labels

Auto Labelling (keywords)
Ignores and Substitutions

When processing subject words, this configuration will allow for substitutions (e.g. to correct common typos) and to ignore specific words.

Auto-labelling (sender domain)

Attachments

Add Email/original content to issue

If enabled, will create a ZIP wrapper containing the original content (text or HTML), and if selected, a full copy of the email (stored in neutral message/rfc822 EML text format).

File Name Format - replacements

Addresses

Sender Processing

Jira User
Jira Service Management
Non-Jira user

Addressee Processing

Distribution List Extraction

Assignee

Templates

Identifies the templates and format that should be used for:

Queue

Allowlist

Allowlist

Blocklist

Notifications

Forward User

Hint Notifications

Issue Events

Directives

Field Processors

Defaults

Field Processor Enablement

Third Party Field Processor Enablement

Project Mappings

Project

Issue

Groups
Auto Join Groups
Issue Security

Pre-Processing

Comment

Core/Software
Service Desk

Email

Custom Field Defaults

Custom Field Defaults allow arbitrary Custom Fields to have default values specified.

Workflows

Allows workflow transitions to be conditionally triggered when its respective project mapping is matched.

Blacklisting

Blacklisting is where global blacklist configuration can be made. These settings allows, for example, 'Out of office' emails to be explicitly blocked for all configurations (over and above what is defined within a Configuration.

Template Sets

Template Sets allow configuration of all JEMH injected text and/or notification content, providing Subject, and Text/HTML content template editing as applicable.

JEMH Template Sets and 'normal' JIRA notifications

To be clear, JEMH Templates are not replacements for JIRA email templates and do not change them, primarily this is due to a 'bug' that the default Atlassian Issue Event Listener cannot be removed/replaced JRA-19957.

JEMH contains velocity templates for its notifications within the plugin. TemplateSets provide a means for the end user to customise the content of emails sent by JEMH without requiring unpacking /repacking/ redeploying of the plugin. JEMH allows customisation to vary, so that different projects can receive different styles (though at this time, JEMH does not help you design those emails).

Template Set: JEMH Comment Header

This is a simple comment header that prefixes inbound email descriptions/comments indicating that the value came via email, and who it was supposedly sent from:

Template Set: Issue Event Template Set

@Since 1.2
Issue Event templates are also included, specifically for use with non JIRA account holder notifications.

Issue Event Templates, unlike JEMH Templates are not bundled with JEMH, they are read from JIRA. When an Issue Event Template Set is created, a snapshot of the current JIRA Template is made, allowing that particular template to be customized for one particular project, or shared across several. Future changes in JIRA may require maintenance to these templates, that work must be accepted as part of upgrade testing!

The Issue Event templates are located in JIRA under $JIRA_INSTALL/atlassian-jira/WEB-INF/classes/templates/email/...

JEMH Issue Event Template Sets provide a means to not only customize the Text and HTML content, but also the subject, to a point. Rendered templates are the same as JIRA users receive.

Template Set: HintOgram Template Set

The HintOgram optional mechanism is JEMH's way of communicating processing failure. Due to the noise that this can create, these notifications can be routed to an admin (who could perhaps fix the problem or communicate to the user that priority: broken is not valid).

HintOgram emails look like:

HTML

Text

Template Set: Forward Template Set

Forwarded mail is sent on by JEMH to a nominated user email address, in the format selected as preferred by that user. The templates are currently 'functional' but can be customised.

Template Sets - how are they 'used'

JEMH Profiles define how most TemplateSets are used, if the 'Default' is selected, the uncustomized 'internal' default JEMH template is used.

why are 'Create Issue' notifications in JEMH Profiles?

Due to JEMH heritage, the issue created event was the first created, and is driven by JEMH after it has finished doing everything. Currently JEMH does issue creation in two stages, 1) creation, and 2) setting various custom fields. At this time, the Issue Event notification can't send out notifications to non JIRA account holders in response to emails because the custom fields are not populated at the time that (1) occurs.

The Issue Event listener config does list issue created, as it is possible that a JIRA user may create an issue, and manually include non-jira user email addresses.

This will be fixed at some point after all key features are in place.

Test Cases

Test Cases allow rapid testing of email content against configurations and completely bypasses inbound mail handlers, so a configuration can be validated before being hooked up to the outside world. A TestCase email is the native raw text email content that travels over the wire, not just content. Test Cases can be generated from Audit log information for problem diagnosis.

Notifications

Notifications are configured on a per project basis to notify users by email addresses found in a custom field (that JEMH can be configured to populate on the way in). Notifications can use default templates, or make use of customised content through the Issue Event Template Sets.

Certificates

An initial implementation of GPG Security for signed email validation. This implementation natively executes GPG binaries, and has been validated on Linux only, other platforms should work.

Auditing

Auditing allows a historic view over processed data, enabling tracing of an email to an issue.

An audit log for the processing is available that @Since 1.2 contains any Hints that were generated as part of processing that may have caused the processing to fail for some reason (e.g. reporter doesn't have correct permissions for action).

All inbound mail is captured and stored (on the file system under JIRA_HOME/data/jemh) irrespective of processing status

Audit mail can be exported (for support/diagnostic purposes) as well as being converted into a Test Case for local configuration testing.

Credits

@Since 1.2
As the application grows, various libraries and third party components are being pulled in. The credits section provides attribution to the author(s) of those works and indicates the license under which they are used.

Licensing

Always available, provides access to current license status, as well as the online shop.