ZnunyHelper#
NAME#
Kernel::System::ZnunyHelper
DESCRIPTION#
All ZnunyHelper functions.
PUBLIC INTERFACE#
new()#
create an object. Do not use it directly, instead use:
use Kernel::System::ObjectManager;
local $Kernel::OM = Kernel::System::ObjectManager->new();
my $ZnunyHelperObject = $Kernel::OM->Get('Kernel::System::ZnunyHelper');
_ItemReverseListGet()#
checks if a item (for example a service name) is in a reverse item list (for example reverse %ServiceList) with case sensitive check
my $ItemID = $ZnunyHelperObject->_ItemReverseListGet($ServiceName, %ServiceListReverse);
Returns:
my $ItemID = 123;
_PostmasterXHeaderAdd()#
This function adds a Postmaster X-Header to the list of Postmaster X-Headers to the SysConfig.
my $Success = $ZnunyHelperObject->_PostmasterXHeaderAdd(
Header => 'X-OTRS-OwnHeader'
);
or
my $Success = $ZnunyHelperObject->_PostmasterXHeaderAdd(
Header => [
'X-OTRS-OwnHeader',
'AnotherHeader',
]
);
_PostmasterXHeaderRemove()#
This function removes a Postmaster X-Header from the list of Postmaster X-Headers in the SysConfig.
my $Success = $ZnunyHelperObject->_PostmasterXHeaderRemove(
Header => 'X-OTRS-OwnHeader'
);
or
my $Success = $ZnunyHelperObject->_PostmasterXHeaderRemove(
Header => [
'X-OTRS-OwnHeader',
'AnotherHeader',
]
);
_EventAdd()#
This function adds an Event to the list of Events of an Object to the SysConfig.
my $Success = $ZnunyHelperObject->_EventAdd(
Object => 'Ticket', # Ticket, Article, Queue...
Event => 'MyCustomEvent'
);
or
my $Success = $ZnunyHelperObject->_EventAdd(
Object => 'Ticket',
Event => [
'MyCustomEvent',
'AnotherCustomEvent',
]
);
_EventRemove()#
This function removes an Event to the list of Events of an Object to the SysConfig.
my $Success = $ZnunyHelperObject->_EventRemove(
Object => 'Ticket', # Ticket, Article, Queue...
Event => 'MyCustomEvent'
);
or
my $Success = $ZnunyHelperObject->_EventRemove(
Object => 'Ticket',
Event => [
'MyCustomEvent',
'AnotherCustomEvent',
]
);
_ValidDynamicFieldScreenListGet()#
Returns a list of valid screens for dynamic fields.
my $ValidDynamicFieldScreenList = $ZnunyHelperObject->_ValidDynamicFieldScreenListGet(
Result => 'ARRAY', # HASH or ARRAY, defaults to ARRAY
);
Returns as HASH:
my $ValidDynamicFieldScreenList = {
'DynamicFieldScreens' => {
'Ticket::Frontend::AgentTicketZoom###DynamicField' => 'AgentTicketZoom',
'Ticket::Frontend::AgentTicketZoom###ProcessWidgetDynamicField' => 'ProcessWidgetDynamicField'
[...]
},
'DefaultColumnsScreens' => {
'DashboardBackend###0110-TicketEscalation' => 'DashboardWidget TicketEscalation',
'DashboardBackend###0130-TicketOpen' => 'DashboardWidget TicketOpen',
[...]
}
};
Returns as ARRAY:
my $ValidDynamicFieldScreenList = {
'DynamicFieldScreens' => [
'Ticket::Frontend::AgentTicketZoom###DynamicField',
'Ticket::Frontend::AgentTicketZoom###ProcessWidgetDynamicField',
[...]
],
'DefaultColumnsScreens' => [
'DashboardBackend###0110-TicketEscalation',
'DashboardBackend###0130-TicketOpen',
[...]
]
};
_DefaultColumnsGet()#
This function returns the DefaultColumn Attributes of the requested SysConfigs.
my @Configs = (
'Ticket::Frontend::AgentTicketStatusView###DefaultColumns',
'Ticket::Frontend::AgentTicketQueue###DefaultColumns',
'Ticket::Frontend::AgentTicketResponsibleView###DefaultColumns',
'Ticket::Frontend::AgentTicketWatchView###DefaultColumns',
'Ticket::Frontend::AgentTicketLockedView###DefaultColumns',
'Ticket::Frontend::AgentTicketEscalationView###DefaultColumns',
'Ticket::Frontend::AgentTicketSearch###DefaultColumns',
'Ticket::Frontend::AgentTicketService###DefaultColumns',
# substructure of DefaultColumns
'DashboardBackend###0100-TicketPendingReminder',
'DashboardBackend###0110-TicketEscalation',
'DashboardBackend###0120-TicketNew',
'DashboardBackend###0130-TicketOpen',
# substructure of DefaultColumns
'AgentCustomerInformationCenter::Backend###0100-CIC-TicketPendingReminder',
'AgentCustomerInformationCenter::Backend###0110-CIC-TicketEscalation',
'AgentCustomerInformationCenter::Backend###0120-CIC-TicketNew',
'AgentCustomerInformationCenter::Backend###0130-CIC-TicketOpen',
);
my %Configs = $ZnunyHelperObject->_DefaultColumnsGet(@Configs);
Returns:
my %Configs = (
'Ticket::Frontend::AgentTicketStatusView###DefaultColumns' => {
Title => 2,
CustomerUserID => 1,
DynamicField_DropdownTest => 1,
DynamicField_Anotherone => 2,
},
'DashboardBackend###0100-TicketPendingReminder' => {
Title => 2,
CustomerUserID => 1,
DynamicField_DropdownTest => 1,
DynamicField_Anotherone => 2,
},
);
_DefaultColumnsEnable()#
This function enables the given Attributes for the requested DefaultColumns.
my %Configs = (
'Ticket::Frontend::AgentTicketStatusView###DefaultColumns' => {
Title => 2,
CustomerUserID => 1,
DynamicField_DropdownTest => 1,
DynamicField_Anotherone => 2,
},
'DashboardBackend###0100-TicketPendingReminder' => {
Title => 2,
CustomerUserID => 1,
DynamicField_DropdownTest => 1,
DynamicField_Anotherone => 2,
},
'Ticket::Frontend::AgentTicketQueue###DefaultColumns' => {},
'Ticket::Frontend::AgentTicketResponsibleView###DefaultColumns' => {},
'Ticket::Frontend::AgentTicketWatchView###DefaultColumns' => {},
'Ticket::Frontend::AgentTicketLockedView###DefaultColumns' => {},
'Ticket::Frontend::AgentTicketEscalationView###DefaultColumns' => {},
'Ticket::Frontend::AgentTicketSearch###DefaultColumns' => {},
'Ticket::Frontend::AgentTicketService###DefaultColumns' => {},
'DashboardBackend###0110-TicketEscalation' => {},
'DashboardBackend###0120-TicketNew' => {},
'DashboardBackend###0130-TicketOpen' => {},
'AgentCustomerInformationCenter::Backend###0100-CIC-TicketPendingReminder' => {},
'AgentCustomerInformationCenter::Backend###0110-CIC-TicketEscalation' => {},
'AgentCustomerInformationCenter::Backend###0120-CIC-TicketNew' => {},
'AgentCustomerInformationCenter::Backend###0130-CIC-TicketOpen' => {},
);
my $Success = $ZnunyHelperObject->_DefaultColumnsEnable(%Configs);
Returns:
my $Success = 1;
_DefaultColumnsDisable()#
This function disables the given Attributes for the requested DefaultColumns.
my %Configs = (
'Ticket::Frontend::AgentTicketStatusView###DefaultColumns' => {
Title => 2,
CustomerUserID => 1,
DynamicField_DropdownTest => 1,
DynamicField_Anotherone => 2,
},
'DashboardBackend###0100-TicketPendingReminder' => {
Title => 2,
CustomerUserID => 1,
DynamicField_DropdownTest => 1,
DynamicField_Anotherone => 2,
},
'Ticket::Frontend::AgentTicketQueue###DefaultColumns' => {},
'Ticket::Frontend::AgentTicketResponsibleView###DefaultColumns' => {},
'Ticket::Frontend::AgentTicketWatchView###DefaultColumns' => {},
'Ticket::Frontend::AgentTicketLockedView###DefaultColumns' => {},
'Ticket::Frontend::AgentTicketEscalationView###DefaultColumns' => {},
'Ticket::Frontend::AgentTicketSearch###DefaultColumns' => {},
'Ticket::Frontend::AgentTicketService###DefaultColumns' => {},
'DashboardBackend###0110-TicketEscalation' => {},
'DashboardBackend###0120-TicketNew' => {},
'DashboardBackend###0130-TicketOpen' => {},
'AgentCustomerInformationCenter::Backend###0100-CIC-TicketPendingReminder' => {},
'AgentCustomerInformationCenter::Backend###0110-CIC-TicketEscalation' => {},
'AgentCustomerInformationCenter::Backend###0120-CIC-TicketNew' => {},
'AgentCustomerInformationCenter::Backend###0130-CIC-TicketOpen' => {},
);
my $Success = $ZnunyHelperObject->_DefaultColumnsDisable(%Configs);
Returns:
my $Success = 1;
_DynamicFieldsDefaultColumnsGet()#
Returns the DefaultColumn attributes of the requested SysConfigs, reduced to dynamic fields.
my @Configs = (
'Ticket::Frontend::AgentTicketStatusView###DefaultColumns',
'Ticket::Frontend::AgentTicketQueue###DefaultColumns',
'Ticket::Frontend::AgentTicketResponsibleView###DefaultColumns',
'Ticket::Frontend::AgentTicketWatchView###DefaultColumns',
'Ticket::Frontend::AgentTicketLockedView###DefaultColumns',
'Ticket::Frontend::AgentTicketEscalationView###DefaultColumns',
'Ticket::Frontend::AgentTicketSearch###DefaultColumns',
'Ticket::Frontend::AgentTicketService###DefaultColumns',
# substructure of DefaultColumns
'DashboardBackend###0100-TicketPendingReminder',
'DashboardBackend###0110-TicketEscalation',
'DashboardBackend###0120-TicketNew',
'DashboardBackend###0130-TicketOpen',
# substructure of DefaultColumns
'AgentCustomerInformationCenter::Backend###0100-CIC-TicketPendingReminder',
'AgentCustomerInformationCenter::Backend###0110-CIC-TicketEscalation',
'AgentCustomerInformationCenter::Backend###0120-CIC-TicketNew',
'AgentCustomerInformationCenter::Backend###0130-CIC-TicketOpen',
);
my %Configs = $ZnunyHelperObject->_DynamicFieldsDefaultColumnsGet(@Configs);
Returns:
my %Configs = (
'Ticket::Frontend::AgentTicketStatusView###DefaultColumns' => {
DropdownTest => 1,
Anotherone => 2,
},
'DashboardBackend###0100-TicketPendingReminder' => {
DropdownTest => 1,
Anotherone => 2,
},
);
_DynamicFieldsScreenGet()#
This function returns the defined dynamic fields in the screens.
my @Configs = (
'Ticket::Frontend::AgentTicketSearch###Defaults###DynamicField',
'Ticket::Frontend::CustomerTicketZoom###FollowUpDynamicField',
'Ticket::Frontend::AgentTicketSearch###SearchCSVDynamicField',
);
my %Configs = $ZnunyHelperObject->_DynamicFieldsDefaultColumnsGet(@Configs);
Returns:
my %Configs = (
Ticket::Frontend::AgentTicketSearch###Defaults###DynamicField => {
TestDynamicField1 => 1,
TestDynamicField2 => 2,
TestDynamicField3 => 0,
TestDynamicField4 => 1,
TestDynamicField5 => 2,
},
'Ticket::Frontend::CustomerTicketZoom###FollowUpDynamicField' => {
TestDynamicField1 => 1,
TestDynamicField2 => 2,
TestDynamicField3 => 0,
TestDynamicField4 => 1,
TestDynamicField5 => 2,
},
'Ticket::Frontend::AgentTicketSearch###SearchCSVDynamicField' => {
TestDynamicField1 => 1,
TestDynamicField2 => 2,
TestDynamicField3 => 0,
TestDynamicField4 => 1,
TestDynamicField5 => 2,
},
);
_DynamicFieldsScreenEnable()#
This function enables the defined dynamic fields in the needed screens.
my %Screens = (
AgentTicketFreeText => {
TestDynamicField1 => 1,
TestDynamicField2 => 1,
TestDynamicField3 => 1,
TestDynamicField4 => 1,
TestDynamicField5 => 1,
},
'CustomerTicketZoom###FollowUpDynamicField' => {
TestDynamicField1 => 1,
TestDynamicField2 => 1,
TestDynamicField3 => 1,
TestDynamicField4 => 1,
TestDynamicField5 => 1,
},
'AgentTicketSearch###Defaults###DynamicField' => {
TestDynamicField1 => 1,
TestDynamicField2 => 1,
TestDynamicField3 => 1,
TestDynamicField4 => 1,
TestDynamicField5 => 1,
},
'ITSMChange::Frontend::AgentITSMChangeEdit###DynamicField' => {
ChangeFreeText1 => 1,
ChangeFreeText2 => 1,
ChangeFreeText3 => 1,
ChangeFreeText4 => 1,
ChangeFreeText5 => 1,
},
'ITSMWorkOrder::Frontend::AgentITSMWorkOrderEdit###DynamicField' => {
WorkOrderFreeText1 => 1,
WorkOrderFreeText2 => 1,
WorkOrderFreeText3 => 1,
WorkOrderFreeText4 => 1,
WorkOrderFreeText5 => 1,
},
);
my $Success = $ZnunyHelperObject->_DynamicFieldsScreenEnable(%Screens);
Returns:
my $Success = 1;
_DynamicFieldsScreenDisable()#
This function disables the defined dynamic fields in the needed screens.
my %Screens = (
AgentTicketFreeText => {
TestDynamicField1 => 1,
TestDynamicField2 => 1,
TestDynamicField3 => 1,
TestDynamicField4 => 1,
TestDynamicField5 => 1,
},
'CustomerTicketZoom###FollowUpDynamicField' => {
TestDynamicField1 => 1,
TestDynamicField2 => 1,
TestDynamicField3 => 1,
TestDynamicField4 => 1,
TestDynamicField5 => 1,
},
'AgentTicketSearch###Defaults###DynamicField' => {
TestDynamicField1 => 1,
TestDynamicField2 => 1,
TestDynamicField3 => 1,
TestDynamicField4 => 1,
TestDynamicField5 => 1,
},
'ITSMChange::Frontend::AgentITSMChangeEdit###DynamicField' => {
ChangeFreeText1 => 1,
ChangeFreeText2 => 1,
ChangeFreeText3 => 1,
ChangeFreeText4 => 1,
ChangeFreeText5 => 1,
},
'ITSMWorkOrder::Frontend::AgentITSMWorkOrderEdit###DynamicField' => {
WorkOrderFreeText1 => 1,
WorkOrderFreeText2 => 1,
WorkOrderFreeText3 => 1,
WorkOrderFreeText4 => 1,
WorkOrderFreeText5 => 1,
},
);
my $Success = $ZnunyHelperObject->_DynamicFieldsScreenDisable(%Screens);
Returns:
my $Success = 1;
_DynamicFieldsDelete()#
This function delete the defined dynamic fields
my @DynamicFields = (
'TestDynamicField1',
'TestDynamicField2',
'TestDynamicField3',
);
my $Success = $ZnunyHelperObject->_DynamicFieldsDelete(@DynamicFields);
Returns:
my $Success = 1;
_DynamicFieldsDisable()#
This function disables the defined dynamic fields
my @DynamicFields = (
'TestDynamicField1',
'TestDynamicField2',
'TestDynamicField3',
);
my $Success = $ZnunyHelperObject->_DynamicFieldsDisable(@DynamicFields);
Returns:
my $Success = 1;
_DynamicFieldsCreateIfNotExists()#
creates all dynamic fields that are necessary
- Usable Snippets (SublimeTextAdjustments):
otrs.dynamicfield.config.text otrs.dynamicfield.config.checkbox otrs.dynamicfield.config.datetime otrs.dynamicfield.config.dropdown otrs.dynamicfield.config.textarea otrs.dynamicfield.config.multiselect
my @DynamicFields = (
{
Name => 'TestDynamicField1',
Label => "TestDynamicField1",
ObjectType => 'Ticket',
FieldType => 'Text',
Config => {
DefaultValue => "",
},
},
{
Name => 'TestDynamicField2',
Label => "TestDynamicField2",
ObjectType => 'Ticket',
FieldType => 'Text',
Config => {
DefaultValue => "",
},
},
);
my $Result = $ZnunyHelperObject->_DynamicFieldsCreateIfNotExists( @DynamicFields );
Returns:
my $Success = 1;
_DynamicFieldsCreate()#
creates all dynamic fields that are necessary
- Usable Snippets (SublimeTextAdjustments):
otrs.dynamicfield.config.text otrs.dynamicfield.config.checkbox otrs.dynamicfield.config.datetime otrs.dynamicfield.config.dropdown otrs.dynamicfield.config.textarea otrs.dynamicfield.config.multiselect
my @DynamicFields = (
{
Name => 'TestDynamicField1',
Label => "TestDynamicField1",
InternalField => 0, # optional, 0 or 1, internal fields are protected
ObjectType => 'Ticket',
FieldType => 'Text',
Config => {
DefaultValue => "",
},
},
{
Name => 'TestDynamicField2',
Label => "TestDynamicField2",
InternalField => 0, # optional, 0 or 1, internal fields are protected
ObjectType => 'Ticket',
FieldType => 'Text',
FieldOrderAfterField => 'TestDynamicField1', # special feature to order fields at a specific point. Can be also used for fields which are getting created in the same array before this dynamic field
Config => {
DefaultValue => "",
},
},
);
my $Success = $ZnunyHelperObject->_DynamicFieldsCreate( @DynamicFields );
Returns:
my $Success = 1;
DynamicFieldFieldOrderAfterFieldGet()#
This function will return the field order after a specific dynamic field field name.
e.g.
TestDynamicField has the field order 100.
my $FieldOrder = $ZnunyHelperObject->DynamicFieldFieldOrderAfterFieldGet(
Name => 'TestDynamicField1',
);
Returns:
my $FieldOrder = 101;
DynamicFieldValueCreate()#
Add a new dropdown value to a dynamic field. This function will extended the possible values for the field.
my $Success = $ZnunyHelperObject->DynamicFieldValueCreate(
Name => 'DynamicFieldName',
Key => 'ValueDropdown',
Value => 'ValueDropdown', # optional (Parameter "Key" is default)
);
Returns:
my $Success = 1;
_DynamicFieldsConfigExport()#
exports configuration of all dynamic fields
my $Configs = $ZnunyHelperObject->_DynamicFieldsConfigExport(
Format => 'perl|yml|yaml|var', # defaults to perl. var returns the
IncludeInternalFields => 1, # defaults to 1, also includes dynamic fields with flag 'InternalField',
IncludeAllConfigKeys => 1, # defaults to 1, also includes config keys ChangeTime, CreateTime, ID, InternalField, ValidID
Result => 'ARRAY', # HASH or ARRAY, defaults to ARRAY
DynamicFields => [ # optional, returns only the configs for the given fields
'NameOfDynamicField',
'SecondDynamicField',
],
);
Returns:
my $ARRAYResult = [
{
'Config' => {
'DefaultValue' => ''
},
'FieldOrder' => '1',
'FieldType' => 'Text',
'Label' => "DynField1 Label",
'Name' => 'DynField1',
'ObjectType' => 'Ticket'
},
{
'Config' => {
'DefaultValue' => ''
},
'FieldOrder' => '2',
'FieldType' => 'Text',
'Label' => 'DynField2 Label',
'Name' => 'DynField2',
'ObjectType' => 'Ticket'
},
];
my $HASHResult = {
'DynField1' => {
'Config' => {
'DefaultValue' => ''
},
'FieldOrder' => '1',
'FieldType' => 'Text',
'Label' => "DynField1 Label",
'Name' => 'DynField1',
'ObjectType' => 'Ticket'
},
'DynField2' => {
'Config' => {
'DefaultValue' => ''
},
'FieldOrder' => '2',
'FieldType' => 'Text',
'Label' => 'DynField2 Label',
'Name' => 'DynField2',
'ObjectType' => 'Ticket'
},
};
_DynamicFieldsScreenConfigExport()#
exports all configured screens of one ore more dynamic fields
my $Configs = $ZnunyHelperObject->_DynamicFieldsScreenConfigExport(
DynamicFields => [ # optional, returns only for those fields
'NameOfDynamicField',
'SecondDynamicField',
],
);
Returns:
my $Result = {
'DynField1' => {
'AgentCustomerInformationCenter::Backend###0100-CIC-TicketPendingReminder' => '2',
'DashboardBackend###0100-TicketPendingReminder' => '1',
'DashboardBackend###0130-TicketOpen' => '1',
'DashboardBackend###0140-RunningTicketProcess' => '1',
'Ticket::Frontend::AgentTicketQueue###DefaultColumns' => '2',
'Ticket::Frontend::AgentTicketResponsible###DynamicField' => '2',
'Ticket::Frontend::AgentTicketSearch###DefaultColumns' => '2',
'Ticket::Frontend::AgentTicketStatusView###DefaultColumns' => '2',
'Ticket::Frontend::AgentTicketZoom###DynamicField' => '0',
'Ticket::Frontend::CustomerTicketOverview###DynamicField' => '2',
'Ticket::Frontend::OverviewPreview###DynamicField' => '2',
},
'DynField2' => {
'Ticket::Frontend::AgentTicketResponsible###DynamicField' => '2',
'Ticket::Frontend::AgentTicketSearch###DefaultColumns' => '2',
},
};
_DynamicFieldsScreenConfigImport()#
imports all configured screens of one ore more dynamic fields
%Config = {
'DynField1' => {
'AgentCustomerInformationCenter::Backend###0100-CIC-TicketPendingReminder' => '2',
'DashboardBackend###0100-TicketPendingReminder' => '1',
'DashboardBackend###0130-TicketOpen' => '1',
'DashboardBackend###0140-RunningTicketProcess' => '1',
'Ticket::Frontend::AgentTicketQueue###DefaultColumns' => '2',
'Ticket::Frontend::AgentTicketResponsible###DynamicField' => '2',
'Ticket::Frontend::AgentTicketSearch###DefaultColumns' => '2',
'Ticket::Frontend::AgentTicketStatusView###DefaultColumns' => '2',
'Ticket::Frontend::AgentTicketZoom###DynamicField' => '0',
'Ticket::Frontend::CustomerTicketOverview###DynamicField' => '2',
'Ticket::Frontend::OverviewPreview###DynamicField' => '2',
},
'DynField2' => {
'Ticket::Frontend::AgentTicketResponsible###DynamicField' => '2',
'Ticket::Frontend::AgentTicketSearch###DefaultColumns' => '2',
},
};
my $Success = $ZnunyHelperObject->_DynamicFieldsScreenConfigImport( %Config );
Returns:
my $Success = 1;
_PostMasterFilterCreateIfNotExists()#
creates all postmaster filter that are necessary
my @Filters = (
{
'Match' => {
'Auto-Submitted' => '123'
},
'Name' => 'asdf',
'Not' => {
'Auto-Submitted' => undef
},
'Set' => {
'X-OTRS-DynamicField-blub' => '123'
},
'StopAfterMatch' => '0'
},
);
my $Result = $ZnunyHelperObject->_PostMasterFilterCreateIfNotExists( @Filters );
Returns:
my $Success = 1;
_PostMasterFilterCreate()#
creates all postmaster filter that are necessary
my @Filters = (
{
'Match' => {
'Auto-Submitted' => '123'
},
'Name' => 'asdf',
'Not' => {
'Auto-Submitted' => undef
},
'Set' => {
'X-OTRS-DynamicField-blub' => '123'
},
'StopAfterMatch' => '0'
},
);
my $Result = $ZnunyHelperObject->_PostMasterFilterCreate( @Filters );
Returns:
my $Success = 1;
_PostMasterFilterConfigExport()#
exports configuration of all postmaster filter
my $Configs = $ZnunyHelperObject->_PostMasterFilterConfigExport(
Format => 'yml|perl', # defaults to perl
);
_PostMasterFilterConfigImport()#
imports configuration of postmaster filter via yml
my $Success = $ZnunyHelperObject->_PostMasterFilterConfigImport(
Filter => $Filter,
Format => 'yml', # optional - default
);
$Filter = "---
- Match:
- Key: Body
Value: '123'
Name: 'PostmasterFilter'
Not:
- Key: Body
Value: ~
Set:
- Key: X-OTRS-DynamicField-test
Value: '123'
StopAfterMatch: 0
";
Returns:
my $Success = 1;
_GroupCreateIfNotExists()#
creates group if not exists
my $Success = $ZnunyHelperObject->_GroupCreateIfNotExists(
Name => 'Some Group Name',
);
Returns:
my $Success = 1;
_RoleCreateIfNotExists()#
creates role if not exists
my $Success = $ZnunyHelperObject->_RoleCreateIfNotExists(
Name => 'Some Role Name',
);
Returns:
my $Success = 1;
_TypeCreateIfNotExists()#
creates Type if not exists
my $Success = $ZnunyHelperObject->_TypeCreateIfNotExists(
Name => 'Some Type Name',
);
Returns:
my $Success = 1;
_PriorityCreateIfNotExists()#
creates Priority if not exists
my $Success = $ZnunyHelperObject->_PriorityCreateIfNotExists(
Name => 'Some Priority Name',
);
Returns:
my $Success = 1;
_StateCreateIfNotExists()#
creates State if not exists
# e.g. new|open|closed|pending reminder|pending auto|removed|merged
my $StateTypeID = $StateObject->StateTypeLookup( StateType => 'pending auto' );
my $Success = $ZnunyHelperObject->_StateCreateIfNotExists(
Name => 'Some State Name',
TypeID => $StateTypeID,
);
Returns:
my $Success = 1;
_StateDisable()#
disables a given state
my @States = (
'State1',
'State2',
);
my $Success = $ZnunyHelperObject->_StateDisable(@States);
Returns:
my $Success = 1;
_StateTypeCreateIfNotExists()#
creates state types if not exists
my $StateTypeID = $ZnunyHelperObject->_StateTypeCreateIfNotExists(
Name => 'New StateType',
Comment => 'some comment',
UserID => 123,
);
_ServiceCreateIfNotExists()#
creates Service if not exists
my $Success = $ZnunyHelperObject->_ServiceCreateIfNotExists(
Name => 'Some ServiceName',
%ITSMParams, # optional params for Criticality or TypeID if ITSM is installed
);
Returns:
my $Success = 1;
_SLACreateIfNotExists()#
creates SLA if not exists
my $Success = $ZnunyHelperObject->_SLACreateIfNotExists(
Name => 'Some ServiceName',
ServiceIDs => [ 1, 5, 7 ], # (optional)
FirstResponseTime => 120, # (optional)
FirstResponseNotify => 60, # (optional) notify agent if first response escalation is 60% reached
UpdateTime => 180, # (optional)
UpdateNotify => 80, # (optional) notify agent if update escalation is 80% reached
SolutionTime => 580, # (optional)
SolutionNotify => 80, # (optional) notify agent if solution escalation is 80% reached
);
Returns:
my $Success = 1;
_UserCreateIfNotExists()#
creates user if not exists
my $UserID = $ZnunyHelperObject->_UserCreateIfNotExists(
UserFirstname => 'Manfred',
UserLastname => 'Huber',
UserLogin => 'mhuber',
UserPw => 'some-pass', # not required
UserEmail => 'email@example.com',
UserMobile => '1234567890', # not required
ValidID => 1,
ChangeUserID => 123,
);
Returns:
my $User = 123;
_CustomerUserCreateIfNotExists()#
creates CustomerUser if not exists
my $CustomerUserLogin = $ZnunyHelperObject->_CustomerUserCreateIfNotExists(
Source => 'CustomerUser', # CustomerUser source config
UserFirstname => 'Manfred',
UserLastname => 'Huber',
UserCustomerID => 'A124',
UserLogin => 'mhuber',
UserPassword => 'some-pass', # not required
UserEmail => 'email@example.com',
);
Returns:
my $CustomerUserLogin = 'mhuber';
_QueueCreateIfNotExists()#
creates Queue if not exists
my $QueueID = $ZnunyHelperObject->_QueueCreateIfNotExists(
Name => 'Some Queue Name',
GroupID => 1,
);
Returns:
my $QueueID = 123;
_GeneralCatalogItemCreateIfNotExists()#
adds a general catalog item if it does not exist
my $ItemID = $ZnunyHelperObject->_GeneralCatalogItemCreateIfNotExists(
Name => 'Test Item',
Class => 'ITSM::ConfigItem::Test',
Comment => 'Class for test item.',
PermissionGroup => 'itsm-configitem', # optional
);
Returns:
my $ItemID = 1234;
_ITSMConfigItemDefinitionCreate()#
adds or updates a definition for a ConfigItemClass. You need to provide the configuration of the CMDB class in the following directory:
/opt/znuny/scripts/cmdb_classes/Private_Endgeraete.config
The required general catalog item will be created automatically.
my $DefinitionID = $ZnunyHelperObject->_ITSMConfigItemDefinitionCreate(
Class => 'Private Endgeraete',
ClassFile => 'Private_Endgeraete', # optional
PermissionGroup => 'itsm-configitem', # optional
);
Returns:
my $DefinitionID = 1234;
_ITSMConfigItemDefinitionCreateIfNotExists()#
add if not exists a definition for a ConfigItemClass. You need to provide the configuration of the CMDB class in the following directory:
/opt/znuny/scripts/cmdb_classes/Private_Endgeraete.config
The required general catalog item will be created automatically.
my $DefinitionID = $ZnunyHelperObject->_ITSMConfigItemDefinitionCreateIfNotExists(
Class => 'Private Endgeraete',
ClassFile => 'Private_Endgeraete', # optional
PermissionGroup => 'itsm-configitem', # optional
);
Returns:
my $DefinitionID = 1234;
_ITSMConfigItemVersionAdd()#
adds or updates a ConfigItem version.
my $VersionID = $ZnunyHelperObject->_ITSMConfigItemVersionAdd(
ConfigItemID => 12345,
Name => 'example name',
ClassID => 1234,
ClassName => 'example class',
DefinitionID => 1234,
DeplStateID => 1234,
DeplStateName => 'Production',
InciStateID => 1234,
InciStateName => 'Operational',
XMLData => {
'Priority' => 'high',
'Product' => 'test',
'Description' => 'test'
},
);
EXAMPLE Create Computer:
my $ZnunyHelperObject = $Kernel::OM->Get('Kernel::System::ZnunyHelper');
my $ConfigItemObject = $Kernel::OM->Get('Kernel::System::ITSMConfigItem');
my $GeneralCatalogObject = $Kernel::OM->Get('Kernel::System::GeneralCatalog');
my $ValidObject = $Kernel::OM->Get('Kernel::System::Valid');
# get valid id
my $ValidID = $ValidObject->ValidLookup(
Valid => 'valid',
);
my $ClassListRef = $GeneralCatalogObject->ItemList(
Class => 'ITSM::ConfigItem::Class',
Valid => $ValidID,
);
my %ClassList = reverse %{ $ClassListRef || {} };
my $YesNoRef = $GeneralCatalogObject->ItemList(
Class => 'ITSM::ConfigItem::YesNo',
Valid => $ValidID,
);
my %YesNoList = reverse %{ $YesNoRef || {} };
my $ConfigItemID = $ConfigItemObject->ConfigItemAdd(
ClassID => $ClassList{Computer},
UserID => 1,
);
# create new version of ConfigItem
my $VersionID = $ZnunyHelperObject->_ITSMConfigItemVersionAdd(
ConfigItemID => $ConfigItemID,
Name => 'blub',
ClassName => 'Computer',
DeplStateName => 'Production',
InciStateName => 'Operational',
XMLData => {
OtherEquipment => '...',
Note => '...',
WarrantyExpirationDate => '2016-01-01',
InstallDate => '2016-01-01',
NIC => [
{
Content => 'NIC',
IPoverDHCP => [
{
Content => $YesNoList{Yes},
},
],
IPAddress => [
{
Content => '127.0.0.1'
},
],
},
],
},
);
Returns:
my $VersionID = 1234;
_ITSMConfigItemVersionExists()#
checks if a version already exists without returning a error.
my $Found = $ZnunyHelperObject->_ITSMConfigItemVersionExists(
VersionID => 123,
);
or
my $Found = $ZnunyHelperObject->_ITSMConfigItemVersionExists(
ConfigItemID => 123,
);
Returns:
my $Found = 1;
_ITSMConfigItemVersionGet()#
get a ConfigItem version.
my %Version = $ZnunyHelperObject->_ITSMConfigItemVersionGet(
ConfigItemID => 12345,
XMLDataMultiple => 1, # default: 0, This option will return a more complex XMLData structure with multiple element data! Makes sense if you are using CountMin, CountMax etc..
);
Returns:
my %Version = (
ConfigItemID => 12345,
DefinitionID => 1234,
DeplStateID => 1234,
DeplState => 'Production',
InciStateID => 1234,
InciState => 'Operational',
Name => 'example name',
XMLData => {
'Priority' => 'high',
'Product' => 'test',
'Description' => 'test'
},
);
_ITSMVersionAdd()#
DEPRECATED, use $Self->_ITSMConfigItemVersionAdd instead.
_ITSMVersionExists()#
DEPRECATED, use $Self->_ITSMConfigItemVersionExists instead.
_ITSMVersionGet()#
DEPRECATED, use $Self->_ITSMConfigItemVersionGet instead.
_ParseXML2Data()#
this is a internal function for _ITSMVersionGet to parse the additional data stored in XMLData.
my $Success = $ZnunyHelperObject->_ParseXML2Data(
Parent => $Identifier, # optional: contains the field name of the parent xml
Result => $Result, # contains the reference to the result hash
Data => $Data{$Field}->[1], # contains the xml hash we want to parse
XMLDataMultiple => 1, # default: 0, This option will return a more complex XMLData structure with multiple element data! Makes sense if you are using CountMin, CountMax etc..
);
Returns:
my $Success = 1;
_ParseData2XML()#
this is a internal function for _ITSMVersionAdd to parse the additional data for xml storage.
my $Success = $ZnunyHelperObject->_ParseData2XML(
Parent => $Identifier, # optional: contains the field name of the parent xml
Result => $Result, # contains the reference to the result hash
Data => $Data{$Field}->[1], # contains the xml hash we want to parse
);
Returns:
my $Success = 1;
_WebserviceCreateIfNotExists()#
creates web services that not exist yet
# installs all .yml files in $OTRS/scripts/webservices/
# name of the file will be the name of the webservice
my $Result = $ZnunyHelperObject->_WebserviceCreateIfNotExists(
SubDir => 'ZnunyAssetDesk', # optional
);
OR:
my $Result = $ZnunyHelperObject->_WebserviceCreateIfNotExists(
Webservices => {
'New Webservice 1234' => '/path/to/Webservice.yml',
# ...
}
);
_WebserviceCreate()#
creates or updates web services
# installs all .yml files in $OTRS/scripts/webservices/
# name of the file will be the name of the webservice
my $Result = $ZnunyHelperObject->_WebserviceCreate(
SubDir => 'ZnunyAssetDesk', # optional
);
OR:
my $Result = $ZnunyHelperObject->_WebserviceCreate(
Webservices => {
'New Webservice 1234' => '/path/to/Webservice.yml',
# ...
}
);
_WebserviceDelete()#
deletes web services
# deletes all .yml files webservices in $OTRS/scripts/webservices/
# name of the file will be the name of the webservice
my $Result = $ZnunyHelperObject->_WebserviceDelete(
SubDir => 'ZnunyAssetDesk', # optional
);
OR:
my $Result = $ZnunyHelperObject->_WebserviceDelete(
Webservices => {
'Not needed Webservice 1234' => 1, # value is not used
# ...
}
);
_WebservicesGet()#
gets a list of .yml files from $OTRS/scripts/webservices
my $Result = $ZnunyHelperObject->_WebservicesGet(
SubDir => 'ZnunyAssetDesk', # optional
);
$Result = {
'Webservice' => '$OTRS/scripts/webservices/ZnunyAssetDesk/Webservice.yml',
'New Webservice 1234' => '$OTRS/scripts/webservices/ZnunyAssetDesk/New Webservice 1234.yml',
}
_RebuildConfig()#
Rebuilds OTRS config.
my $Success = $ZnunyHelperObject->_RebuildConfig();
Returns:
my $Success = 1;
_ProcessCreateIfNotExists()#
creates processes if there is no active process with the same name
# installs all .yml files in $OTRS/scripts/processes/
# name of the file will be the name of the process
my $Success = $ZnunyHelperObject->_ProcessCreateIfNotExists(
SubDir => 'ZnunyAssetDesk', # optional
);
OR:
my $Success = $ZnunyHelperObject->_ProcessCreateIfNotExists(
Processes => {
'New Process 1234' => '/path/to/Process.yml',
# ...
}
);
_ProcessCreate()#
creates or updates processes
# installs all .yml files in $OTRS/scripts/processes/
# name of the file will be the name of the process
my $Success = $ZnunyHelperObject->_ProcessCreate(
SubDir => 'ZnunyAssetDesk', # optional
);
OR:
my $Success = $ZnunyHelperObject->_ProcessCreate(
Processes => {
'New Process 1234' => '/path/to/Process.yml',
# ...
}
);
_ProcessesGet()#
gets a list of .yml files from $OTRS/scripts/processes
my $Result = $ZnunyHelperObject->_ProcessesGet(
SubDir => 'ZnunyAssetDesk', # optional
);
$Result = {
'Process' => '$OTRS/scripts/processes/ZnunyAssetDesk/Process.yml',
'New Process 1234' => '$OTRS/scripts/processes/ZnunyAssetDesk/New Process 1234.yml',
}
_ProcessWidgetDynamicFieldGroupsGet()#
gets ProcessWidgetDynamicFieldGroups
# get ProcessWidgetDynamicFieldGroups
my %ProcessWidgetDynamicFieldGroups = $ZnunyHelperObject->_ProcessWidgetDynamicFieldGroupsGet();
return:
%ProcessWidgetDynamicFieldGroups = (
Group1 = [
'DynamicField1',
'DynamicField3',
],
Group2 = [
'DynamicField2',
],
);
_ProcessWidgetDynamicFieldGroupsAdd()#
gets ProcessWidgetDynamicFieldGroups
my %ProcessWidgetDynamicFieldGroups = (
Group1 = [
'DynamicField1',
'DynamicField3',
],
Group2 = [
'DynamicField2',
],
);
my $Success = $ZnunyHelperObject->_ProcessWidgetDynamicFieldGroupsAdd(
%ProcessWidgetDynamicFieldGroups
);
_ProcessWidgetDynamicFieldGroupsRemove()#
gets ProcessWidgetDynamicFieldGroups
my %ProcessWidgetDynamicFieldGroups = (
Group1 = [
'DynamicField1',
'DynamicField3',
],
Group2 = [], # deletes the whole group
);
my $Success = $ZnunyHelperObject->_ProcessWidgetDynamicFieldGroupsRemove(
%ProcessWidgetDynamicFieldGroups
);
_ModuleGroupAdd()#
This function adds one or more groups to the list of groups of a frontend module registration for any interface.
my $Success = $HelperObject->_ModuleGroupAdd(
Module => 'Admin',
Group => [
'users',
],
GroupRo => [
'some_other_group'
],
Frontend => 'Frontend::Module', # Frontend::Module (default), PublicFrontend::Module, CustomerFrontend::Module
);
_ModuleGroupRemove()#
This function removes one or more groups from the list of groups of a frontend module registration for any interface.
my $Success = $ZnunyHelperObject->_ModuleGroupRemove(
Module => 'Admin',
Group => [
'users',
],
GroupRo => [
'some_other_group'
],
Frontend => 'Frontend::Module', # Frontend::Module (default), PublicFrontend::Module, CustomerFrontend::Module
);
_NotificationEventCreate()#
create or update notification event
my @NotificationList = (
{
Name => 'Agent::CustomerVIPPriorityUpdate',
Data => {
Events => [
'TicketPriorityUpdate',
],
ArticleAttachmentInclude => [
'0'
],
LanguageID => [
'en',
'de'
],
NotificationArticleTypeID => [
1,
],
Recipients => [
'Customer',
],
TransportEmailTemplate => [
'Default',
],
Transports => [
'Email',
],
VisibleForAgent => [
'0',
],
},
Message => {
en => {
Subject => 'Priority for your ticket changed',
ContentType => 'text/html',
Body => '...',
},
de => {
Subject => 'Die Prioritaet Ihres Tickets wurde geaendert',
ContentType => 'text/html',
Body => '...',
},
},
},
# ...
);
my $Success = $ZnunyHelperObject->_NotificationEventCreate( @NotificationList );
Returns:
my $Success = 1;
_NotificationEventCreateIfNotExists()#
creates notification event if not exists
my $NotificationID = $ZnunyHelperObject->_NotificationEventCreateIfNotExists(
Name => 'Agent::CustomerVIPPriorityUpdate',
Data => {
Events => [
'TicketPriorityUpdate',
],
ArticleAttachmentInclude => [
'0'
],
LanguageID => [
'en',
'de'
],
NotificationArticleTypeID => [
1,
],
Recipients => [
'Customer',
],
TransportEmailTemplate => [
'Default',
],
Transports => [
'Email',
],
VisibleForAgent => [
'0',
],
},
Message => {
en => {
Subject => 'Priority for your ticket changed',
ContentType => 'text/html',
Body => '...',
},
de => {
Subject => 'Die Prioritaet Ihres Tickets wurde geaendert',
ContentType => 'text/html',
Body => '...',
},
},
);
Returns:
my $NotificationID = 123;
_StandardTemplateCreate()#
create or update standard template
my @StandardTemplateList = (
{
Name => 'New Standard Template',
Template => 'Thank you for your email.',
ContentType => 'text/plain; charset=utf-8',
TemplateType => 'Answer', # 'Answer', 'Create', 'Email', 'Forward', 'Note', 'PhoneCall'
Comment => '', # optional
ValidID => 1,
UserID => 1,
},
);
my $Success = $ZnunyHelperObject->_StandardTemplateCreate( @StandardTemplateList );
Returns:
my $Success = 1;
_GenericAgentCreate()#
creates or updates generic agents
my @GenericAgents = (
{
Name => 'JobName',
Data => {
Valid => '1',
# Automatic execution (multiple tickets)
ScheduleMinutes => [
'16'
],
ScheduleHours => [
'4'
],
ScheduleDays => [
'5'
],
# Event based execution (single ticket)
EventValues => [
'TicketCreate'
# SysConfig - Events###Ticket
# SysConfig - Events###Article
],
# Select Tickets
TicketNumber => '1234',
Title => 'Title',
CustomerID => 'Kundennummer',
CustomerUserLogin => 'Kundenbenutzer',
From => 'VonZnuny',
To => 'AnZnuny',
Cc => 'CCZnuny',
Body => 'Text',
Subject => 'Subject',
ServiceIDs => [
'1'
],
SLAIDs => [
'1'
],
PriorityIDs => [
'3'
],
QueueIDs => [
'2',
'1'
],
StateIDs => [
'4'
],
OwnerIDs => [
'1'
],
LockIDs => [
'1'
],
Search_DynamicField_Text => '',
EscalationResponseTimeSearchType => '',
EscalationSolutionTimeSearchType => '',
EscalationTimeSearchType => '',
EscalationUpdateTimeSearchType => '',
LastChangeTimeSearchType => '',
TimePendingSearchType => '',
TimeSearchType => '',
ChangeTimeSearchType => '',
CloseTimeSearchType => '',
# Update/Add Ticket Attributes
NewPendingTime => '',
NewCustomerID => 'Znuny',
NewCustomerUserLogin => 'Customer',
NewLockID => '1',
NewOwnerID => '1',
NewPendingTimeType => '60',
NewPriorityID => '1',
NewQueueID => '2',
NewSLAID => '3',
NewServiceID => '7',
NewStateID => '1',
NewTitle => 'New Title',
DynamicField_Text => '',
# Add Note
NewNoteFrom => 'support@znuny.com',
NewNoteSubject => 'Znuny Note Subject',
NewNoteBody => 'Znuny Note Text',
NewNoteTimeUnits => '1604',
# Execute Ticket Commands
NewCMD => '',
NewSendNoNotification => '0',
NewDelete => '0',
# Execute Custom Module
NewModule => '',
NewParamKey1 => '',
NewParamKey2 => '',
NewParamKey3 => '',
NewParamKey4 => '',
NewParamKey5 => '',
NewParamKey6 => '',
NewParamValue1 => '',
NewParamValue2 => '',
NewParamValue3 => '',
NewParamValue4 => '',
NewParamValue5 => '',
NewParamValue6 => '',
},
UserID => 1,
},
);
my $Success = $ZnunyHelperObject->_GenericAgentCreate( @GenericAgents );
Returns:
my $Success = 1;
_GenericAgentCreateIfNotExists()#
creates generic agents if not exists
my @GenericAgents = (
{
Name => 'JobName',
Data => {
Valid => '1',
# ...
Title => 'Test'
},
UserID => 1,
},
);
my $Success = $ZnunyHelperObject->_GenericAgentCreateIfNotExists( @GenericAgents );
Returns:
my $Success = 1;
_ArticleActionsAdd()#
Adds article action menu items.
my %ArticleActions = (
Internal => [ # Channel name (Internal, Phone, Email or Invalid)
{
Key => 'ZnunyMarkTicketSeenUnseen',
Module => 'Kernel::Output::HTML::ArticleAction::MyMenuItem',
Priority => 999,
},
],
);
my $Success = $ZnunyHelperObject->_ArticleActionsAdd(%ArticleActionMenuItems);
Returns:
my $Success = 1;
_ArticleActionsRemove()#
Removes article action menu items.
my %ArticleActions = (
Internal => [ # Channel name (Internal, Phone, Email or Invalid)
{
Module => 'Kernel::Output::HTML::ArticleAction::MyMenuItem',
Priority => 999,
},
],
);
my $Success = $ZnunyHelperObject->_ArticleActionsRemove(%ArticleActions);
Returns:
my $Success = 1;