For complex mapping, functions have to be implemented separately. See the demo package under Downloads. |
In case you need the freedom of e.g.:
A function can be used either on the left or on the right hand side of the mapping table:

The syntax is as follows:
call:Perl::Path::Module,functionName |
Functions called on the left hand side, the function mapOTRSOptionFieldDemoUser2JIRAAssignee in the screenshot above, will be passed three parameters:
my ($TicketJIRAObj, $fieldmapping, %Ticket) = @_; |
Functions called on the right hand side, the function mapOTRSOptionToJIRAOption in the screenshot above, will be passed four parameters:
A Hash of key => values for Jira, e.g.:
{
project => { key => "ASDF" },
issuetype => { name => "Bug" },
summary => "Title from the Article",
description => "The multi line Body of the Article",
reporter => { name => "Reporter" },
assignee => { name => "Assignee" },
customfield_12345 => "Value",
customfield_12346 => 42,
} |
my ($TicketJIRAObj, $val, $fields, %Ticket) = @_; |
A Complete example of a installable OTRS Package (OPM) is available at bitbucket.org/cwx/jirademoplugins. This Package actually makes use of additional settings that are defined in an included XML file. Feel free to explore the examples included therein. |
Strictly speaking you can do anything, even just create a value to be send to Jira for a special field.
| Key | Contents |
|---|---|
call:Douglas::Adams::HHGTTG,answer | cust:answer |
package call:Douglas::Adams;
use strict;
sub answer {
my ($TicketJIRAObj, $fieldmapping, %Ticket) = @_; // ignored in this example anyway
return 42; // this is the only important answer anyway :-)
} |