https://wiki.hornbill.com/api.php?action=feedcontributions&user=Victors&feedformat=atomHornbill - User contributions [en]2024-03-29T10:20:12ZUser contributionsMediaWiki 1.35.0https://wiki.hornbill.com/index.php?title=How_to_configure_OAuth2_Authentication_for_Microsoft_Office_365_Mailbox_integration&diff=31088How to configure OAuth2 Authentication for Microsoft Office 365 Mailbox integration2023-05-04T10:03:22Z<p>Victors: </p>
<hr />
<div>=Introduction=<br />
In order to enable Hornbill to use OAuth 2.0 protocol to authenticate to Microsoft Office 365 for mailbox integration, a Hornbill Keysafe item is required that contains the OAuth authentication token. This is then used to configure any of Hornbill's integration components, namely the following:<br />
*Email's Outbound Mail Routing Smart Host Configuration (''for more information see [[Email Domains|Email Domains]]'')<br />
*Inbound Mail Service Components of the Shared Mailboxes (''for more information see [[Shared Mailboxes|Shared Mailboxes]]'')<br />
<br />
The steps to configure this is the following:<br />
# [[#Hornbill Keysafe|Create and link a Hornbill Keysafe]] (linking the keysafe entry means creating the oAuth authentication token)<br />
# Configure the Mail Service Component<br />
## Outbound Mail Service via Smart Host Configuration<br />
## Inbound Mail Service Component<br />
##* The POP3 service<br />
##* The IMAP4 service<br />
<br />
{{infobox|For this process, is it highly advisable to ensure that no Outlook, Hotmail, or any Microsoft-linked account is currently logged in, and use Incognito/InPrivate/Private Mode or Window in the browser in performing this operation.}}<br />
<br />
<!--<br />
'''''IMPORTANT NOTE:''''' Ensure that the domain's security defaults is not enabled. <br />
[[File:Enabled_security_defaults.png|600px]]<br />
--><br />
<br />
=Hornbill Keysafe=<br />
As instructed by the [[Hornbill_KeySafe|Hornbill KeySafe]] page, create a keysafe whose type is '''''Microsoft Office 365 Mail Connector'''''. Once the keysafe entry is named and created, use the ''Connect'' button to initiate the authentication and generation of the OAuth authentication token.<br />
<br />
==Connect :: Generating the oAuth authentication token==<br />
Clicking the '''Connect''' button on the Key Details form, initiates the authentication of KeySafe to Microsoft Office365 servers. The process the follows these steps, which will take place in MS context:<br />
#Authenticate on O365 using an MS account: this would be an account with sufficient rights to access the O365 mailbox (see Notes below). This step can involve a multi factor authentication mechanism (depending on how O365/Azure environment is configured).<br />
#Grant permission to delegate access rights required by Hornbill (if requested as such by MS - this step might not be necessary, depending on o365 configuration, in which case this step is bypassed)<br />
#Approval required: grant permissions for the Hornbill connector to access the mailbox on O365 (if requested as such by MS - this step might not be necessary, depending on O365 configuration, in which case this step is bypassed). The approval request is created automatically in O365/Azure and details on how to approve the Hornbill connector, can be found here: "[[How would the Office365 administrator approve permission requests]]"<br />
<br />
'''Note: ''' If approval is required for the Azure app (Step 3), then Steps 1-2 will have to be performed again to complete the Connect operation and generate the authentication token. In this case, the step sequence becomes: S1, S2 (if required), S3 - app is approved -, S1, S2 (if required).<br />
<br />
{{infobox|The following API\Permissions are required for the Microsoft Office 365/Azure app<br><br />
<br><br />
*Mail.Read - Read User Mail<br><br />
*Mail.Read.All - Read User and Shared Mail<br><br />
*Mail.Read.Shared - Read User and Shared Mail<br><br />
*Mail.Send - Send Mail as a User<br><br />
*Mail.Send.All - Send Mail on behalf of others<br><br />
*Mail.Send.Shared - Send Mail on behalf of others<br><br />
*User.Read - Read Users Profiles}}<br />
<br />
=Configuring Mail Service Components=<br />
Once an Office365 email account is integrated to Hornbill, the email account can be used to send email out or receive email from other entities, that can be processed by Hornbill. <br />
<br />
To make this configuration,<br />
# The first requirement is to create an [[Email Domains]]. <br />
#* The critical information is the '''Domain Name'''. This entry should be the same Office365 domain that Microsoft has assigned, (ie testdomain.onmicrosoft.com). The rest of the options can be set as indicated by the wiki-page [[Email Domains]]. If one desires to utilise '''Use SMTP SmartHost''' as the ''Outbound Routing Mode'', please see the section [[#Outbound Mail Services via Smart Host]] for proper configuration of options.<br />
# Once the route has been created, the next step to be created is the [[Shared Mailboxes]]. <br />
# Then link an [[Shared_Mailboxes#Linking_an_Outbound_Mail_Route_(Domain)|outbound mail route]]. <br />
#* A key point to remember when defining the link email address, use the email address linked to the Office365 account as the default address. <br />
#* After defining the linked address, proceed to create the desired [[#Inbound Mail Services]] to allow Hornbill to retrieve emails from the Office365 account.<br />
<br />
<br />
==Outbound Mail Services via Smart Host==<br />
To allow Hornbill to send emails as the linked Office365 account, SMTP SmartHost must be configured. To perform that, the following entries must have the indicated values.<br />
{| border=1<br />
! Entry<br />
! Value<br />
|-<br />
| Host<br />
| '''smtp.office365.com'''<br />
|-<br />
| Port<br />
| '''587'''<br />
|-<br />
| Encryption<br />
| '''TLS(Transport Layer Security - RFC2595)'''<br />
|-<br />
| Authentication Method<br />
| '''OAuth2'''<br />
|-<br />
| Email Address<br />
| ''The email address that was provided to Microsoft during KeySafe entry connection. See [[#page1|image]]''<br />
|-<br />
| Credentials<br />
| ''The keysafe entry that was created [[#Hornbill_Keysafe|above]]''<br />
|}<br />
<br />
* '''BOLD VALUES''' are exact values for the entries.<br />
* ''Italic values'' are values to be supplied.<br />
* Clicking the '''Test Connection''' button would check if the values are valid.<br />
* See [[https://support.microsoft.com/en-us/office/pop-imap-and-stmp-settings-8361e398-8af4-4e97-b147-6c6c4ac95353 Microsoft's page for reference]].<br />
<br />
==Inbound Mail Services==<br />
To allow Hornbill to retrieve emails addressed to the linked Office365 account, either POP3 or IMAP4 service must be correctly defined. Please select one of the services. It is possible for the system to be configured to retrieve email from more than one Office365 account, provided that each account will require its own KeySafe entry. Even though it is possible, the system might not be able to fully identify the source account.<br />
<br />
===POP3 Services===<br />
To configure the POP3 service, the following must be the values for the entries,<br />
{| border=1<br />
! Entry<br />
! Value<br />
|-<br />
| Service<br />
| '''POP3'''<br />
|-<br />
| Server<br />
| '''outlook.office365.com'''<br />
|-<br />
| Port<br />
| '''995'''<br />
|-<br />
| Encryption<br />
| '''TLS(Transport Layer Security - RFC2595)'''<br />
|-<br />
| Authentication Method<br />
| '''OAuth2'''<br />
|-<br />
| Username<br />
| ''The email address that was provided to Microsoft during KeySafe entry connection. See [[#page1|image]]''<br />
|-<br />
| Credentials<br />
| ''The keysafe entry that was created [[#Hornbill_Keysafe|above]]''<br />
|}<br />
<br />
* Clicking the '''Test Connection''' button would check if the values are valid.<br />
* See [[https://support.microsoft.com/en-us/office/pop-imap-and-stmp-settings-8361e398-8af4-4e97-b147-6c6c4ac95353 Microsoft's page for reference]].<br />
===IMAP4 Services===<br />
To configure the IMAP4 service, the following must be the values for the entries,<br />
{| border=1<br />
! Entry<br />
! Value<br />
|-<br />
| Service<br />
| '''IMAP4'''<br />
|-<br />
| Server<br />
| '''outlook.office365.com'''<br />
|-<br />
| Port<br />
| '''993'''<br />
|-<br />
| Encryption<br />
| '''TLS(Transport Layer Security - RFC2595)'''<br />
|-<br />
| Authentication Method<br />
| '''OAuth2'''<br />
|-<br />
| Username<br />
| ''The email address that was provided to Microsoft during KeySafe entry connection. See [[#page1|image]]''<br />
|-<br />
| Credentials<br />
| ''The keysafe entry that was created [[#Hornbill_Keysafe|above]]''<br />
|}<br />
<br />
* Clicking the '''Test Connection''' button would check if the values are valid.<br />
* See [[https://support.microsoft.com/en-us/office/pop-imap-and-stmp-settings-8361e398-8af4-4e97-b147-6c6c4ac95353 Microsoft's page for reference]].<br />
<br />
=References=<br />
* [[How would the Office365 administrator approve permission requests]]<br />
* Microsoft's [[https://support.microsoft.com/en-gb/office/pop-imap-and-smtp-settings-8361e398-8af4-4e97-b147-6c6c4ac95353 POP, IMAP, and STMP settings]]<br />
* [[Troubleshooting issues occurring during the setup process.]]<br />
* [[https://docs.microsoft.com/en-us/exchange/clients-and-mobile-in-exchange-online/deprecation-of-basic-authentication-exchange-online#pop-imap-and-smtp-auth Deprecation of Basic Authentication in Exchange Online]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Email_Templates&diff=30816Email Templates2023-01-31T12:45:29Z<p>Victors: /* Variables */</p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
__NOTOC__<br />
{| style="width:100%"<br />
|[[Main Page|Home]] > [[Administration]] > [[System Administration |System]] > [[Email Administration|Email]] > Templates<br />
|style="text-align:right;"|[[:Category:Administration|Index]]<br />
|}<br />
</div><br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
==Introduction==<br />
Email templates can be used to pre-populate emails with information to create a standard format for outbound emails. Emails may be sent automatically from Business Process Workflows or manually from within an app.<br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
:* [[Email_Action_Item|Email Action Items]]<br />
|}<br />
{{#ev:youtube|mvF7saw4MCI|350|right}}<br />
<br />
==Template List==<br />
The list of templates is controlled by the selection of the application that will be using the template along with the entity or business object within that application for which the template will use variables to include information from the entity when an email is sent using that template.<br />
<br />
== Template Editor ==<br />
The ''Template Editor'' is used to construct your email templates. Within the Editor you provide the following areas.<br />
:* '''Name'''<br />
:: The Name provides a reference within the list of Templates. The BPM Editor and the different Apps that use email templates will also use this name to display where email template selection is available.<br />
:* '''Subject'''<br />
:: Contents of the Subject of the email. Both text and variables can be used within this section.<br />
:* '''Message'''<br />
:: The main body of the email. When creating or modifying an email template, the Message area includes a full editor to provide options for fonts and styling within your email.<br />
<br />
== Variables ==<br />
Template Variables can be used within the Subject or Message of a template in order to have information that is stored within the related entity, used in the email.<br />
<br />
:* '''Format'''<br />
:: Each variable starts with a double opening curly brace (<nowiki> {{ </nowiki>) and finishes with a double closing curly brace (<nowiki> }} </nowiki>). Within the curly braces, the contents can be either just a data field specified by a dot (.) followed by the field name (.H_Firstname) or the data field can be preceded by an available related entity (Contact.H_firstname). The complete variable will have the format <nowiki>{{.H_firstname}}</nowiki><br />
<br />
:* '''Letter Case'''<br />
:: The letter case of the variables will determine the letter case that is used in the email. For example <br />
::* <nowiki>{{.H_firstname}}</nowiki> = John<br />
::* <nowiki>{{.h_firstname}}</nowiki> = john<br />
::* <nowiki>{{.H_FIRSTNAME}}</nowiki> = JOHN<br />
<br />
:* '''Global Variables'''<br />
:: The variables are always available for use in an Email Template no matter the entity. For example <br />
::* <nowiki>{{DATE}}</nowiki> = The current date in the format 2016-11-23<br />
::* <nowiki>{{TIME}}</nowiki> = The current time in the format 23:53<br />
::* <nowiki>{{instanceId}}</nowiki> = The id of the Hornbill instance<br />
<br />
:* '''Modifiers'''<br />
:: The following modifiers are used with variables and are available: For example <br />
::* <nowiki>{{.H_firstname|upper}}</nowiki> = Will force the value to uppercase i.e JOHN.<br />
::* <nowiki>{{.h_firstname|lower}}</nowiki> = Will force the value to lowercase i.e john.<br />
::* <nowiki>{{.h_firstname|empty}}</nowiki> = Will only show the value if it exists else the variable will be removed from the output.<br />
::* <nowiki>{{.h_firstname|html}}</nowiki> = Allows HTML output from a template variable instead of HTML being shown as text.<br />
::* <nowiki>{{.h_firstname|wiki}}</nowiki> = Allows HTML output from a template variable that contains wiki markup, Currently only basic formatting (Bold, Italic, Ordered & Unordered lists) are supported.<br />
::* <nowiki>{{.datetimevariable|formatLocalTime}}</nowiki> = Allows formatting of datetime variables using system regional settings ('''system.RegionalSettings.timezone''' & '''system.RegionalSettings.dateTimeFormat'''), without this formatting the date time will use the DB value (UTC).<br />
{{infobox|''Modifiers do not apply for extended variables. For example, modifiers cannot be applied (they will not work) on variables like "Customer Coworker.H_first_name"''}}<br />
<br />
==Variable Visibility ==<br />
<br />
===The "empty" Variable Modifier===<br />
Sometimes you may want to include a variable in your email template that you find under certain circumstances may not be populated. You will notice that when variables fail to find any corresponding information in the database they simply show themselves in their raw form: '''<nowiki>{{.variable}}</nowiki>'''. This doesn't look terribly good in your otherwise beautifully prepared email templates.<br />
<br />
Using the "empty" modifier is a simple way to guard against this situation. Adding a vertical bar followed by the the word "empty" i.e. "'''|empty'''" within the curly braces of your variable will hide it if the system finds that there is no information to show. This results in: '''<nowiki>{{.variable|empty}}</nowiki>'''.<br />
<br><br />
<br><br />
===ESP Conditions===<br />
ESP conditions are a more advanced way of controlling the visibility of variables within your email templates and they can also be applied to blocks of text too. <br />
<br><br />
An ESP expression controls whether the variable or specified text should be visible in the email being sent.<br />
i.e. If the expression evaluates to “True” then display the variable or text. If the expression evaluates to “False” then hide the variable or text completely.<br />
<br><br />
Ultimately, the visibility of the variable or text is dependent purely on the condition set against it. It is not dependent on whether any data exists in the database for the variable to resolve.<br />
<br><br />
====What Operators can I use in my ESP Conditions?====<br />
The operators "'''='''" (equal to) and "'''!='''" (not equal to) are supported.<br />
<br><br />
<br />
====The Co-Worker Vs Contact ESP Condition Example====<br />
One common situation where the ESP expression is essential is when you want to begin your emails with “Dear [Customer]”.<br />
<br><br />
<br><br />
As you will know by now, the customer set against a request could either be a “Co-Worker” (someone internal to your Organisation) or a “Contact” (an individual external to your organisation) and each of these types of user have a range of associated variables.<br />
<br><br />
<br><br />
To configure an email template to cater for the possibility of the customer being a Co-worker or a Contact it should be set up as follows:<br />
<ol><br />
<li> Select the desired Co-worker and Contact name variables. In this example we will be addressing the customer by first name only so we will select '''<nowiki>{{Customer Coworker.H_first_name}}</nowiki>''' and '''<nowiki>{{Customer Contact.H_firstname}}</nowiki>'''</li><br />
<li> Highlight the Co-Worker variable and click the ESP Expression button </li><br />
<li> You will see that the “Value” field is automatically populated with the highlighted variable.</li><br />
<li> In the “Expression” field, define the condition that you wish to control the visibility of this variable. Remember, the variable will only be displayed if your expression is found to be true.<br />
For the Co-worker variable, we only want this to display if the customer against the request is in fact a Co-worker. This information is stored in the main request table and can be obtained using the variable '''<nowiki>{{.h_customer_type}}</nowiki>'''. The value will be zero for a Co-worker, and one for a contact, hence the expression controlling a Co-worker variable should be:<br />
'''<nowiki>{{.h_customer_type}} = 0</nowiki>''' </li><br />
<li> Click OK</li><br />
<li> Highlight the Contact variable and click the ESP Expression button.</li><br />
<li> The controlling expression defined here needs to ensure the Contact variable only displays if the customer against a request is indeed a contact. So using the same variable as before we can set the expression as '''<nowiki>{{.h_customer_type}} = 1</nowiki>'''</li> <br />
<li>Click OK</li><br />
</ol><br />
<br><br />
'''Hornbill Hint:''' The example described here is evaluating a variable (Customer Type) that will contain a number (0 or 1). In other situations, you might want to evaluate a variable that contains a word, such as <nowiki>{{.H_resolvedby_teamname}}</nowiki>. When doing this the variable must be surrounded by single quotes e.g. '''<nowiki>'{{.H_resolvedby_teamname}}'</nowiki> = 'My Team'.''' i.e. if resolved by team name equals "My Team", show the text bound by the ESP expression.<br />
<br><br />
<br><br />
When viewing your email template, any variable currently under the control of an ESP expression is highlighted in Grey.<br />
<br><br />
To edit an ESP Expression, highlight the variable and click the ESP Expression button.<br />
<br />
<gallery><br />
File:ESP Expression Step 1.PNG|1) Choose your variables and place them in the template.<br />
File:ESP Expression Step 2.PNG|2) Highlight a variable and click the ESP Expression button.<br />
File:ESP Expression Step 3.PNG|3) Review the ESP Expression Properties.<br />
File:ESP Expression Step 4.PNG|4) Adding your Customer is Co-worker expression.<br />
File:ESP Expression Step 5.PNG|5) Now highlight the next variable.<br />
File:ESP Expression Step 6.PNG|6) Adding your Customer is Contact expression.<br />
File:ESP Expression Step 7.PNG|7) The Grey highlighting indicates both variables now have ESP conditions controlling their visibility.<br />
</gallery><br />
<br />
<br />
[[Category:Administration]][[Category:Videos]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Email_Templates&diff=30815Email Templates2023-01-31T12:44:03Z<p>Victors: /* Variables */</p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
__NOTOC__<br />
{| style="width:100%"<br />
|[[Main Page|Home]] > [[Administration]] > [[System Administration |System]] > [[Email Administration|Email]] > Templates<br />
|style="text-align:right;"|[[:Category:Administration|Index]]<br />
|}<br />
</div><br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
==Introduction==<br />
Email templates can be used to pre-populate emails with information to create a standard format for outbound emails. Emails may be sent automatically from Business Process Workflows or manually from within an app.<br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
:* [[Email_Action_Item|Email Action Items]]<br />
|}<br />
{{#ev:youtube|mvF7saw4MCI|350|right}}<br />
<br />
==Template List==<br />
The list of templates is controlled by the selection of the application that will be using the template along with the entity or business object within that application for which the template will use variables to include information from the entity when an email is sent using that template.<br />
<br />
== Template Editor ==<br />
The ''Template Editor'' is used to construct your email templates. Within the Editor you provide the following areas.<br />
:* '''Name'''<br />
:: The Name provides a reference within the list of Templates. The BPM Editor and the different Apps that use email templates will also use this name to display where email template selection is available.<br />
:* '''Subject'''<br />
:: Contents of the Subject of the email. Both text and variables can be used within this section.<br />
:* '''Message'''<br />
:: The main body of the email. When creating or modifying an email template, the Message area includes a full editor to provide options for fonts and styling within your email.<br />
<br />
== Variables ==<br />
Template Variables can be used within the Subject or Message of a template in order to have information that is stored within the related entity, used in the email.<br />
<br />
:* '''Format'''<br />
:: Each variable starts with a double opening curly brace (<nowiki> {{ </nowiki>) and finishes with a double closing curly brace (<nowiki> }} </nowiki>). Within the curly braces, the contents can be either just a data field specified by a dot (.) followed by the field name (.H_Firstname) or the data field can be preceded by an available related entity (Contact.H_firstname). The complete variable will have the format <nowiki>{{.H_firstname}}</nowiki><br />
<br />
:* '''Letter Case'''<br />
:: The letter case of the variables will determine the letter case that is used in the email. For example <br />
::* <nowiki>{{.H_firstname}}</nowiki> = John<br />
::* <nowiki>{{.h_firstname}}</nowiki> = john<br />
::* <nowiki>{{.H_FIRSTNAME}}</nowiki> = JOHN<br />
<br />
:* '''Global Variables'''<br />
:: The variables are always available for use in an Email Template no matter the entity. For example <br />
::* <nowiki>{{DATE}}</nowiki> = The current date in the format 2016-11-23<br />
::* <nowiki>{{TIME}}</nowiki> = The current time in the format 23:53<br />
::* <nowiki>{{instanceId}}</nowiki> = The id of the Hornbill instance<br />
<br />
:* '''Modifiers'''<br />
:: The following modifiers are used with variables and are available: For example <br />
::* <nowiki>{{.H_firstname|upper}}</nowiki> = Will force the value to uppercase i.e JOHN.<br />
::* <nowiki>{{.h_firstname|lower}}</nowiki> = Will force the value to lowercase i.e john.<br />
::* <nowiki>{{.h_firstname|empty}}</nowiki> = Will only show the value if it exists else the variable will be removed from the output.<br />
::* <nowiki>{{.h_firstname|html}}</nowiki> = Allows HTML output from a template variable instead of HTML being shown as text.<br />
::* <nowiki>{{.h_firstname|wiki}}</nowiki> = Allows HTML output from a template variable that contains wiki markup, Currently only basic formatting (Bold, Italic, Ordered & Unordered lists) are supported.<br />
::* <nowiki>{{.datetimevariable|formatLocalTime}}</nowiki> = Allows formatting of datetime variables using system regional settings ('''system.RegionalSettings.timezone''' & '''system.RegionalSettings.dateTimeFormat'''), without this formatting the date time will use the DB value (UTC).<br />
:: ''Modifiers do not apply for extended variables. For example, modifiers cannot be applied (they will not work) on variables like "Customer Coworker.H_first_name"''<br />
<br />
==Variable Visibility ==<br />
<br />
===The "empty" Variable Modifier===<br />
Sometimes you may want to include a variable in your email template that you find under certain circumstances may not be populated. You will notice that when variables fail to find any corresponding information in the database they simply show themselves in their raw form: '''<nowiki>{{.variable}}</nowiki>'''. This doesn't look terribly good in your otherwise beautifully prepared email templates.<br />
<br />
Using the "empty" modifier is a simple way to guard against this situation. Adding a vertical bar followed by the the word "empty" i.e. "'''|empty'''" within the curly braces of your variable will hide it if the system finds that there is no information to show. This results in: '''<nowiki>{{.variable|empty}}</nowiki>'''.<br />
<br><br />
<br><br />
===ESP Conditions===<br />
ESP conditions are a more advanced way of controlling the visibility of variables within your email templates and they can also be applied to blocks of text too. <br />
<br><br />
An ESP expression controls whether the variable or specified text should be visible in the email being sent.<br />
i.e. If the expression evaluates to “True” then display the variable or text. If the expression evaluates to “False” then hide the variable or text completely.<br />
<br><br />
Ultimately, the visibility of the variable or text is dependent purely on the condition set against it. It is not dependent on whether any data exists in the database for the variable to resolve.<br />
<br><br />
====What Operators can I use in my ESP Conditions?====<br />
The operators "'''='''" (equal to) and "'''!='''" (not equal to) are supported.<br />
<br><br />
<br />
====The Co-Worker Vs Contact ESP Condition Example====<br />
One common situation where the ESP expression is essential is when you want to begin your emails with “Dear [Customer]”.<br />
<br><br />
<br><br />
As you will know by now, the customer set against a request could either be a “Co-Worker” (someone internal to your Organisation) or a “Contact” (an individual external to your organisation) and each of these types of user have a range of associated variables.<br />
<br><br />
<br><br />
To configure an email template to cater for the possibility of the customer being a Co-worker or a Contact it should be set up as follows:<br />
<ol><br />
<li> Select the desired Co-worker and Contact name variables. In this example we will be addressing the customer by first name only so we will select '''<nowiki>{{Customer Coworker.H_first_name}}</nowiki>''' and '''<nowiki>{{Customer Contact.H_firstname}}</nowiki>'''</li><br />
<li> Highlight the Co-Worker variable and click the ESP Expression button </li><br />
<li> You will see that the “Value” field is automatically populated with the highlighted variable.</li><br />
<li> In the “Expression” field, define the condition that you wish to control the visibility of this variable. Remember, the variable will only be displayed if your expression is found to be true.<br />
For the Co-worker variable, we only want this to display if the customer against the request is in fact a Co-worker. This information is stored in the main request table and can be obtained using the variable '''<nowiki>{{.h_customer_type}}</nowiki>'''. The value will be zero for a Co-worker, and one for a contact, hence the expression controlling a Co-worker variable should be:<br />
'''<nowiki>{{.h_customer_type}} = 0</nowiki>''' </li><br />
<li> Click OK</li><br />
<li> Highlight the Contact variable and click the ESP Expression button.</li><br />
<li> The controlling expression defined here needs to ensure the Contact variable only displays if the customer against a request is indeed a contact. So using the same variable as before we can set the expression as '''<nowiki>{{.h_customer_type}} = 1</nowiki>'''</li> <br />
<li>Click OK</li><br />
</ol><br />
<br><br />
'''Hornbill Hint:''' The example described here is evaluating a variable (Customer Type) that will contain a number (0 or 1). In other situations, you might want to evaluate a variable that contains a word, such as <nowiki>{{.H_resolvedby_teamname}}</nowiki>. When doing this the variable must be surrounded by single quotes e.g. '''<nowiki>'{{.H_resolvedby_teamname}}'</nowiki> = 'My Team'.''' i.e. if resolved by team name equals "My Team", show the text bound by the ESP expression.<br />
<br><br />
<br><br />
When viewing your email template, any variable currently under the control of an ESP expression is highlighted in Grey.<br />
<br><br />
To edit an ESP Expression, highlight the variable and click the ESP Expression button.<br />
<br />
<gallery><br />
File:ESP Expression Step 1.PNG|1) Choose your variables and place them in the template.<br />
File:ESP Expression Step 2.PNG|2) Highlight a variable and click the ESP Expression button.<br />
File:ESP Expression Step 3.PNG|3) Review the ESP Expression Properties.<br />
File:ESP Expression Step 4.PNG|4) Adding your Customer is Co-worker expression.<br />
File:ESP Expression Step 5.PNG|5) Now highlight the next variable.<br />
File:ESP Expression Step 6.PNG|6) Adding your Customer is Contact expression.<br />
File:ESP Expression Step 7.PNG|7) The Grey highlighting indicates both variables now have ESP conditions controlling their visibility.<br />
</gallery><br />
<br />
<br />
[[Category:Administration]][[Category:Videos]]</div>Victorshttps://wiki.hornbill.com/index.php?title=External_Authorisation&diff=30491External Authorisation2022-11-24T12:27:41Z<p>Victors: </p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
__NOTOC__<br />
{| style="width:100%"<br />
|[[Main Page|Home]] > [[Administration]] > [[Business Process Designer]] > External Authorisation<br />
|style="text-align:right;"|[[:Category:Administration|Index]]<br />
|}<br />
</div><br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
==Introduction==<br />
The external authorisation node can be used to allow an email recipient to receive an authorisation decision, provide an outcome and automatically progress a business process<br />
<br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
:* [[Variable Picker]]<br />
:* [[Custom Expression Builder|Decision]]<br />
:<br />
|}<br />
<br />
===Configuring An External Authorisation===<br />
<br />
* '''To''': Specify a single email address, this can be a static email address or using the variable picker, a variable email address can be used<br />
* '''Subject''': Configure the subject line for the outbound email, where required use the variable picker to include the relevant entity data<br />
* '''Authorisation Details''': Include the information that is relevant to the recipient, which will give them the information for the decision they are being asked to authorize, again use the variable picker to inject relevant entity data (1024 Character Limit).<br />
* '''Outcomes''': By default two outcomes are provided :- '''Authorise''' and '''Reject''', one additional outcome can be added if required (3 Max)<br />
:* Optionally configure each outcome:<br />
::* To change the display label<br />
::* To change the colour of the outcome button<br />
::* To mandate if a supporting reason is required when a specific outcome is chosen<br />
* '''Expire After''': Configure a period in Days, Minutes, Hours after which the node will expire if an outcome has not been received from the recipient. <br />
::* The default setting is '''3''' Days<br />
::* An expiry value has to be defined, if it is left blank, '''3''' Days will be used.<br />
<br />
===External Authorisation Delivery===<br />
[[File:External_Auth_Email.png|300px|right]]<br />
<br />
The external authorization email will be sent to the recipient using a preset email and using direct outbound.<br />
<br />
* The From address can be configured on the node<br />
* If the From address is not specified, the node will use the from address as '''<INSTANCENAME>-mail@live.hornbill.com'''<br />
* It is not possible to choose or configure the email template<br />
* The email is available in English only<br />
<br />
{{infobox|Please ensure you have the live.hornbill.com domain set up in your outbound routing rules:<br />
::'''Admin console > System > Email > Outbound Routing Rules'''}}<br />
<br />
===Completing An External Authorisation===<br />
[[File:External_Auth_Reason.png|300px|right]]<br />
<br />
When a recipient receives an external email authorisation, the email will contain a link to a web page, where the recipient can review the details contained in the '''Authorisation Details''', and will be presented with the configured outcomes.<br />
* The recipient does not need to login to any interface to complete their external authorization<br />
* The web page is currently available in English<br />
* The recipient needs to select an outcome to progress the external authorisation<br />
* If a reason has been mandated for the chosen outcome, the recipient will be required to provide the reason before completing the external authorization<br />
* On submission of the outcome, the recipient will see confirmation of their decision, and the business process will resume.<br />
:* It is critical to follow an external authorization with a '''[[Custom Expression Builder|Decision]]''' node, which is subsequently configured with branches which cater for all possible outcomes including '''Expired'''. <br />
:* If you have used the option to have an additional outcome you will need 2 chained '''[[Custom Expression Builder|Decision]]''' nodes to cater for all possible outcomes.<br />
* The outcome of an external authorization is not automatically written to the entity activity stream, which the process it is used in, is running against.<br />
:* In the case of a request in Service Manager, the process designer can use a Update Request > Post to Timeline node after an external authorisation and use the variable picker to include values such as the external authorization outcome, and any supporting reasons as output params from the External Authorisation node. <br />
<br />
<br />
[[Category:Administration]] [[Category:Service Manager]]</div>Victorshttps://wiki.hornbill.com/index.php?title=BPM_Human_Tasks&diff=30181BPM Human Tasks2022-11-08T12:11:01Z<p>Victors: </p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
__NOTOC__[[Main Page|Home]] > [[Administration]] > [[Business Process Designer]] > BPM Human Tasks<br />
</div><br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
== Introduction ==<br />
When creating a human task it is possible to define this in one or multiple languages, by default this will be English, however it is possible to create copies of the human task in any other languages enabled on your instance. This is a consideration where those who maybe assigned tasks are working in different languages, and they will receive the human task either in the default language or in the language defined in their profile if the human task is configured in the different languages. <br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
:* [[Service Manager Business Process Workflow]]<br />
:* [[My Activities]]<br />
:* [[Capture Task Fields]]<br />
:* [[Outcomes]]<br />
:* [[Checklists]]<br />
|}<br />
<br />
[[File:BPM_Human_task_info.png| 400px|right]]<br />
<br />
== Options ==<br />
:* '''Display''' <br />
::This is simply the display name for the human task node in the business process designer, it will not appear on the human task<br />
<br />
:* '''Title''' <br />
:: This will appear as the title of the human task <br />
:* '''Category'''<br />
:: Set a category that will appear on the human task<br />
:* '''Priority'''<br />
:: Set a priority to indicate the priority of the task<br />
:* '''Owner'''<br />
:: The Owner is an important consideration, as they can be notified about the task in reminders, and will also have the ability to reassign the assignee if required. The Owner can be either a named user or a variable<br />
:* '''User'''<br />
:: Pick from a list of co-workers <br />
:* '''Variable'''<br />
::In order to see a list of possible variables like request owner, you will need to precede the human task node with the '''Automated Task Node > Request Entity > Get Information > Request Details''' <br />
* '''Assign To'''<br />
::Choose who the human task will be assigned to, this can be a named user, group, role, or variable.<br />
::* User - Pick from a list of co-workers <br />
::* Variable - In order to see a list of possible variables like request owner, you will need to precede the human task node with the '''Automated Task Node > Request Entity > Get Information > Request Details''' or any other node that outputs a user ID as a value<br />
::* Role - This will be populated from the default roles and any custom roles defined on your instance. Any Users who are assigned the role will receive the human task, any notifications and will have the ability to complete the human task.<br />
::* Group - This will be populated from the defined groups on your instance. Any Users who are members of the group will receive the human task, any notifications and will have the ability to complete the human task. <br />
* '''Lifespan Settings''' - It is possible to set a start date, due date and expiry date for the task based on either a predefined value, or based on a variable like respond by or fix by from the parent request.<br />
::* Start After - Set this to either X Days, X Hours and or X minutes after the creation of the Task, or base this on a variable like log date, resolve by, or fix by. If using the Variable option remember to precede the node with the '''Automated Task Node > Request Entity > Get Information > Request Details''' <br />
::* Due After - Set this to either X Days, X Hours and or X minutes after the creation of the Task, or base this on a variable like log date, respond by, or fix by. If using the Variable option remember to precede the node with the '''Automated Task Node > Request Entity > Get Information > Request Details''' <br />
::* Expires After - Expires is a valid outcome for a human task, and setting a value here will allow you to via a decision node following the task allow for branching based on an outcome not being selected but the task expiring.<br />
::: Set this to either X Days, X Hours and or X minutes after the creation of the Task, or base this on a variable like log date, respond by, or fix by. If using the Variable option remember to precede the node with the '''Automated Task Node > Request Entity > Get Information > Request Details'''<br />
:::'''Please note:''' When using variables for the Lifespan Settings these must be in the ISO Date/Time format, e.g. 2021-11-26T11:30:00.000Z<br />
:::Values from a Date/Time picker will be in this format, but values from a Date Picker will not.<br />
* '''Task Details''' - Define the details for the human task, this can be a combination of text and if required variables from the parent request which the task is related too, this could be the summary or description fields, custom fields, or even answers to progressive capture questions - see more about inserting '''[[Request Variables|request variables here]]'''.<br />
* '''Task Options''' <br />
::* Hide the completion '''Reason''' when completing the task - decide if the reason field is not required when completing the task via an outcome<br />
::* Do not allow completion of the task unless it is 100% complete - this option becomes available if '''Checklists''' have been enabled on the task, and you do not want to allow the task to be completed whilst there are outstanding checklist items.<br />
::* Decide if you want to display the '''Time Spent''' option to the user who is completing the human task<br />
* '''[[Checklists|Manage Checklists]]''' - Optionally add checklists that need completing as part of the task<br />
* '''[[Outcomes]]''' - Configure what possible options the user completing the human task can choose from when completing the human task. By default two are provided, '''Completed''' and '''Not Completed'''. <br />
* '''[[Capture Task Fields]]''' - Enable custom fields on the task<br />
* '''Set Stage Checkpoints''' - Optionally configure which stage checkpoints will be set on the completion of the task<br />
<br />
[[Category:Administration]]</div>Victorshttps://wiki.hornbill.com/index.php?title=BPM_Human_Tasks&diff=30180BPM Human Tasks2022-11-08T12:09:58Z<p>Victors: </p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
__NOTOC__[[Main Page|Home]] > [[Administration]] > [[Business Process Designer]] > BPM Human Tasks<br />
</div><br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
== Introduction ==<br />
When creating a human task it is possible to define this in one or multiple languages, by default this will be English, however it is possible to create copies of the human task in any other languages enabled on your instance. This is a consideration where those who maybe assigned tasks are working in different languages, and they will receive the human task either in the default language or in the language defined in their profile if the human task is configured in the different languages. <br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
:* [[Service Manager Business Process Workflow]]<br />
:* [[My Activities]]<br />
:* [[Capture Task Fields]]<br />
:* [[Outcomes]]<br />
:* [[Checklists]]<br />
|}<br />
<br />
[[File:BPM_Human_task_info.png| 400px|right]]<br />
<br />
== Options ==<br />
:* '''Display''' <br />
::This is simply the display name for the human task node in the business process designer, it will not appear on the human task<br />
<br />
:* '''Title''' <br />
:: This will appear as the title of the human task <br />
:* '''Category'''<br />
:: Set a category that will appear on the human task<br />
:* '''Priority'''<br />
:: Set a priority to indicate the priority of the task<br />
:* '''Owner'''<br />
:: The Owner is an important consideration, as they can be notified about the task in reminders, and will also have the ability to reassign the assignee if required. The Owner can be either a named user or a variable<br />
:* '''User'''<br />
:: Pick from a list of co-workers <br />
:* '''Variable'''<br />
::In order to see a list of possible variables like request owner, you will need to precede the human task node with the '''Automated Task Node > Request Entity > Get Information > Request Details''' <br />
* '''Assign To'''<br />
::Choose who the human task will be assigned to, this can be a named user, group, role, or variable.<br />
::* User - Pick from a list of co-workers <br />
::* Variable - In order to see a list of possible variables like request owner, you will need to precede the human task node with the '''Automated Task Node > Request Entity > Get Information > Request Details'''<br />
::* Role - This will be populated from the default roles and any custom roles defined on your instance. Any Users who are assigned the role will receive the human task, any notifications and will have the ability to complete the human task.<br />
::* Group - This will be populated from the defined groups on your instance. Any Users who are members of the group will receive the human task, any notifications and will have the ability to complete the human task. <br />
* '''Lifespan Settings''' - It is possible to set a start date, due date and expiry date for the task based on either a predefined value, or based on a variable like respond by or fix by from the parent request.<br />
::* Start After - Set this to either X Days, X Hours and or X minutes after the creation of the Task, or base this on a variable like log date, resolve by, or fix by. If using the Variable option remember to precede the node with the '''Automated Task Node > Request Entity > Get Information > Request Details''' <br />
::* Due After - Set this to either X Days, X Hours and or X minutes after the creation of the Task, or base this on a variable like log date, respond by, or fix by. If using the Variable option remember to precede the node with the '''Automated Task Node > Request Entity > Get Information > Request Details''' <br />
::* Expires After - Expires is a valid outcome for a human task, and setting a value here will allow you to via a decision node following the task allow for branching based on an outcome not being selected but the task expiring.<br />
::: Set this to either X Days, X Hours and or X minutes after the creation of the Task, or base this on a variable like log date, respond by, or fix by. If using the Variable option remember to precede the node with the '''Automated Task Node > Request Entity > Get Information > Request Details'''<br />
:::'''Please note:''' When using variables for the Lifespan Settings these must be in the ISO Date/Time format, e.g. 2021-11-26T11:30:00.000Z<br />
:::Values from a Date/Time picker will be in this format, but values from a Date Picker will not.<br />
* '''Task Details''' - Define the details for the human task, this can be a combination of text and if required variables from the parent request which the task is related too, this could be the summary or description fields, custom fields, or even answers to progressive capture questions - see more about inserting '''[[Request Variables|request variables here]]'''.<br />
* '''Task Options''' <br />
::* Hide the completion '''Reason''' when completing the task - decide if the reason field is not required when completing the task via an outcome<br />
::* Do not allow completion of the task unless it is 100% complete - this option becomes available if '''Checklists''' have been enabled on the task, and you do not want to allow the task to be completed whilst there are outstanding checklist items.<br />
::* Decide if you want to display the '''Time Spent''' option to the user who is completing the human task<br />
* '''[[Checklists|Manage Checklists]]''' - Optionally add checklists that need completing as part of the task<br />
* '''[[Outcomes]]''' - Configure what possible options the user completing the human task can choose from when completing the human task. By default two are provided, '''Completed''' and '''Not Completed'''. <br />
* '''[[Capture Task Fields]]''' - Enable custom fields on the task<br />
* '''Set Stage Checkpoints''' - Optionally configure which stage checkpoints will be set on the completion of the task<br />
<br />
[[Category:Administration]]</div>Victorshttps://wiki.hornbill.com/index.php?title=ISO:Management_Systems&diff=29731ISO:Management Systems2022-09-15T14:26:14Z<p>Victors: /* Data Protection and Privacy */</p>
<hr />
<div>==Data Protection and Privacy==<br />
Hornbill Technologies is committed to compliance with all national and, where appropriate, international laws relating to the protection of personal data and individual privacy. <br />
The Chief Technical Officer is Hornbill Technologies’ Data Security Officer. Personal data is classified as Restricted, and is available only to those who need to deal with it.<br />
The policy applies to all personal data held by Hornbill Technologies, including on wireless notebook computers, and mobile telephones, etc.<br />
All staff will be provided with training to ensure that they understand Hornbill Technologies policy and the procedures it has put into place to implement that policy.<br />
The disciplinary process will be invoked in circumstances where this policy may have been transgressed.<br />
<br />
==Compliance with security policies and standards== <br />
<br />
Managers continuously review their area of operations for compliance and should any non-compliance be identified the manager determines the cause, evaluates the actions necessary, implements appropriate actions and reviews the outcome to ensure the non-conformance does not recur.<br />
<br />
Where the manager notes a recurrence of minor infractions or where there is a potential breach or incident then the Manager records the issue either in a report to the Information Security Manager, an Incident Report or, if more appropriate, an internal departmental record.<br />
<br />
Such reports are shared with auditors as appropriate during internal audit<br />
<br />
==Information systems audit controls ==<br />
<br />
Audits of the security arrangements and controls are conducted in line with the ISMS Manual requirements. Audit plans are constructed so as to minimise the interruption to operational systems and business processes especially where penetration testing or similar is conducted.<br />
<br />
All Polices are reviewed bi-annually and updated as required to reflect changes in business or practices and submitted for confirmation by management team prior to release to business.<br />
<br />
==Penetration Testing == <br />
As well as frequent tests undertaken by Hornbill we utilise external security companies to validate our results and services at least annually. The testing is against all infrastructure (Both on Premise and in Data Centers) and software used. Results of tests are available on request and certificates via https://www.hornbill.com<br />
<br />
<br />
==Control of Records==<br />
<br />
Asset owners are responsible for identifying the records that are generated by the processes or assets for which they are responsible, or which should be generated to indicate conformity with the ISMS, and for ensuring that they are controlled in line with this procedure. Records will meet the legal, regulatory and contractual requirements of Hornbill Technologies. Records must remain legible, readily identifiable and retrievable.<br />
<br />
The retention period for the record is determined by Hornbill Technologies’ overall approach to document and record retention<br />
<br />
Records are subject to the levels of protection appropriate to information of their classification level (i.e. at least the same as that of the asset to which they relate or the information they contain) and they are therefore protected, stored, maintained and disposed of in line with the requirements of the ISMS</div>Victorshttps://wiki.hornbill.com/index.php?title=FAQ:Instance_Provisioning&diff=29730FAQ:Instance Provisioning2022-09-15T14:25:13Z<p>Victors: /* What is the Data Protection Officer, and what responsibilities does this person have? */</p>
<hr />
<div>==What is the importance of the Instance Name in respect to provisioning your Hornbill Instance==<br />
<br />
The Instance Name is used in the URL used by your organisation to access your specific Hornbill instance, this needs to be memorable easily identifiable and unique to your organisation.<br />
<br />
By way of example the Hornbill Public Demo instance which is available on our Corporate Website has the instance name '''Demo''' as such access to this is possible from the following URL [https://live.hornbill.com/ahdemo/ https://live.hornbill.com/demo/]<br />
<br />
As part of the sign up process for you will be asked to provide an Instance Name which our Product Specialists will use to initiate the provisioning of your specific Hornbill instance.<br />
<br />
The instance name should adhere to the following criteria:<br />
<br />
*Must be unique and identifiable. As such requests for intance names such as ''itsupport'', ''serivcedesk'' or ''help'' will not be accepted.<br />
*Only contain letters and numbers (and must start with a letter)<br />
*No special characters (&, +, =, etc.)<br />
*Be no more than 45 characters long<br />
<br />
Any Hornbill controlled email addresses must also contain this InstanceName at the end, for example - support-InstanceName@live.hornbill.com<br />
<br />
<br />
In the event an Instance Name is requested that has already been allocated you will be advised and an alternative will need to be provided.<br />
<br />
Hornbill retains the right to reject an Instance Name if it is felt to be inappropriate.<br />
<br />
Care should therefore be given when choosing an InstanceName to ensure that its easily memorable and reflects your organisation.<br />
<br />
==Can we Change our InstanceName ==<br />
<br />
It is possible should you wish to change your InstanceName at a later date, however the following must be considered.<br />
<br />
*Change will be made and old InstanceName retired. There is no redirection from old to new.<br />
*Any @live.hornbill.com email address will also be changed to include the new InstanceName. There is no redirection from old to new.<br />
*Any not relative Hyperlinks contained within comments or calls may not function.<br />
*Any not relative Hyperlinks contained within comments or calls may not function. (Note all Hornbill added links will be OK)<br />
*Downtime is required. Normally this is around 30 minutes, however the more data you have the longer this takes.<br />
*Any SSO profile may need to be updated.<br />
*Any Push data imports may need to be reconfigured.<br />
*BPMs should be checked to ensure they do not contain any hardcoded URLs<br />
*Email templates should be checked to ensure they do not contain any hardcoded URLs (you might want to consider using the email template variable: '''&#123;&#123;instanceId&#125;&#125;''' )<br />
<br />
<br />
Hornbill allows 1 change of InstanceName without cost, subsequent changes will be charged. It should be noted that InstanceNames are provided on first-come first-served basis and Hornbill retains the right to reject an Instance Name if it is felt to be inappropriate. <br />
<br />
Although it is possible to undergo a Instance Name change without any professional services, we do recommend engaging with the team as they can then perform a full review of your system to highlight any of the above areas that may be of concern.<br />
<br />
==What is the Account Authority, and what responsibilities does this person have?==<br />
<br />
The Account Authority is a named contact on record for your Hornbill Instance who has the authority to make commercial and strategic decisions on behalf of your organisation in relation to Hornbill, these responsibilities include and are not limited to:<br />
*Accepting the Hornbill Solution at the end of a 30 Day Free Trial and initiating the subscription to the Hornbill Service.<br />
*Increasing or decreasing the number of subscriptions to a particular Hornbill solution.<br />
*Subscribing or Unsubscribing to a Hornbill application. <br />
<br />
In essence this person is the overall sponsor of the Hornbill Solution within your organisation.<br />
<br />
==What is the Switch On Lead, and what responsibilities does this person have?==<br />
<br />
During the Free 30 Day Trial we will undertake to deliver a [https://wiki.hornbill.com/index.php/Switch-On Switch On]. This is a Free Implementation Service that we offer to our prospects to get you up and running on Hornbill at no cost. As part of this process you are required to nominate a Switch On Lead who will be the primary point of contact for your organisation, with whom our Product Specialist will work closely in order to undertake to implement Hornbill.<br />
<br />
This person will will be responsible for completing (or co-ordinating the completion of) the pre-requisite material and have the authority to make decisions (or co-ordinate decision making) with regards to Service Delivery, configuration of Hornbill, importing of data, integration and business process definition.<br />
<br />
==What is the Primary Technical Contact, and what responsibilities does this person have?==<br />
<br />
Once the Switch On is complete, it will be necessary to have on record one or more support contacts. The primary contact will have the authority to raise questions or requests with Hornbill Support and will be required to liaise with the Hornbill Customer Success Team with regards to implementing solutions. They should also have the authority to make decisions regarding Cloud Service availability (in the unlikely event of our Cloud team needing to co-ordinate a downtime requirement). The contact should be trusted with Application Admin privileges.<br />
<br />
They will also be required to approve the registration of additional support contacts. You may depending on your Success Plan add a number of additional supported contacts. Hornbill will only take support requests from known and pre registered contacts for your instance as part of our cloud security policies.<br />
<br />
==What is the Secondary Technical Contact, and what responsibilities does this person have?==<br />
<br />
It is advisable to have a Secondary Technical Contact within your organization registered with Hornbill so as to allow this person to raise Application Support requests with the Hornbill Customer Success Team in addition to or in the place of your Primary Technical Contact should they be unavailable.<br />
<br />
==What is the Data Security Officer, and what responsibilities does this person have?==<br />
<br />
If we have any data security issues that we need to raise with your organization, this contact would be our first port of call. This is typically the person in your organization responsible for your information security policies and practices, but it can be anyone you nominate. If you do not specify a contact point for this then we would default to communicating or sending notifications of such issues to the authoritative contact.</div>Victorshttps://wiki.hornbill.com/index.php?title=IT_Operations_Management&diff=29221IT Operations Management2022-05-26T16:59:17Z<p>Victors: </p>
<hr />
<div>{{bluebanner|[[Main_Page|Home]] > [[Administration]] > ITOM|[[:Category:ITOM|Index]]}}<br />
{{IntroAndLinks|Hornbill's IT Operations Management (ITOM) includes administrative processes and support for software and hardware that allow you to execute routine tasks to support and control your IT services and IT infrastructure. Based around several key components hosted within the Hornbill cloud and an on-premise service running behind the corporate firewall. These components allow the ability to discover devices across the network infrastructure, use various techniques, and initiate IT automation and Orchestrations.<br />
<br />
Packages are the core components used to provide IT Automations and are the building blocks used within an Orchestration built using Runbooks. They are published within the ITOM Package Library, produced and maintained by Hornbill, with packages being regularly developed. It is also possible the creation of custom packages where required, and the expertise is available in-house using the ITOM Package creator.<br />
<br />
Individual Automations can be created directly within the Job queue or scheduled along with Runbooks using the Job Scheduler. These can easily access them via other Hornbill applications with access to the Business Process Engine or AutoTasks. Developers can use Hornbill's XMLMC API to trigger an Automation or Runbook process, allowing external applications and systems to be integrated.<br />
<br />
To gain access to ITOM, assuming you have a subscription or, you are using the free tier, you users will need to be assigned rights to the various features provided. Two system roles are available ('''ITOM Application Administrator''' & '''ITOM Application User'''), which allow full administrative access and User access to ITOM; for additional details, refer to [[ITOM Roles and Rights]]. <br />
|<br />
* [[ITOM Quick Start Guide]]<br />
* [[ITOM Roles and Rights]]<br />
* [[ITOM Package Library]]<br />
}}<br />
<br />
== ITOM Components ==<br />
<!-- ************************************************ Cards ****************************************** --><br />
{|cellspacing="10"<br />
|-<br />
<!-- ***************************************** ROW 1 ****************************************************** --><br />
<br />
| style="width:250px;border:2px solid #AAA; padding:1em;" |<br />
[[File:SISCard.png|320px|link=Site Integration Services]]<br />
| style="border:2px solid #AAA; padding:1em;" | <br />
[[File:JobQueueCard.png|320px|link=Job Queue]] <br />
| style="border:2px solid #AAA; padding:1em;" | <br />
[[File:JobSchedulingCard.png|320px|link=Job Scheduling]]<br />
|-<br />
<!-- ******************************************* ROW 2 **************************************************** --><br />
| style="width:250px;border:2px solid #AAA; padding:1em;" | <br />
[[File:InventoryCard.png|320px|link=Inventory]]<br />
| style="border:2px solid #AAA; padding:1em;" | <br />
[[File:InstalledPackagesCard.png|320px|link=Installed Packages]]<br />
| style="border:2px solid #AAA; padding:1em;" | <br />
[[File:RunbooksCard.png|320px|link=Runbooks]]<br />
|-<br />
<!-- ******************************************* ROW 3 **************************************************** --><br />
| style="width:250px;border:2px solid #AAA; padding:1em;" |<br />
[[File:PackageCreatorCard.png|320px|link=Package Creator]]<br />
<br />
|}<br />
== ITOM Subscription ==<br />
Free preview access is available by default for all Hornbill subscriptions when you have no ITOM subscription. The free tier is provided to enable you to give ITOM a try and to let you navigate around the full capabilities of ITOM, the free tier is limited to 10 job runs a month, to facilitate this trial. If you usage in production is so light that 10 jobs is enough, then you are free to use ITOM capabilities in production without a subscription. <br />
<br />
ITOM is available in different subscription tiers. All instances have access to the basic free tier and it can be upgraded when requested. Below is a table detailing the tiers and the functionality available on each tier:<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| <br />
! scope="col"| Free Preview<br />
! scope="col"| Basic User Account Mgmt<br />
! scope="col"| Server<br />
! scope="col"| DevOps<br />
|-<br />
! scope="row" style="text-align:left;"| Job Runs Per Month<br />
| style="text-align:center;"| 10<br />
| style="text-align:center;"| 100<br />
| style="text-align:center;"| Unlimited<br />
| style="text-align:center;"| Unlimited<br />
|-<br />
! scope="row" style="text-align:left;"| Site Integration Servers<br />
| style="text-align:center;"| 1<br />
| style="text-align:center;"| 2<br />
| style="text-align:center;"| 8<br />
| style="text-align:center;"| 8<br />
|-<br />
! scope="row" style="text-align:left;"| Discovery (marked as Managed) (* see info below)<br />
| style="text-align:center;"| 10<br />
| style="text-align:center;"| 10<br />
| style="text-align:center;"| 100<br />
| style="text-align:center;"| 100<br />
|-<br />
! scope="row" style="text-align:left;"| Job Queue<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Pre-Packaged Content: Basic Windows AD/Network Account Management<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Windows Administration<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Linux/*nix/Network Management (SSH etc.)<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Pre-Packaged Content: Server and Cloud Management<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Runbook Automation<br />
| style="text-align:center;"| Yes (1)<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Job Scheduling<br />
| style="text-align:center;"| Yes (1)<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Custom Package Creation, Powershell and Bash scripting<br />
| style="text-align:center;"| Yes (1)<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Full Software Deployment<br />
| style="text-align:center;"| Yes (1)<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| API Automation/Glue/Scripting<br />
| style="text-align:center;"| Yes (1)<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| Yes<br />
|}<br />
{{infobox|For Server and DevOps tiers there is no actual limit on the number of devices but there is a charge per each extra 100 managed devices}}<br />
<br />
[[Category:ITOM]]</div>Victorshttps://wiki.hornbill.com/index.php?title=IT_Operations_Management&diff=29217IT Operations Management2022-05-26T16:36:38Z<p>Victors: </p>
<hr />
<div>{{bluebanner|[[Main_Page|Home]] > [[Administration]] > ITOM|[[:Category:ITOM|Index]]}}<br />
{{IntroAndLinks|Hornbill's IT Operations Management (ITOM) includes administrative processes and support for software and hardware that allow you to execute routine tasks to support and control your IT services and IT infrastructure. Based around several key components hosted within the Hornbill cloud and an on-premise service running behind the corporate firewall. These components allow the ability to discover devices across the network infrastructure, use various techniques, and initiate IT automation and Orchestrations.<br />
<br />
Packages are the core components used to provide IT Automations and are the building blocks used within an Orchestration built using Runbooks. They are published within the ITOM Package Library, produced and maintained by Hornbill, with packages being regularly developed. It is also possible the creation of custom packages where required, and the expertise is available in-house using the ITOM Package creator.<br />
<br />
Individual Automations can be created directly within the Job queue or scheduled along with Runbooks using the Job Scheduler. These can easily access them via other Hornbill applications with access to the Business Process Engine or AutoTasks. Developers can use Hornbill's XMLMC API to trigger an Automation or Runbook process, allowing external applications and systems to be integrated.<br />
<br />
Free preview access is available by default for all Hornbill subscribers with administrative rights and has access to the Administration Portal. To gain access to ITOM, users will need to be assigned rights to the various features provided. Two system roles are currently offered ('''ITOM Application Administrator''' & '''ITOM Application User'''), which allow full administrative access and User access to ITOM; for additional details, refer to [[ITOM Roles and Rights]]. <br />
|<br />
* [[ITOM Quick Start Guide]]<br />
* [[ITOM Roles and Rights]]<br />
* [[ITOM Package Library]]<br />
}}<br />
<br />
== ITOM Components ==<br />
<!-- ************************************************ Cards ****************************************** --><br />
{|cellspacing="10"<br />
|-<br />
<!-- ***************************************** ROW 1 ****************************************************** --><br />
<br />
| style="width:250px;border:2px solid #AAA; padding:1em;" |<br />
[[File:SISCard.png|320px|link=Site Integration Services]]<br />
| style="border:2px solid #AAA; padding:1em;" | <br />
[[File:JobQueueCard.png|320px|link=Job Queue]] <br />
| style="border:2px solid #AAA; padding:1em;" | <br />
[[File:JobSchedulingCard.png|320px|link=Job Scheduling]]<br />
|-<br />
<!-- ******************************************* ROW 2 **************************************************** --><br />
| style="width:250px;border:2px solid #AAA; padding:1em;" | <br />
[[File:InventoryCard.png|320px|link=Inventory]]<br />
| style="border:2px solid #AAA; padding:1em;" | <br />
[[File:InstalledPackagesCard.png|320px|link=Installed Packages]]<br />
| style="border:2px solid #AAA; padding:1em;" | <br />
[[File:RunbooksCard.png|320px|link=Runbooks]]<br />
|-<br />
<!-- ******************************************* ROW 3 **************************************************** --><br />
| style="width:250px;border:2px solid #AAA; padding:1em;" |<br />
[[File:PackageCreatorCard.png|320px|link=Package Creator]]<br />
<br />
|}<br />
== ITOM Subscription ==<br />
ITOM is available in different subscription tiers. All instances have access to the basic free tier and it can be upgraded when requested. Below is a table detailing the tiers and the functionality available on each tier:<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| <br />
! scope="col"| Free Preview<br />
! scope="col"| Basic User<br />
! scope="col"| Server<br />
! scope="col"| DevOps<br />
|-<br />
! scope="row" style="text-align:left;"| Job Runs Per Month<br />
| style="text-align:center;"| 10<br />
| style="text-align:center;"| 100<br />
| style="text-align:center;"| Unlimited<br />
| style="text-align:center;"| Unlimited<br />
|-<br />
! scope="row" style="text-align:left;"| Site Integration Servers<br />
| style="text-align:center;"| 1<br />
| style="text-align:center;"| 2<br />
| style="text-align:center;"| 8<br />
| style="text-align:center;"| 8<br />
|-<br />
! scope="row" style="text-align:left;"| Discovery (marked as Managed)<br />
| style="text-align:center;"| 10<br />
| style="text-align:center;"| 10<br />
| style="text-align:center;"| 100<br />
| style="text-align:center;"| 100<br />
|-<br />
! scope="row" style="text-align:left;"| Job Queue<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Pre-Packaged Content: Basic Windows AD/Network Account Management<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Windows Administration<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Linux/*nix/Network Management (SSH etc.)<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Pre-Packaged Content: Server and Cloud Management<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Runbook Automation<br />
| style="text-align:center;"| Yes (1)<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Job Scheduling<br />
| style="text-align:center;"| Yes (1)<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Custom Package Creation, Powershell and Bash scripting<br />
| style="text-align:center;"| Yes (1)<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Full Software Deployment<br />
| style="text-align:center;"| Yes (1)<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| API Automation/Glue/Scripting<br />
| style="text-align:center;"| Yes (1)<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"|<br />
|<br />
| <br />
|<br />
|<br />
|-<br />
! scope="row" style="text-align:left;"| Managed Devices/Month<br />
| style="text-align:center;"| 10<br />
| style="text-align:center;"| Up to 3 Windows Domains<br />
| style="text-align:center;"| Unlimited (*)<br />
| style="text-align:center;"| Unlimited (*)<br />
|}<br />
{{infobox|For Server and DevOps tiers there is a charge per 100 devices and there is no limit on the number of devices}}<br />
<br />
[[Category:ITOM]]</div>Victorshttps://wiki.hornbill.com/index.php?title=IT_Operations_Management&diff=29216IT Operations Management2022-05-26T16:33:30Z<p>Victors: </p>
<hr />
<div>{{bluebanner|[[Main_Page|Home]] > [[Administration]] > ITOM|[[:Category:ITOM|Index]]}}<br />
{{IntroAndLinks|Hornbill's IT Operations Management (ITOM) includes administrative processes and support for software and hardware that allow you to execute routine tasks to support and control your IT services and IT infrastructure. Based around several key components hosted within the Hornbill cloud and an on-premise service running behind the corporate firewall. These components allow the ability to discover devices across the network infrastructure, use various techniques, and initiate IT automation and Orchestrations.<br />
<br />
Packages are the core components used to provide IT Automations and are the building blocks used within an Orchestration built using Runbooks. They are published within the ITOM Package Library, produced and maintained by Hornbill, with packages being regularly developed. It is also possible the creation of custom packages where required, and the expertise is available in-house using the ITOM Package creator.<br />
<br />
Individual Automations can be created directly within the Job queue or scheduled along with Runbooks using the Job Scheduler. These can easily access them via other Hornbill applications with access to the Business Process Engine or AutoTasks. Developers can use Hornbill's XMLMC API to trigger an Automation or Runbook process, allowing external applications and systems to be integrated.<br />
<br />
Free preview access is available by default for all Hornbill subscribers with administrative rights and has access to the Administration Portal. To gain access to ITOM, users will need to be assigned rights to the various features provided. Two system roles are currently offered ('''ITOM Application Administrator''' & '''ITOM Application User'''), which allow full administrative access and User access to ITOM; for additional details, refer to [[ITOM Roles and Rights]]. <br />
|<br />
* [[ITOM Quick Start Guide]]<br />
* [[ITOM Roles and Rights]]<br />
* [[ITOM Package Library]]<br />
}}<br />
<br />
== ITOM Components ==<br />
<!-- ************************************************ Cards ****************************************** --><br />
{|cellspacing="10"<br />
|-<br />
<!-- ***************************************** ROW 1 ****************************************************** --><br />
<br />
| style="width:250px;border:2px solid #AAA; padding:1em;" |<br />
[[File:SISCard.png|320px|link=Site Integration Services]]<br />
| style="border:2px solid #AAA; padding:1em;" | <br />
[[File:JobQueueCard.png|320px|link=Job Queue]] <br />
| style="border:2px solid #AAA; padding:1em;" | <br />
[[File:JobSchedulingCard.png|320px|link=Job Scheduling]]<br />
|-<br />
<!-- ******************************************* ROW 2 **************************************************** --><br />
| style="width:250px;border:2px solid #AAA; padding:1em;" | <br />
[[File:InventoryCard.png|320px|link=Inventory]]<br />
| style="border:2px solid #AAA; padding:1em;" | <br />
[[File:InstalledPackagesCard.png|320px|link=Installed Packages]]<br />
| style="border:2px solid #AAA; padding:1em;" | <br />
[[File:RunbooksCard.png|320px|link=Runbooks]]<br />
|-<br />
<!-- ******************************************* ROW 3 **************************************************** --><br />
| style="width:250px;border:2px solid #AAA; padding:1em;" |<br />
[[File:PackageCreatorCard.png|320px|link=Package Creator]]<br />
<br />
|}<br />
== ITOM Subscription ==<br />
ITOM is available in different subscription tiers. All instances have access to the basic free tier and it can be upgraded when requested. Below is a table detailing the tiers and the functionality available on each tier:<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| <br />
! scope="col"| Free Preview<br />
! scope="col"| Basic User<br />
! scope="col"| Server<br />
! scope="col"| DevOps<br />
|-<br />
! scope="row" style="text-align:left;"| Job Runs Per Month<br />
| style="text-align:center;"| 10<br />
| style="text-align:center;"| 100<br />
| style="text-align:center;"| Unlimited<br />
| style="text-align:center;"| Unlimited<br />
|-<br />
! scope="row" style="text-align:left;"| Site Integration Servers<br />
| style="text-align:center;"| 1<br />
| style="text-align:center;"| 2<br />
| style="text-align:center;"| 8<br />
| style="text-align:center;"| 8<br />
|-<br />
! scope="row" style="text-align:left;"| Discovery (marked as Managed)<br />
| style="text-align:center;"| 10<br />
| style="text-align:center;"| 10<br />
| style="text-align:center;"| 100<br />
| style="text-align:center;"| 100<br />
|-<br />
! scope="row" style="text-align:left;"| Job Queue<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Pre-Packaged Content: Basic Windows AD/Network Account Management<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Windows Administration<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Linux/*nix/Network Management (SSH etc.)<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Pre-Packaged Content: Server and Cloud Management<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Runbook Automation<br />
| style="text-align:center;"| Yes (1)<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Job Scheduling<br />
| style="text-align:center;"| Yes (1)<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| Yes<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Custom Package Creation, Powershell and Bash scripting<br />
| style="text-align:center;"| Yes (1)<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| Full Software Deployment<br />
| style="text-align:center;"| Yes (1)<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"| API Automation/Glue/Scripting<br />
| style="text-align:center;"| Yes (1)<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| No<br />
| style="text-align:center;"| Yes<br />
|-<br />
! scope="row" style="text-align:left;"|<br />
|<br />
| <br />
|<br />
|<br />
|-<br />
! scope="row" style="text-align:left;"| Managed Devices/Month<br />
| style="text-align:center;"| 10<br />
| style="text-align:center;"| Up to 3 Windows Domains<br />
| style="text-align:center;"| Unlimited (*)<br />
| style="text-align:center;"| Unlimited (*)<br />
|}<br />
<br />
[[Category:ITOM]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Entity_Explorer&diff=29215Entity Explorer2022-05-24T17:29:14Z<p>Victors: </p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
__NOTOC__[[Main Page|Home]] > [[Administration]] > Hornbill Application > Entity Explorer<br />
</div><br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
== Introduction ==<br />
Each Hornbill application is delivered with access to its database schema and entity relationships. This is useful when trying to understand where to identify tables, table columns, primary keys, and suitable fields for making your table joins. This functionality is intended to make your quest for information that little bit easier when constructing those all important analytics and management reports.<br />
<br />
Accessing the Entity Explorer in the Administration Tool is only open to users who are assigned the '''Advanced Reporting Admin''' role and a '''secondary role''' that has the ''Execute Stored Queries'' and ''Update Records'' system rights. Apart from high security roles, the latter can be a default role (which has these system rights) or custom created role.<br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
:* [[Database Direct]]<br />
:* [[View_Table_Structure|Hornbill How To: Viewing Table Structures]]<br />
|}<br />
<br />
== Features ==<br />
<br />
* '''Entity Information''' - Provides a visual interface to explore the application tables and how they relate to each other. A quick way to identify extended tables and the columns that create table links. Click on a table and use the "Description" and "Information" buttons to the top right of the graphical user interface to explore each table in more detail.<br />
<br />
* '''Database Schema Information''' - a simple description of each application table. Understand more about the columns contained in the tables including a supporting description, type, and information on which columns are indexed.</div>Victorshttps://wiki.hornbill.com/index.php?title=Entity_Explorer&diff=29214Entity Explorer2022-05-24T16:57:19Z<p>Victors: </p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
__NOTOC__[[Main Page|Home]] > [[Administration]] > Hornbill Application > Entity Explorer<br />
</div><br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
== Introduction ==<br />
Each Hornbill application is delivered with access to its database schema and entity relationships. This is useful when trying to understand where to identify tables, table columns, primary keys, and suitable fields for making your table joins. This functionality is intended to make your quest for information that little bit easier when constructing those all important analytics and management reports.<br />
<br />
Accessing the Entity Explorer in the Administration Tool is only open to users who are assigned a role that provides the '''Get Database Schema''' system right. Apart from high security roles, other default roles having this system rights are '''Reporting Admin''' and '''Advanced Reporting Admin''' roles. A custom role can also be created where the necessary system right is allocated.<br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
:* [[Database Direct]]<br />
:* [[View_Table_Structure|Hornbill How To: Viewing Table Structures]]<br />
|}<br />
<br />
== Features ==<br />
<br />
* '''Entity Information''' - Provides a visual interface to explore the application tables and how they relate to each other. A quick way to identify extended tables and the columns that create table links. Click on a table and use the "Description" and "Information" buttons to the top right of the graphical user interface to explore each table in more detail.<br />
<br />
* '''Database Schema Information''' - a simple description of each application table. Understand more about the columns contained in the tables including a supporting description, type, and information on which columns are indexed.</div>Victorshttps://wiki.hornbill.com/index.php?title=Entity_Explorer&diff=29213Entity Explorer2022-05-24T15:00:17Z<p>Victors: </p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
__NOTOC__[[Main Page|Home]] > [[Administration]] > Hornbill Application > Application Entity Viewer<br />
</div><br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
== Introduction ==<br />
Each Hornbill application is delivered with access to its database schema and entity relationships. This is useful when trying to understand where to identify tables, table columns, primary keys, and suitable fields for making your table joins. This functionality is intended to make your quest for information that little bit easier when constructing those all important analytics and management reports.<br />
<br />
Accessing the Entity Viewer in the Administration Tool is only open to users who are assigned the roles '''Advanced Reporting Admin''' and '''Admin Role''' <br />
<br />
''Note: '''Super User Role''' also works instead of '''Admin Role''' if the user is allowed to have this role assigned.''<br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
:* [[Database Direct]]<br />
:* [[View_Table_Structure|Hornbill How To: Viewing Table Structures]]<br />
|}<br />
<br />
== Features ==<br />
<br />
* '''Entity Information''' - Provides a visual interface to explore the application tables and how they relate to each other. A quick way to identify extended tables and the columns that create table links. Click on a table and use the "Description" and "Information" buttons to the top right of the graphical user interface to explore each table in more detail.<br />
<br />
* '''Database Schema Information''' - a simple description of each application table. Understand more about the columns contained in the tables including a supporting description, type, and information on which columns are indexed.</div>Victorshttps://wiki.hornbill.com/index.php?title=Entity_Explorer&diff=29212Entity Explorer2022-05-24T14:59:28Z<p>Victors: </p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
__NOTOC__[[Main Page|Home]] > [[Administration]] > Hornbill Application > Application Entity Viewer<br />
</div><br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
== Introduction ==<br />
Each Hornbill application is delivered with access to its database schema and entity relationships. This is useful when trying to understand where to identify tables, table columns, primary keys, and suitable fields for making your table joins. This functionality is intended to make your quest for information that little bit easier when constructing those all important analytics and management reports.<br />
<br />
Accessing the Entity Viewer in the Administration Tool is only open to users who are assigned the roles '''Advanced Reporting Admin''' and '''Admin Role''' ('''Super User Role''' also works instead of '''Admin Role''' if the user is allowed to have this role assigned).<br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
:* [[Database Direct]]<br />
:* [[View_Table_Structure|Hornbill How To: Viewing Table Structures]]<br />
|}<br />
<br />
== Features ==<br />
<br />
* '''Entity Information''' - Provides a visual interface to explore the application tables and how they relate to each other. A quick way to identify extended tables and the columns that create table links. Click on a table and use the "Description" and "Information" buttons to the top right of the graphical user interface to explore each table in more detail.<br />
<br />
* '''Database Schema Information''' - a simple description of each application table. Understand more about the columns contained in the tables including a supporting description, type, and information on which columns are indexed.</div>Victorshttps://wiki.hornbill.com/index.php?title=Entity_Explorer&diff=29211Entity Explorer2022-05-24T14:57:33Z<p>Victors: </p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
__NOTOC__[[Main Page|Home]] > [[Administration]] > Hornbill Application > Application Entity Viewer<br />
</div><br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
== Introduction ==<br />
Each Hornbill application is delivered with access to its database schema and entity relationships. This is useful when trying to understand where to identify tables, table columns, primary keys, and suitable fields for making your table joins. This functionality is intended to make your quest for information that little bit easier when constructing those all important analytics and management reports.<br />
<br />
Accessing the Entity Viewer in the Administration Tool is only open to users who are assigned the roles '''Advanced Reporting Admin''' and '''Admin Role'''.<br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
:* [[Database Direct]]<br />
:* [[View_Table_Structure|Hornbill How To: Viewing Table Structures]]<br />
|}<br />
<br />
== Features ==<br />
<br />
* '''Entity Information''' - Provides a visual interface to explore the application tables and how they relate to each other. A quick way to identify extended tables and the columns that create table links. Click on a table and use the "Description" and "Information" buttons to the top right of the graphical user interface to explore each table in more detail.<br />
<br />
* '''Database Schema Information''' - a simple description of each application table. Understand more about the columns contained in the tables including a supporting description, type, and information on which columns are indexed.</div>Victorshttps://wiki.hornbill.com/index.php?title=Entity_Explorer&diff=29210Entity Explorer2022-05-24T14:52:25Z<p>Victors: </p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
__NOTOC__[[Main Page|Home]] > [[Administration]] > Hornbill Application > Application Entity Viewer<br />
</div><br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
== Introduction ==<br />
Each Hornbill application is delivered with access to its database schema and entity relationships. This is useful when trying to understand where to identify tables, table columns, primary keys, and suitable fields for making your table joins. This functionality is intended to make your quest for information that little bit easier when constructing those all important analytics and management reports.<br />
<br />
Accessing the Entity Viewer in the Administration Tool is only open to users who are assigned the roles '''Advanced Reporting Admin''' and '''Super User Role'''.<br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
:* [[Database Direct]]<br />
:* [[View_Table_Structure|Hornbill How To: Viewing Table Structures]]<br />
|}<br />
<br />
== Features ==<br />
<br />
* '''Entity Information''' - Provides a visual interface to explore the application tables and how they relate to each other. A quick way to identify extended tables and the columns that create table links. Click on a table and use the "Description" and "Information" buttons to the top right of the graphical user interface to explore each table in more detail.<br />
<br />
* '''Database Schema Information''' - a simple description of each application table. Understand more about the columns contained in the tables including a supporting description, type, and information on which columns are indexed.</div>Victorshttps://wiki.hornbill.com/index.php?title=Users&diff=29127Users2022-04-29T15:46:09Z<p>Victors: </p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
__NOTOC__<br />
{| style="width:100%"<br />
|[[Main Page|Home]] > [[Administration|Configuration]] > [[System Administration|Platform Configuration]] > [[Organisational Data|User and Guest Access]] > Users<br />
|style="text-align:right;"|[[:Category:Administration|Index]]<br />
|}<br />
</div><br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
<br />
==Introduction==<br />
Hornbill user accounts are generally used for people that are internal to your organization who wish to interact within Hornbill, either by using one of the business applications to deliver a service, or request service via the [[Employee Portal]] (self-service). The User Management includes the creation of user accounts, roles, profile information, security settings, and regional settings.<br />
<br><br />
<br><br />
User accounts are created and managed via '''Configuration > Platform Configuration''' under the section '''User & Guest Access'''. To create and manage user accounts your user must be assigned the "'''Admin Role'''" security role.<br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
:* [[User Account]]<br />
:* [[Roles|User Roles]]<br />
:* [[Sites]]<br />
:* [[Organisation|Organisation Structure (Groups)]]<br />
:* [[Select the Best Method to Create Users]]<br />
|}<br />
<br />
== User List ==<br />
[[File:Configurationuserlist.PNG|400px|thumb|<div align="center">The User accounts list can be found under Platform Configuration</div>]]<br />
'''Filters'''<br />
<br>Several filters are available at the top left of the user list:<br />
:* '''Search for User''' <br />
:: Begin typing to filter the list of user accounts. The filter operates on User id, handle, first name, last name.<br />
:* '''User Account Type'''<br />
:: Select to view ''Full'' User accounts only, ''Basic'' User accounts only, or ''All'' User accounts.<br />
:* '''User Account Status'''<br />
:: Filter the list to see which accounts are Active, Suspended, or Archived.<br />
<br><br />
'''Action Buttons'''<br />
<br>These can be found at the top right of the list and are used to manage the user accounts. Where applicable, multiple user accounts can be acted upon when using the checkbox against each user account in the list.<br />
:* [[File:createnewuserbutton.png|150px|link=]] '''Create New Users'''<br />
:: Manually create individual user accounts. If [[User Templates]] have been created, an additional drop-down selector will be available to select a user template when creating a new user. <br />
:* [[File:csvuploadusersbutton.png |35px|link=]] '''Upload Users'''<br />
:: The Upload option provides a way to create multiple accounts using a CSV file. This is useful for small, one time imports. Other import options include the Hornbill [[LDAP User Import]] and Auto-provisioning.<br />
:* [[File:deleteuserbutton.png |35px|link=]] '''Delete Users'''<br />
:: Deleting a user completely removes the account from Hornbill and cannot be reversed. Deleting a user should only be used when the user has not had any interaction in Hornbill. This can be used to remove accounts that have been mistakenly added or uploaded. This option is only available when the user who performs the deletion has allocated the Super User Role.<br />
:* [[File:reactivateuserbutton.png|35px|link=]] '''Reactivate Users'''<br />
:: When one or more users have been suspended or archived, you can select these users from the list and reactivate them. <br />
:* [[File:suspenduserbutton.png|35px|link=]] '''Suspend Users'''<br />
:: The suspension of a user prevents the account from logging on to Hornbill. Other Hornbill users will be able to continue to interact with a suspended account. Suspended users can be reactivated. A user can be automatically suspended by providing too many incorrect passwords at login.<br />
:* [[File:archiveuserbutton.png |35px|link=]] '''Archive Users'''<br />
:: Archiving a user prevents the account from logging on to Hornbill and will also prevent other users from interacting with this account. Historic contributions within the collaboration features will be intact and visible, but they will no long be available as a co-worker. This is the recommended option for when someone leaves. Archived users can be reactivated.<br />
<br><br />
<br />
== Account Types ==<br />
Users are categorized into two account types, Full Users and Basic Users. Full User type accounts are used for full access to Hornbill Collaboration and the different available apps and require a subscription to login. Basic Users accounts are used for [[Employee Portal]] access only and are subscription free. The term "[[Co-Workers]]" is used to collectively describe Users and Basic user accounts. The term Co-Worker is used outside of Hornbill Configuration.<br />
<br><br />
<br><br />
:* '''Application (Full) Users'''<br />
:: Full Users are those that can have access to the entire suite of Collaborative features and Business Applications you have installed on the Hornbill Platform. The level of access to each of the applications is controlled by the [[Roles]] that are associated to these User accounts. The number of Application User accounts is governed by your paid for Subscriptions. You will be allowed to create Application user accounts as long as you have enough subscriptions available.<br />
<br><br />
:* '''Basic Users''' <br />
:: Basic Users are people that are internal to your Organisation that will consume the content and Services that your Application Users deliver via the Hornbill Applications. Basic Users are restricted to accessing this content and services via the [[Employee Portal]]. The content that a Basic User can access is controlled by the [[Roles]] that are associated to these user accounts. Basic Users do not require a Subscription, and the number allowed is unlimited.<br />
<br><br />
<br />
{{infobox|When creating a User account you will be asked to specify the User Type. If in future you wish to promote a Basic User account to a Full Application User account in order for them to take advantage of the Collaborative features and other Business Apps, this can be done quickly and easily by changing the user type when viewing the user record.}}<br />
<br><br />
<br />
[[Category:Administration]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Shared_Mailboxes&diff=28592Shared Mailboxes2022-01-19T17:37:30Z<p>Victors: </p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
__NOTOC__<br />
{| style="width:100%"<br />
|[[Main Page|Home]] > [[Administration]] > [[System Administration|System]] > [[Email Administration | Email]] > Shared Mailboxes<br />
|style="text-align:right;"|[[:Category:Service_Manager|Index]]<br />
|}<br />
</div><br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
==Introduction==<br />
Shared mailboxes are created to allow a group of users to share a single mailbox for both outgoing and incoming email, all using a common email address. All messages that are sent from, or received by your Hornbill instance will reside within a mailbox.<br />
<br><br />
Your new Hornbill instance is equipped with a default mailbox (helpdesk), the configuration of which can be amended or alternatively you can create an entirely new Shared Mailbox, the choice is yours.<br />
<br><br />
Shared Mailboxes are located in '''Hornbill Administration > Home > System > Email > Shared Mailboxes'''.<br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
:* [[Outbound_Mail_Routing|Setting Up an Outbound Route]]<br />
:* [[Email_Templates|Configuring Email Templates]]<br />
:* [[Email_Routing_Rules|Email Routing Rules]]<br />
:* [[Mailbox_Rights_and_Roles|Create a Mailbox Security Role]]<br />
:* [[How to configure OAuth2 Authentication for Microsoft Office 365 Mailbox integration|MS Office 365 integration with OAuth2]]<br />
|}<br />
<br />
{| style="width: 75%; height: 100px" border="1" cellpadding="2"<br />
! width="50%" | Amending the “helpdesk” Shared mailbox (Option 1)<br />
! width="50%" | Creating a New Shared Mailbox (Option 2)<br />
<br />
|-<br />
| align="left" |<br />
# Amend the display name<br />
# Configure an Inbound Mail Service<br />
# Link an Outbound Route (Domain)<br />
<br />
| align="left" |<br />
# Click “Add Mailbox”<br />
# Specify a Mailbox Id and Display Name and click create.<br />
# Configure an Inbound Mail Service<br />
# Link an Outbound Route (Domain)<br />
<br />
|}<br />
<br />
<br />
The first two Shared Mailboxes are free, but any more mailboxes are subject to an additional monthly Subscription charge.<br />
<br />
==Configuring a Shared Mailbox==<br />
Once a Shared Mailbox has been created, it will be necessary to work through a number of tabs and complete some further configuration:<br />
<br />
===Mailbox Details===<br />
This is where the basic details of the mailbox are specified:<br />
* '''Mailbox Name:''' This is used to reference the mailbox within the Hornbill Platform when there is a need to specify a mailbox in certain application settings. Once the mailbox is created this cannot be changed.<br />
* '''Display Name:''' This is what the recipients of email will see when they receive an email from Hornbill. This can be edited at any time.<br />
<br />
===Adding an Inbound Mail Service===<br />
This tab is where we tell Hornbill where it will retrieve email messages. Remember, in a typical setup, email messages are not sent directly to your Hornbill instance but are retrieved periodically from a mail account that will reside on your organisations mail exchange. The information Hornbill needs is as follows:<br />
* '''Service:''' the industry standard Protocol that Hornbill will use to retrieve the messages. Hornbill Supports POP3 or IMAP4.<br />
* '''Server:''' the name or IP address of the mail server where the mail account is located.<br />
* '''Encryption:''' the encryption method used in the communication between Hornbill and your mail server.<br />
* '''Port:''' the port over which communication will take place. this will be dictated by the encryption method and Protocol used.<br />
* '''Username:'''the mail account username.<br />
* '''Password:''' the mail account password.<br />
<br><br />
'''PLEASE NOTE:''' As soon as a successful connection is established to the desired mailbox on your mail server, Hornbill will immediately retrieve any mail that resides in the Inbox, and as per the protocols, will delete any messages from the server once it has downloaded them to Hornbill. If you have any need for the messages to remain on the exchange server, you should ask your mail administrator to implement some rules that duplicates any messages sent to this mail account to another folder/location. <br />
<br />
The connection to any existing live mail account should be planned to take place at the end of the Switch On to avoid any competition for email between existing service desk applications and Hornbill Service Manager. For the purposes of testing inbound mail functionality, we advise setting up a temporary mail account on your existing mail server that Hornbill can connect to.<br />
<br><br />
<br><br />
===Linking an Outbound Mail Route (Domain)===<br />
The "Addresses" tab is where we specify a "reply address" i.e. the address that recipients will see when the receive email from Hornbill. This reply address also has another important function within the Hornbill Platform which is to link the outbound mail route to the Shared Mailbox. Prior to performing this step, it will be necessary to configure your Outbound Mail Route, click [[Outbound Mail Routing|'''here''']] here for details.<br />
<br><br />
# Click "Add Address"<br />
# Specify the alias (this is what forms everything to the left of the '@' symbol in your reply address).<br />
# From the pick list select the domain name. This pick list contacts all the Outbound Routes (Domains) you have configured in Hornbill (See the wiki page on '''[[Outbound Mail Routing]]''' for more detail).<br />
# Click "Save"<br />
# Mark the check box to the left of the Address, and set this as the default by clicking the "tick" button towards the top right.<br />
# A green dot should now appear to the right of the address to indicate that this is the default address.<br />
<br />
===Mailbox Status===<br />
The "Status" tab shows provides an overview of the mailbox folders.<br />
<br />
===Associated Roles===<br />
This tab shows which Security Roles give access to this particular Shared Mailbox. <br />
<br />
<br />
== Technical Information ==<br />
* [[E-Mail Protocol Support]]<br />
== Frequently Asked Questions ==<br />
==== Which protocol should I use, IMAP4 or POP3? ====<br />
: When Hornbill integrates with your enterprise or public e-mail system for shared mailboxes we only use your mail server to transport mail. Once we read a mail message from your server and move it safely into our database we delete the message on the remote server so in this context both POP3 and IMAP4 do the exact same job. That being said we would recommend that if your server supports it you use IMAP4 simply because its a more modern and more flexible protocol that allows us amongst other things to get instant mail notifications instead of polling for mail (which is the only option we have with POP3).<br />
<br />
==== Why does Hornbill delete mail from my mail server? ====<br />
:Hornbill stores all emails it receives into its shared mailboxes into a database, once your mail messages and attachments are in our database they are as safe as the rest of your data on our platform. One of the problems with IMAP and POP3 with the mail systems that implement these protocols is there is generally a finite amount of storage available for mail, so the question about how to keep storage use at manageable levels becomes a complication and an administrative overhead, and to combat this, many systems impose storage limits and forced message deletion policies. Another good reason is the technical details of how the IMAP and POP3 protocols are implemented. As data sets become large on your mail system, it takes more and more time and network bandwidth to synchronize between Hornbill and your Mail system. For these reasons it works a lot better and is the maintenance free option to move the messages from your mail server to our platform.</div>Victorshttps://wiki.hornbill.com/index.php?title=Azure_User_Import&diff=28591Azure User Import2022-01-12T14:59:10Z<p>Victors: </p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
{| style="width:100%"<br />
|[[Main_Page|Home]] > [[Integration]] > [[Hornbill Open Integration Tools]] > Azure User Import<br />
|style="text-align:right;"|<br />
|}<br />
</div><br />
<br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
== About the Hornbill Azure User Import Utility ==<br />
The utility provides a simple, safe and secure way to create user accounts on the Hornbill platform by synchronizing with accounts held in your Azure AD. The tool is designed to run behind your corporate firewall, connect to your Azure instance, query the required account information, transform and load into the Hornbill instance. The tool connects to the Hornbill and Azure instances in the cloud over HTTPS/SSL so as long as you have standard internet access then you should be able to use tool without the need to make any firewall configuration changes. The tool supports both the initial bulk import as well as incremental adds and updates. You can schedule the tool to run periodically to perform the import/update tasks as required.<br />
<br />
The utility employs the Azure Graph API to query the contents of Azure AD. If you would like to know more about this API and it's capabilities, please refer to the relevant Microsoft documentation: [https://docs.microsoft.com/en-gb/azure/active-directory/develop/active-directory-graph-api '''Azure Graph API Information''']<br />
<br />
The last utility using the Azure Graph API is version 1.4.4 [https://github.com/hornbill/goAzure2HUserImport/tree/v1.4.4 (download from GitHub)]<br />
<br />
As of '''v2.0.0''' the utility uses the Microsoft Graph API instead. Please refer to [https://docs.microsoft.com/en-gb/graph/ '''Microsoft Graph API Information''']. Please note that you will likely need to set a different set of permissions AND generate a new ClientSecret for the changes to take effect.<br />
<br />
Prior to '''v2.3.0''' the documentation is different and [[Special:Permalink/20877|can be found here]]<br />
<br />
=== Open Source ===<br />
<br />
The Azure User Import Utility is provided open source under the [https://wiki.hornbill.com/index.php/The_Hornbill_Community_License_(HCL) Hornbill Community Licence] and can be found [https://github.com/hornbill/goAzure2HUserImport here] on GitHub<br />
<br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
:* [[Azure App Registration Instructions]]<br />
:* [[User Import TimeZone Fields Options]]<br />
:* [[User Import DateTime Format Options]]<br />
:* [[API keys|Hornbill API Keys]]<br />
:* [[Users|Hornbill Users]]<br />
:* [[Organisation|Hornbill Organisations]]<br />
|}<br />
<br />
== Installation Overview ==<br />
<br />
=== Windows Installation ===<br />
* Download the architecture specific [https://github.com/hornbill/goAzure2HUserImport/releases/latest latest package] from GitHub <br />
* Extract zip into a folder you would like the application to run from e.g. '''C:\Hornbill_Import\'''<br />
* Open '''conf.json''' and add in the necessary configuration<br />
* Open Command Line Prompt as Administrator<br />
* Change Directory to the folder with azure_user_import.exe '''C:\Hornbill_Import\'''<br />
* Run the command azure_user_import.exe -dryrun=true<br />
<br />
== HTTP Proxies ==<br />
<br />
{{UtilityProxies}}<br />
<br />
== Configuration Overview ==<br />
Prior to configuring the .json file, it is advisable to read the following wiki page regarding [[users|'''Hornbill User Accounts''']] as it will provide some context to the content on this page.<br />
<br><br />
<br><br />
A default configuration file is provided conf.json, if a configuration file is not specified as a command line argument then conf.json must exist.<br />
<br />
{<br />
"APIKey": "", /* this is the API-key which is associated to a user in the Hornbill instance [1] */<br />
"InstanceId": "", /* your Hornbill instance name : not likely to change. Please note this value is case sensitive. */<br />
"AzureConf": {<br />
"Tenant": "",<br />
"ClientID": "", /* [2] */<br />
"ClientSecret": "",<br />
"UserFilter": "startswith(displayName,'Dave')",<br />
"UserProperties": [<br />
"employeeId",<br />
"mailNickname",<br />
"department"<br />
],<br />
"UserID": "mail",<br />
"Debug": false,<br />
"APIVersion":"v1.0", /* Azure API Version - leave as-is */<br />
"Search":"groups",<br />
"UsersByGroupID":[<br />
{<br />
"ObjectID":"Group Object ID",<br />
"Name":"Group Object Name"<br />
},<br />
{<br />
"ObjectID":"Second Group Object ID",<br />
"Name":"Second Group Object Name"<br />
}<br />
]<br />
},<br />
"User": {<br />
"Operation":"Both", /* options : Create/Update/Both ; import actions to perform on the discovered user records */<br />
"UserDN": "&#123;&#123;.keysearch&#125;&#125;",<br />
"AccountMapping":{ /* mapping of fields in the format: "Field in Hornbill": "data to insert" [4] */<br />
"UserID":"&#123;&#123;.mail&#125;&#125;",<br />
"LoginID":"&#123;&#123;.mail&#125;&#125;",<br />
"EmployeeID":"&#123;&#123;.mail&#125;&#125;",<br />
"UserType":"basic", /* (basic vs user) */<br />
"Name":"&#123;&#123;.givenName&#125;&#125; &#123;&#123;.surname&#125;&#125;",<br />
"Password":"", /* if left blank a random password will be generated [7] */<br />
"FirstName":"&#123;&#123;.givenName&#125;&#125;",<br />
"LastName":"&#123;&#123;.surname&#125;&#125;",<br />
"JobTitle":"",<br />
"Site":"1", /* if set, see also comments below on SiteLookup [8] */<br />
"Phone":"&#123;&#123;.telephoneNumber&#125;&#125;",<br />
"Email":"&#123;&#123;.mail&#125;&#125;",<br />
"Mobile":"",<br />
"AbsenceMessage":"",<br />
"TimeZone":"", /* see [[User Import TimeZone Fields Options]] */<br />
"Language":"", /* ISO 629 in combination with ISO 3166 as per [https://en.wikipedia.org/wiki/Language_localisation this wikipedia entry] */<br />
"DateTimeFormat":"", /* see [[User Import DateTime Format Options]] */<br />
"DateFormat":"",<br />
"TimeFormat":"",<br />
"CurrencySymbol":"", /* any character */<br />
"CountryCode":"" /* expects ISO 3166 Alpha 2 two Character Country Code [https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes (see here)] */<br />
},<br />
"Type":{<br />
"Action":"Create" /* options : Create/Update/Both ; setting to Basic User (as opposed to Full User) */<br />
},<br />
"Status":{<br />
"Action":"Both", /* options : Create/Update/Both ; on what action to change the User Account Status */<br />
"Value":"active" /* options : active/suspended/archived */<br />
},<br />
"Role":{<br />
"Action":"Both" /* options : Create/Update/Both ; on what action to change the User Role */<br />
, "Roles":[ /* list of Roles assigned to the users being imported */<br />
"Basic User Role"<br />
]<br />
},<br />
"ProfileMapping":{ /* further fields [5] */<br />
"MiddleName":"",<br />
"JobDescription":"",<br />
"Manager":"&#123;&#123;.manager&#125;&#125;", /* full name of manager. If set, see also comments below on UserManagerMapping */<br />
"WorkPhone":"",<br />
"Qualifications":"",<br />
"Interests":"",<br />
"Expertise":"",<br />
"Gender":"",<br />
"Dob":"",<br />
"Nationality":"",<br />
"Religion":"",<br />
"HomeTelephone":"&#123;&#123;.telephoneNumber&#125;&#125;",<br />
"SocialNetworkA":"",<br />
"SocialNetworkB":"",<br />
"SocialNetworkC":"",<br />
"SocialNetworkD":"",<br />
"SocialNetworkE":"",<br />
"SocialNetworkF":"",<br />
"SocialNetworkG":"",<br />
"SocialNetworkH":"",<br />
"PersonalInterests":"",<br />
"homeAddress":"",<br />
"PersonalBlog":"",<br />
"Attrib1":"1",<br />
"Attrib2":"2",<br />
"Attrib3":"3",<br />
"Attrib4":"4",<br />
"Attrib5":"5",<br />
"Attrib6":"6",<br />
"Attrib7":"7",<br />
"Attrib8":"8"<br />
},<br />
"Manager":{<br />
"Action": "Both" /* options : Create/Update/Both ; on what action to change the User's Manager */<br />
"Value": "&#123;&#123;.mgrfirstname&#125;&#125; &#123;&#123;.mgrlastname&#125;&#125;" /* full name of manager. If set, see also comments below on User Manager Mapping */<br />
, "Options": {<br />
"GetStringFromValue": {<br />
"Regex" : ""<br />
, "Reverse": false<br />
}<br />
, "MatchAgainstDistinguishedName": false<br />
, "Search": {<br />
"Enable": true /* options : true/false ; turn this on or off */<br />
, "SearchField": ""<br />
}<br />
}<br />
}<br />
, "Image":{ /* Profile Image configuration section [10] */<br />
"Action":"Both" /* options : Create/Update/Both ; on what action to change the Image */<br />
, "UploadType": "AZURE" /* options : URI/URL/AZURE ; local (network) drive or HTTP(S) served image */<br />
, "InsecureSkipVerify": false<br />
, "ImageType": "jpg" /* options : jpg/png */<br />
, "ImageSize": "240" /* options: ""/48/64/96/120/240/360/432/504/648 [https://docs.microsoft.com/en-us/graph/api/profilephoto-get see restrictions]; "" will use the default MS thumbnail size */<br />
, "URI": "&#123;&#123;.id&#125;&#125;"<br />
}<br />
, "Site":{<br />
"Action":"Both" /* options : Create/Update/Both ; on what action to change the User's Site [9] */<br />
, "Value": "&#123;&#123;.physicalDeliveryOfficeName&#125;&#125;"<br />
}<br />
, "Org":[ /* Organisational Units to associate the imported user with [6] */<br />
{<br />
"Action":"Both" /* options : Create/Update/Both ; on what action to add to the organisational structure */<br />
, "value":"&#123;&#123;.department&#125;&#125;" /* name of organisational unit */<br />
, "MemberOf":""<br />
, "Options": {<br />
"Type":2, /* options : 0,...,5 ; type of organisational unit, respectively: general/team/department/costcenter/division/company */<br />
"Membership":"member", /* options : member/teamLeader/manager */<br />
"TasksView":false, /* options : true/false ; If set true, then the user can view tasks assigned to this group */<br />
"TasksAction":false, /* options : true/false ; If set true, then the user can action tasks assigned to this group */<br />
"OnlyOneGroupAssignment":false<br />
}<br />
}<br />
, {<br />
"Action":"Both"<br />
, "value":"Great Company"<br />
, "MemberOf":""<br />
, "Options": {<br />
"Type":5,<br />
"Membership":"member",<br />
"TasksView":false,<br />
"TasksAction":false,<br />
"OnlyOneGroupAssignment":false /* options: true/false ; if set to true, then a user can only be associated to a single group at any one time */<br />
}<br />
}<br />
]<br />
}<br />
}<br />
<br />
<br />
# A valid API key needs to be created against a Hornbill user account with enough rights to create and update user accounts. Details on how to create an API key can be found [https://wiki.hornbill.com/index.php?title=API_keys '''here'''].<br />
# The Instance ID (also referred to as the instance name) can be found in the URL used by your organisation to access your Hornbill instance i.e. <nowiki>https://live.hornbill.com/</nowiki>'''instanceid'''/ (case sensitive).<br />
# There are relevant Microsoft instructions on-line on how to obtain the ClientID and ClientSecret from within Azure - [[Azure App Registration Instructions|our quickstart version]]. We have found that the following permissions need to be granted within Azure, though these could differ for yourselves, so please rely on your own expertise. Application permissions on: ''Group.Read.All, GroupMember.Read.All, Team.ReadBasic.All, TeamMember.Read.All, User.Read.All''. Delegated permission on ''User.Read''. The permission settings need confirming.<br />
# The fields are quite self-explanatory and part of the "Details"-section (as opposed to the "About"-section [5]), most can be left as-is. The mapping is done with some templating of the format &#123;&#123;fieldname&#125;&#125;. One can be a little adventurous, for instance "&#123;&#123;.mgrfirstname&#125;&#125; - &#123;&#123;.mgrlastname&#125;&#125;" puts a space, hyphen and space between the person's manager's first and last name. One can use this to prefix or suffix the values coming from the database or indeed to set a static value (as done for example with userType and Attribute under OrgLookup for the company (Type:5)).<br />
# The same holds here as for [4], this is regarding the "About"-section of the user's details.<br />
# this is a non-ordered list of the organisation structure - it allows one to associate the imported user to one or more levels within the organisation. The delivered configuration file will associate each imported user with EACH of the three discernable levels (company, department and division) - depending on your requirements regarding the availability of services and such, you will likely want to manipulate this section and perhaps only leave behind the "department" level (Type: 2) with the TasksView and TasksAction set accordingly. Please note that this import only adds and not REMOVES any association.<br />
# The password field should be left empty as the utility generates a secure password that adheres to the User Password Policy as specified on your Hornbill instance. This password will only be temporary as the user should use the "Forgot Password" link available on the Hornbill Login Screen to reset their password the first time they navigate to your Hornbill instance.<br />
# "Site" - Recognises a corresponding Hornbill site ID. E.g. "Site":"1" - The value of Site should be numeric. As an alternative, the import configuration provides a "Site Lookup" section (outlined in a later section) which can make a site association based on the contents of a directory attribute.<br />
# If a lookup action is not needed, remove the action type so only empty quotes are left i.e. ''"Action":""''<br />
# "Image" - by default this will take the thumbnail image. IF ''.id'' does NOT work for the '''"URI"''', please try ''.userPrincipalName'' instead. <br />
<br><br />
<br><br />
=== Filtering ===<br />
There are two methods of filtering users that you can configure with this tool. They are both defined in the '''AzureConf''' section of the configuration.<br />
<br />
To import all direct User objects within one or more Azure Groups:<br />
* AzureConf > Search : set the value of this parameter to '''groups'''<br />
* AzureConf > UsersByGroupID : this is a JSON array of Groups to return Users from:<br />
** ObjectID : the Object ID of the Group you want to return direct member Users from;<br />
** Name : The Name of the Group<br />
<br />
Using an Azure AD filter to find Users to import:<br />
* AzureConf > Search : set the value of this parameter to '''users'''<br />
* AzureConf > UserFilter : define an Azure filter to search for User objects. If not defined, then all User objects from your Azure AD will be returned.<br />
<br />
=== Fields ===<br />
These fields are those which Azure AD recognise as part of an account (eg givenName) they match LDAP variables quite nicely. However, please keep in mind that although for instance multiple email addresses can be set in Azure, only the main one in ''mail'' can be used (unless one makes amendments to the script)<br />
<br />
====Associating a Site to Hornbill User Accounts====<br />
The DB Import utility has the ability to associate a Hornbill Site record to a user account based on the contents of a field. This is achieved through a "Look-up". The Look up mechanism is quite simple and works in the following manner. <br />
# The import reads the fields (template rules work) that is specified in the "value" field. In the example shown, the '''site''' field is used.<br />
# It takes the content and tries to identify if there is an existing site record in Hornbill with a name that matches the value of the site. e.g. if the site field contained "Brussels", the import would look for a Hornbill Site record with the name "Brussels".<br />
# If a match is found, the import will associate the user to the site.<br />
# If no site record is found, the import will move onto the next user.<br />
i.e. The name of the Site record in Hornbill must match the value of the directory attribute specified. More on Hornbill Sites can be found here: [[Sites|'''Sites''']]<br />
<br><br />
<br><br />
====Associating a Group to Hornbill User Accounts====<br />
The DB Import has the ability to associate a Hornbill Group to a user account based on the contents of a fieldname. This is achieved through a "Look-up". The Look up mechanism is quite simple and works in the following manner. <br />
# The utility reads the attribute that is specified in the orgLookup section. In the example shown, the '''department''' field is used.<br />
# It takes the content and tries to identify if there is a Hornbill Group that exists with a name that matches the value of the field name. e.g. if the '''department''' field contained "Accounting", the utility would look for a Hornbill Group called "Accounting".<br />
# If a match is found, the import will associate the user to the group.<br />
# If no Hornbill organisation is found, the import will move onto the next user.<br />
i.e. The name of the Organization(Group) in Hornbill must match the value of the database field. More on Hornbill Organisational Groups can be found here: [[Organisation|'''Organisation Structure''']]<br />
<br><br />
<br><br />
====User Manager Mapping in Hornbill====<br />
Hornbill can store a manager relationship between two users in Hornbill. The manager look up mechanism works as follows:<br />
# The import reads the contents of the value attribute which will contain the some text identifying the manager eg "''mgrfirstname mgrlastname''"<br />
# IF a regex it given, then this first will be applied to the data obtained above.<br />
# The import is hard-coded to remove any slash and comma in the result.<br />
# With the "Reverse" option enabled, the above string would be reversed to give: "''mgrlastname mgrfirstname''"<br />
# The import tries to match this value against an existing Hornbill user by looking up the "Handle" field i.e. h_name.<br />
<br />
== Preparing to Run the Import ==<br />
Ultimately, the executable will be scheduled in Windows task scheduler (see later) but to test, gain confidence, and perform the initial upload of users the utility can be executed from a command prompt window on an ad-hoc basis. The command used to execute the import can contain a number of command line parameters.<br />
* dryrun - Defaults to '''''false''''' - Set to True and the XMLMC for Create and Update users will not be called and instead the XML will be dumped to the log file, this is to aid in debugging the initial connection information.<br />
* file - Defaults to '''''conf.json''''' - Name of the Configuration file to load<br />
* zone - Defaults to '''''eur''''' - Allows you to change the ZONE used for creating the XMLMC EndPoint URL: <nowiki>https://{ZONE}api.hornbill.com/{INSTANCE}/</nowiki><br />
* workers - Defaults to `3` - Allows you to change the number of worker threads used to process the import, this can improve performance on slow import but using too many workers have a detriment to performance of your Hornbill instance.<br />
* debug - Defaults to '''''false''''' - outputs extra information to the log to help with debugging issues.<br />
<br />
== Testing Overview ==<br />
There is no substitute for hands-on experience when becoming familiar with the Hornbill import utilities. <br />
<br><br />
The Azure User import accepts and understands a number of "Command Line Parameters" that can be used when running the utility from the command line. The most important one for testing is the '''-dryrun=true''' command. When this is specified, no information will be written to Hornbill and it allows you to confirm that the configuration is correct and that a connection to your directory server can be established. A dryrun still outputs a log file which provides you with an opportunity to review and understand any error messages that may occur.<br />
<br><br />
Below are some high level steps to help you build confidence in your configuration:<br />
<br><br />
<br><br />
# In the configuration, specify an "UserFilter" to target a single user object. (Its good practice to initially test on a single, or small set of, user objects as this allows the dryruns to complete quicker and there is less log content to sift through).<br />
# Perform a dryrun (by executing the utility along with the -dryrun=true command line parameter).<br />
# Review cmd output and log file for errors<br />
# Check against "Common Error Messages" listed on the wiki and take action to rectify where necessary.<br />
# Continue with dryrun tests until you are happy that all the errors are accounted for.<br />
# Perform a live import with this single user object still specified i.e. set -dryrun=false<br />
# Review user account in Hornbill and check all user properties are as expected i.e. email contains an email address etc.<br />
# Adjust conf file user property mappings as necessary<br />
# Loop through steps 6 - 8 as many times as is necessary until you are happy with the information being transported into the Hornbill user account properties.<br />
# Amend the "UserFilter" and/or the scope of the "Search" variable to target the user objects required for a full import.<br />
# Perform a dryrun<br />
# Review cmd output and log file for errors<br />
# Check against "Common Error Messages" listed on the wiki and take action to rectify where necessary.<br />
# Continue with dryrun tests until you are happy that all the errors are accounted for.<br />
<br><br />
Example command line:<br />
<code><br />
azure_user_import.exe -dryrun=true<br />
</code><br />
<br />
<br />
=== What Hornbill Roles are needed for the Import to Complete Successfully? ===<br />
A default role is delivered with Hornbill that is designed to be used in conjunction with our range of user import utilities. The security role is called '''User Import''' and has all the necessary rights to import / update user properties. <br />
<br />
As you may now be aware, every action within Hornbill must be performed in the context of a user account. As well as the chosen user account possessing the "user Import" role which facilitates the importing of the user accounts and updating of the user properties, this user account must posses the roles that you are associating to imported user accounts via the import utility.<br />
The above comment about roles is referring to Hornbill's security model when it comes to associating roles to user accounts, which is: ''Hornbill is designed to only allow the association of roles if the User who is performing the assignment of a particular role already possess the same system/application rights among the roles that they themselves possess.'' This security measure prevents you inflating your own rights or giving a user more rights than you have yourself. <br />
<br />
i.e. in addition to the "User Import" role, any roles you try and assign to the user accounts being imported must be assigned to the user account logging in and running the import.<br />
<br />
<br />
== API Key Rules ==<br />
This utility uses ([[API keys]]):<br />
<br />
* activity:profileImageSet<br />
* admin:sysOptionGet<br />
* admin:userAddGroup<br />
* admin:userAddRole<br />
* admin:userCreate<br />
* admin:userDeleteGroup<br />
* admin:userProfileSet<br />
* admin:userSetAccountStatus<br />
* admin:userUpdate<br />
* data:entityAddRecord<br />
* data:entityUpdateRecord<br />
* data:queryExec<br />
* session:getSystemLicenseInfo<br />
<br />
=Troubleshooting=<br />
== Logging Overview ==<br />
<br />
All Logging output is saved in the "log" directory which can be found in the same location as the executable. The file name contains the date and time the import was run '''''Azure_User_Import_2015-11-06T14-26-13Z.log'''''<br />
==Common Error Messages==<br />
<br />
Below are some common errors that you may encounter in the log file and what they mean:<br />
* ''' ''[ERROR] Error Decoding Configuration File:.....'' ''' - this will be typically due to a missing quote (") or comma (,) somewhere in the configuration file. This is where an online JSON viewer/validator can come in handy rather than trawling the conf file looking for that proverbial needle in a haystack.<br />
* ''' ''[ERROR] Get https://api.github.com/repos/hornbill/goAzure2HUserImport/tags: dial tcp xx.xx.xx.xx:xxx: ........'' ''' - this most likely indicates that you have a HTTP proxy server on your network between the host running the executable and your Hornbill API endpoint. Ensure the http_proxy environment variable is set (See the section on "HTTP Proxies" for more information) and that the proxy is configured to allow this communication.<br />
* ''' ''panic: runtime error: invalid memory address or nil pointer deference [recovered]...'' ''' - this error is suggesting an incorrectly specified attribute in the conf file. Where information is being obtained from a directory attribute, the attribute must be in the following format: ''<nowiki>{{.directoryAttributeName}}</nowiki>''<br />
* ''' ''[ERROR] Unable to Create User: Invalid value for parameter '[parameter name]': The text size provided (31 characters) is greater than the maximum allowable size of 20 characters for column [column name]'' ''' - the contents of your directory attribute exceed the maximum number of characters that can be placed in the Hornbill database column.<br />
* ''' ''[ERROR] Unable to Create User: The value in element <userId> did not meet the required input pattern constraints. at location '/methodCall/params/userId' '' ''' - the user id contains characters that are not allowed. The User Id should be made up of alphanumeric characters. Full stops (.) and underscores (_) are also supported.<br />
* ''' ''[ERROR] Unable to Create User: [usedID] Error: The specified handle [Display Name] is already in use'' ''' - By default, the "Handle" (Hornbill Display Name) must be unique. This error suggests a user account already exists in Hornbill which is using this handle. The duplicate-handle validation can be disabled via a setting found in Hornbill Adminsitration under "''Home > System > Advanced Settings''" and filtering for "''api.xmlmc.uniqueUserHandle.enable''"<br />
* ''' ''[ERROR] Unable to Update User: Invalid value for parameter '[parameter name]': Error setting value for column '[column name]'. bad lexical cast: source type value could not be interpreted as target'' ''' - this error is indicating that the contents of your directory attribute are in a format that is not compatible with the type of the Hornbill database column. For example, you will get this when trying to place text into a database field that is of type "INT" (accepts integer values only).<br />
* ''' ''[ERROR] Unable to Load LDAP Attribute: '[LDAP attribute name]' For Input Param: '[Hornbill Parameter name]' '' ''' - When the import utility is unable to load a particular LDAP attribute, this means that the attribute field in your directory does not contain a value. This error will not prevent the user account being created or updated in Hornbill and can be considered more as a warning rather than an outright failure or problem.<br />
* ''' ''[ERROR] Unable to Set User Status [status name]: You have reached your user subscription limit of [xx], you will need to expand your subscription level if you wish to add more users'' ''' - The utility is trying to update the user status of an existing user account from an inactive status (i.e. "archived" or "suspended") to "active" however in order for this to be successful you must have some subscriptions available.<br />
* ''' ''[ERROR] Unable to run import, a previous import is still running'' ''' - this can occur if the previous import failed to complete. Perform a manual (non-scheduled) run of the import from the command line including the argument "forcerun=true". Future imports should now run without issue.<br />
<br />
=== Error Codes ===<br />
* '''100''' - Unable to create log File<br />
* '''101''' - Unable to create log folder<br />
* '''102''' - Unable to Load Configuration File<br />
<br />
== Scheduling Overview ==<br />
<br />
=== Windows ===<br />
You can schedule .exe to run with any optional command line argument from Windows Task Scheduler.<br />
* Ensure the user account running the task has rights to Azure2UserImport.exe and the containing folder.<br />
* Make sure the Start In parameter contains the folder where the executable resides in, otherwise it will not be able to pick up the correct path. eg:<br />
<br />
[[File:Ldap_import_schedule.png]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Azure_User_Import&diff=28590Azure User Import2022-01-12T11:37:11Z<p>Victors: </p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
{| style="width:100%"<br />
|[[Main_Page|Home]] > [[Integration]] > [[Hornbill Open Integration Tools]] > Azure User Import<br />
|style="text-align:right;"|<br />
|}<br />
</div><br />
<br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
== About the Hornbill Azure User Import Utility ==<br />
The utility provides a simple, safe and secure way to create user accounts on the Hornbill platform by synchronizing with accounts held in your Azure AD. The tool is designed to run behind your corporate firewall, connect to your Azure instance, query the required account information, transform and load into the Hornbill instance. The tool connects to the Hornbill and Azure instances in the cloud over HTTPS/SSL so as long as you have standard internet access then you should be able to use tool without the need to make any firewall configuration changes. The tool supports both the initial bulk import as well as incremental adds and updates. You can schedule the tool to run periodically to perform the import/update tasks as required.<br />
<br />
The utility employs the Azure Graph API to query the contents of Azure AD. If you would like to know more about this API and it's capabilities, please refer to the relevant Microsoft documentation: [https://docs.microsoft.com/en-gb/azure/active-directory/develop/active-directory-graph-api '''Azure Graph API Information''']<br />
<br />
The last utility using the Azure Graph API is version 1.4.4 [https://github.com/hornbill/goAzure2HUserImport/tree/v1.4.4 (download from GitHub)]<br />
<br />
As of '''v2.0.0''' the utility uses the Microsoft Graph API instead. Please refer to [https://docs.microsoft.com/en-gb/graph/ '''Microsoft Graph API Information''']. Please note that you will likely need to set a different set of permissions AND generate a new ClientSecret for the changes to take effect.<br />
<br />
Prior to '''v2.3.0''' the documentation is different and [[Special:Permalink/20877|can be found here]]<br />
<br />
=== Open Source ===<br />
<br />
The Azure User Import Utility is provided open source under the [https://wiki.hornbill.com/index.php/The_Hornbill_Community_License_(HCL) Hornbill Community Licence] and can be found [https://github.com/hornbill/goAzure2HUserImport here] on GitHub<br />
<br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
:* [[Azure App Registration Instructions]]<br />
|}<br />
<br />
== Installation Overview ==<br />
<br />
=== Windows Installation ===<br />
* Download the architecture specific [https://github.com/hornbill/goAzure2HUserImport/releases/latest latest package] from GitHub <br />
* Extract zip into a folder you would like the application to run from e.g. '''C:\Hornbill_Import\'''<br />
* Open '''conf.json''' and add in the necessary configuration<br />
* Open Command Line Prompt as Administrator<br />
* Change Directory to the folder with azure_user_import.exe '''C:\Hornbill_Import\'''<br />
* Run the command azure_user_import.exe -dryrun=true<br />
<br />
== HTTP Proxies ==<br />
<br />
{{UtilityProxies}}<br />
<br />
== Configuration Overview ==<br />
Prior to configuring the .json file, it is advisable to read the following wiki page regarding [[users|'''Hornbill User Accounts''']] as it will provide some context to the content on this page.<br />
<br><br />
<br><br />
A default configuration file is provided conf.json, if a configuration file is not specified as a command line argument then conf.json must exist.<br />
<br />
{<br />
"APIKey": "", /* this is the API-key which is associated to a user in the Hornbill instance [1] */<br />
"InstanceId": "", /* your Hornbill instance name : not likely to change. Please note this value is case sensitive. */<br />
"AzureConf": {<br />
"Tenant": "",<br />
"ClientID": "", /* [2] */<br />
"ClientSecret": "",<br />
"UserFilter": "startswith(displayName,'Dave')",<br />
"UserProperties": [<br />
"employeeId",<br />
"mailNickname",<br />
"department"<br />
],<br />
"UserID": "mail",<br />
"Debug": false,<br />
"APIVersion":"v1.0", /* Azure API Version - leave as-is */<br />
"Search":"groups",<br />
"UsersByGroupID":[<br />
{<br />
"ObjectID":"Group Object ID",<br />
"Name":"Group Object Name"<br />
},<br />
{<br />
"ObjectID":"Second Group Object ID",<br />
"Name":"Second Group Object Name"<br />
}<br />
]<br />
},<br />
"User": {<br />
"Operation":"Both", /* options : Create/Update/Both ; import actions to perform on the discovered user records */<br />
"UserDN": "&#123;&#123;.keysearch&#125;&#125;",<br />
"AccountMapping":{ /* mapping of fields in the format: "Field in Hornbill": "data to insert" [4] */<br />
"UserID":"&#123;&#123;.mail&#125;&#125;",<br />
"LoginID":"&#123;&#123;.mail&#125;&#125;",<br />
"EmployeeID":"&#123;&#123;.mail&#125;&#125;",<br />
"UserType":"basic", /* (basic vs user) */<br />
"Name":"&#123;&#123;.givenName&#125;&#125; &#123;&#123;.surname&#125;&#125;",<br />
"Password":"", /* if left blank a random password will be generated [7] */<br />
"FirstName":"&#123;&#123;.givenName&#125;&#125;",<br />
"LastName":"&#123;&#123;.surname&#125;&#125;",<br />
"JobTitle":"",<br />
"Site":"1", /* if set, see also comments below on SiteLookup [8] */<br />
"Phone":"&#123;&#123;.telephoneNumber&#125;&#125;",<br />
"Email":"&#123;&#123;.mail&#125;&#125;",<br />
"Mobile":"",<br />
"AbsenceMessage":"",<br />
"TimeZone":"", /* see [[User Import TimeZone Fields Options]] */<br />
"Language":"", /* ISO 629 in combination with ISO 3166 as per [https://en.wikipedia.org/wiki/Language_localisation this wikipedia entry] */<br />
"DateTimeFormat":"", /* see [[User Import DateTime Format Options]] */<br />
"DateFormat":"",<br />
"TimeFormat":"",<br />
"CurrencySymbol":"", /* any character */<br />
"CountryCode":"" /* expects ISO 3166 Alpha 2 two Character Country Code [https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes (see here)] */<br />
},<br />
"Type":{<br />
"Action":"Create" /* options : Create/Update/Both ; setting to Basic User (as opposed to Full User) */<br />
},<br />
"Status":{<br />
"Action":"Both", /* options : Create/Update/Both ; on what action to change the User Account Status */<br />
"Value":"active" /* options : active/suspended/archived */<br />
},<br />
"Role":{<br />
"Action":"Both" /* options : Create/Update/Both ; on what action to change the User Role */<br />
, "Roles":[ /* list of Roles assigned to the users being imported */<br />
"Basic User Role"<br />
]<br />
},<br />
"ProfileMapping":{ /* further fields [5] */<br />
"MiddleName":"",<br />
"JobDescription":"",<br />
"Manager":"&#123;&#123;.manager&#125;&#125;", /* full name of manager. If set, see also comments below on UserManagerMapping */<br />
"WorkPhone":"",<br />
"Qualifications":"",<br />
"Interests":"",<br />
"Expertise":"",<br />
"Gender":"",<br />
"Dob":"",<br />
"Nationality":"",<br />
"Religion":"",<br />
"HomeTelephone":"&#123;&#123;.telephoneNumber&#125;&#125;",<br />
"SocialNetworkA":"",<br />
"SocialNetworkB":"",<br />
"SocialNetworkC":"",<br />
"SocialNetworkD":"",<br />
"SocialNetworkE":"",<br />
"SocialNetworkF":"",<br />
"SocialNetworkG":"",<br />
"SocialNetworkH":"",<br />
"PersonalInterests":"",<br />
"homeAddress":"",<br />
"PersonalBlog":"",<br />
"Attrib1":"1",<br />
"Attrib2":"2",<br />
"Attrib3":"3",<br />
"Attrib4":"4",<br />
"Attrib5":"5",<br />
"Attrib6":"6",<br />
"Attrib7":"7",<br />
"Attrib8":"8"<br />
},<br />
"Manager":{<br />
"Action": "Both" /* options : Create/Update/Both ; on what action to change the User's Manager */<br />
"Value": "&#123;&#123;.mgrfirstname&#125;&#125; &#123;&#123;.mgrlastname&#125;&#125;" /* full name of manager. If set, see also comments below on User Manager Mapping */<br />
, "Options": {<br />
"GetStringFromValue": {<br />
"Regex" : ""<br />
, "Reverse": false<br />
}<br />
, "MatchAgainstDistinguishedName": false<br />
, "Search": {<br />
"Enable": true /* options : true/false ; turn this on or off */<br />
, "SearchField": ""<br />
}<br />
}<br />
}<br />
, "Image":{ /* Profile Image configuration section [10] */<br />
"Action":"Both" /* options : Create/Update/Both ; on what action to change the Image */<br />
, "UploadType": "AZURE" /* options : URI/URL/AZURE ; local (network) drive or HTTP(S) served image */<br />
, "InsecureSkipVerify": false<br />
, "ImageType": "jpg" /* options : jpg/png */<br />
, "ImageSize": "240" /* options: ""/48/64/96/120/240/360/432/504/648 [https://docs.microsoft.com/en-us/graph/api/profilephoto-get see restrictions]; "" will use the default MS thumbnail size */<br />
, "URI": "&#123;&#123;.id&#125;&#125;"<br />
}<br />
, "Site":{<br />
"Action":"Both" /* options : Create/Update/Both ; on what action to change the User's Site [9] */<br />
, "Value": "&#123;&#123;.physicalDeliveryOfficeName&#125;&#125;"<br />
}<br />
, "Org":[ /* Organisational Units to associate the imported user with [6] */<br />
{<br />
"Action":"Both" /* options : Create/Update/Both ; on what action to add to the organisational structure */<br />
, "value":"&#123;&#123;.department&#125;&#125;" /* name of organisational unit */<br />
, "MemberOf":""<br />
, "Options": {<br />
"Type":2, /* options : 0,...,5 ; type of organisational unit, respectively: general/team/department/costcenter/division/company */<br />
"Membership":"member", /* options : member/teamLeader/manager */<br />
"TasksView":false, /* options : true/false ; If set true, then the user can view tasks assigned to this group */<br />
"TasksAction":false, /* options : true/false ; If set true, then the user can action tasks assigned to this group */<br />
"OnlyOneGroupAssignment":false<br />
}<br />
}<br />
, {<br />
"Action":"Both"<br />
, "value":"Great Company"<br />
, "MemberOf":""<br />
, "Options": {<br />
"Type":5,<br />
"Membership":"member",<br />
"TasksView":false,<br />
"TasksAction":false,<br />
"OnlyOneGroupAssignment":false /* options: true/false ; if set to true, then a user can only be associated to a single group at any one time */<br />
}<br />
}<br />
]<br />
}<br />
}<br />
<br />
<br />
# A valid API key needs to be created against a Hornbill user account with enough rights to create and update user accounts. Details on how to create an API key can be found [https://wiki.hornbill.com/index.php?title=API_keys '''here'''].<br />
# The Instance ID (also referred to as the instance name) can be found in the URL used by your organisation to access your Hornbill instance i.e. <nowiki>https://live.hornbill.com/</nowiki>'''instanceid'''/ (case sensitive).<br />
# There are relevant Microsoft instructions on-line on how to obtain the ClientID and ClientSecret from within Azure - [[Azure App Registration Instructions|our quickstart version]]. We have found that the following permissions need to be granted within Azure, though these could differ for yourselves, so please rely on your own expertise. Application permissions on: ''Group.Read.All, GroupMember.Read.All, Team.ReadBasic.All, TeamMember.Read.All, User.Read.All''. Delegated permission on ''User.Read''. The permission settings need confirming.<br />
# The fields are quite self-explanatory and part of the "Details"-section (as opposed to the "About"-section [5]), most can be left as-is. The mapping is done with some templating of the format &#123;&#123;fieldname&#125;&#125;. One can be a little adventurous, for instance "&#123;&#123;.mgrfirstname&#125;&#125; - &#123;&#123;.mgrlastname&#125;&#125;" puts a space, hyphen and space between the person's manager's first and last name. One can use this to prefix or suffix the values coming from the database or indeed to set a static value (as done for example with userType and Attribute under OrgLookup for the company (Type:5)).<br />
# The same holds here as for [4], this is regarding the "About"-section of the user's details.<br />
# this is a non-ordered list of the organisation structure - it allows one to associate the imported user to one or more levels within the organisation. The delivered configuration file will associate each imported user with EACH of the three discernable levels (company, department and division) - depending on your requirements regarding the availability of services and such, you will likely want to manipulate this section and perhaps only leave behind the "department" level (Type: 2) with the TasksView and TasksAction set accordingly. Please note that this import only adds and not REMOVES any association.<br />
# The password field should be left empty as the utility generates a secure password that adheres to the User Password Policy as specified on your Hornbill instance. This password will only be temporary as the user should use the "Forgot Password" link available on the Hornbill Login Screen to reset their password the first time they navigate to your Hornbill instance.<br />
# "Site" - Recognises a corresponding Hornbill site ID. E.g. "Site":"1" - The value of Site should be numeric. As an alternative, the import configuration provides a "Site Lookup" section (outlined in a later section) which can make a site association based on the contents of a directory attribute.<br />
# If a lookup action is not needed, remove the action type so only empty quotes are left i.e. ''"Action":""''<br />
# "Image" - by default this will take the thumbnail image. IF ''.id'' does NOT work for the '''"URI"''', please try ''.userPrincipalName'' instead. <br />
<br><br />
<br><br />
=== Filtering ===<br />
There are two methods of filtering users that you can configure with this tool. They are both defined in the '''AzureConf''' section of the configuration.<br />
<br />
To import all direct User objects within one or more Azure Groups:<br />
* AzureConf > Search : set the value of this parameter to '''groups'''<br />
* AzureConf > UsersByGroupID : this is a JSON array of Groups to return Users from:<br />
** ObjectID : the Object ID of the Group you want to return direct member Users from;<br />
** Name : The Name of the Group<br />
<br />
Using an Azure AD filter to find Users to import:<br />
* AzureConf > Search : set the value of this parameter to '''users'''<br />
* AzureConf > UserFilter : define an Azure filter to search for User objects. If not defined, then all User objects from your Azure AD will be returned.<br />
<br />
=== Fields ===<br />
These fields are those which Azure AD recognise as part of an account (eg givenName) they match LDAP variables quite nicely. However, please keep in mind that although for instance multiple email addresses can be set in Azure, only the main one in ''mail'' can be used (unless one makes amendments to the script)<br />
<br />
====Associating a Site to Hornbill User Accounts====<br />
The DB Import utility has the ability to associate a Hornbill Site record to a user account based on the contents of a field. This is achieved through a "Look-up". The Look up mechanism is quite simple and works in the following manner. <br />
# The import reads the fields (template rules work) that is specified in the "value" field. In the example shown, the '''site''' field is used.<br />
# It takes the content and tries to identify if there is an existing site record in Hornbill with a name that matches the value of the site. e.g. if the site field contained "Brussels", the import would look for a Hornbill Site record with the name "Brussels".<br />
# If a match is found, the import will associate the user to the site.<br />
# If no site record is found, the import will move onto the next user.<br />
i.e. The name of the Site record in Hornbill must match the value of the directory attribute specified. More on Hornbill Sites can be found here: [[Sites|'''Sites''']]<br />
<br><br />
<br><br />
====Associating a Group to Hornbill User Accounts====<br />
The DB Import has the ability to associate a Hornbill Group to a user account based on the contents of a fieldname. This is achieved through a "Look-up". The Look up mechanism is quite simple and works in the following manner. <br />
# The utility reads the attribute that is specified in the orgLookup section. In the example shown, the '''department''' field is used.<br />
# It takes the content and tries to identify if there is a Hornbill Group that exists with a name that matches the value of the field name. e.g. if the '''department''' field contained "Accounting", the utility would look for a Hornbill Group called "Accounting".<br />
# If a match is found, the import will associate the user to the group.<br />
# If no Hornbill organisation is found, the import will move onto the next user.<br />
i.e. The name of the Organization(Group) in Hornbill must match the value of the database field. More on Hornbill Organisational Groups can be found here: [[Organisation|'''Organisation Structure''']]<br />
<br><br />
<br><br />
====User Manager Mapping in Hornbill====<br />
Hornbill can store a manager relationship between two users in Hornbill. The manager look up mechanism works as follows:<br />
# The import reads the contents of the value attribute which will contain the some text identifying the manager eg "''mgrfirstname mgrlastname''"<br />
# IF a regex it given, then this first will be applied to the data obtained above.<br />
# The import is hard-coded to remove any slash and comma in the result.<br />
# With the "Reverse" option enabled, the above string would be reversed to give: "''mgrlastname mgrfirstname''"<br />
# The import tries to match this value against an existing Hornbill user by looking up the "Handle" field i.e. h_name.<br />
<br />
== Preparing to Run the Import ==<br />
Ultimately, the executable will be scheduled in Windows task scheduler (see later) but to test, gain confidence, and perform the initial upload of users the utility can be executed from a command prompt window on an ad-hoc basis. The command used to execute the import can contain a number of command line parameters.<br />
* dryrun - Defaults to '''''false''''' - Set to True and the XMLMC for Create and Update users will not be called and instead the XML will be dumped to the log file, this is to aid in debugging the initial connection information.<br />
* file - Defaults to '''''conf.json''''' - Name of the Configuration file to load<br />
* zone - Defaults to '''''eur''''' - Allows you to change the ZONE used for creating the XMLMC EndPoint URL: <nowiki>https://{ZONE}api.hornbill.com/{INSTANCE}/</nowiki><br />
* workers - Defaults to `3` - Allows you to change the number of worker threads used to process the import, this can improve performance on slow import but using too many workers have a detriment to performance of your Hornbill instance.<br />
* debug - Defaults to '''''false''''' - outputs extra information to the log to help with debugging issues.<br />
<br />
== Testing Overview ==<br />
There is no substitute for hands-on experience when becoming familiar with the Hornbill import utilities. <br />
<br><br />
The Azure User import accepts and understands a number of "Command Line Parameters" that can be used when running the utility from the command line. The most important one for testing is the '''-dryrun=true''' command. When this is specified, no information will be written to Hornbill and it allows you to confirm that the configuration is correct and that a connection to your directory server can be established. A dryrun still outputs a log file which provides you with an opportunity to review and understand any error messages that may occur.<br />
<br><br />
Below are some high level steps to help you build confidence in your configuration:<br />
<br><br />
<br><br />
# In the configuration, specify an "UserFilter" to target a single user object. (Its good practice to initially test on a single, or small set of, user objects as this allows the dryruns to complete quicker and there is less log content to sift through).<br />
# Perform a dryrun (by executing the utility along with the -dryrun=true command line parameter).<br />
# Review cmd output and log file for errors<br />
# Check against "Common Error Messages" listed on the wiki and take action to rectify where necessary.<br />
# Continue with dryrun tests until you are happy that all the errors are accounted for.<br />
# Perform a live import with this single user object still specified i.e. set -dryrun=false<br />
# Review user account in Hornbill and check all user properties are as expected i.e. email contains an email address etc.<br />
# Adjust conf file user property mappings as necessary<br />
# Loop through steps 6 - 8 as many times as is necessary until you are happy with the information being transported into the Hornbill user account properties.<br />
# Amend the "UserFilter" and/or the scope of the "Search" variable to target the user objects required for a full import.<br />
# Perform a dryrun<br />
# Review cmd output and log file for errors<br />
# Check against "Common Error Messages" listed on the wiki and take action to rectify where necessary.<br />
# Continue with dryrun tests until you are happy that all the errors are accounted for.<br />
<br><br />
Example command line:<br />
<code><br />
azure_user_import.exe -dryrun=true<br />
</code><br />
<br />
<br />
=== What Hornbill Roles are needed for the Import to Complete Successfully? ===<br />
A default role is delivered with Hornbill that is designed to be used in conjunction with our range of user import utilities. The security role is called '''User Import''' and has all the necessary rights to import / update user properties. <br />
<br />
As you may now be aware, every action within Hornbill must be performed in the context of a user account. As well as the chosen user account possessing the "user Import" role which facilitates the importing of the user accounts and updating of the user properties, this user account must posses the roles that you are associating to imported user accounts via the import utility.<br />
The above comment about roles is referring to Hornbill's security model when it comes to associating roles to user accounts, which is: ''Hornbill is designed to only allow the association of roles if the User who is performing the assignment of a particular role already possess the same system/application rights among the roles that they themselves possess.'' This security measure prevents you inflating your own rights or giving a user more rights than you have yourself. <br />
<br />
i.e. in addition to the "User Import" role, any roles you try and assign to the user accounts being imported must be assigned to the user account logging in and running the import.<br />
<br />
<br />
== API Key Rules ==<br />
This utility uses ([[API keys]]):<br />
<br />
* activity:profileImageSet<br />
* admin:sysOptionGet<br />
* admin:userAddGroup<br />
* admin:userAddRole<br />
* admin:userCreate<br />
* admin:userDeleteGroup<br />
* admin:userProfileSet<br />
* admin:userSetAccountStatus<br />
* admin:userUpdate<br />
* data:entityAddRecord<br />
* data:entityUpdateRecord<br />
* data:queryExec<br />
* session:getSystemLicenseInfo<br />
<br />
=Troubleshooting=<br />
== Logging Overview ==<br />
<br />
All Logging output is saved in the "log" directory which can be found in the same location as the executable. The file name contains the date and time the import was run '''''Azure_User_Import_2015-11-06T14-26-13Z.log'''''<br />
==Common Error Messages==<br />
<br />
Below are some common errors that you may encounter in the log file and what they mean:<br />
* ''' ''[ERROR] Error Decoding Configuration File:.....'' ''' - this will be typically due to a missing quote (") or comma (,) somewhere in the configuration file. This is where an online JSON viewer/validator can come in handy rather than trawling the conf file looking for that proverbial needle in a haystack.<br />
* ''' ''[ERROR] Get https://api.github.com/repos/hornbill/goAzure2HUserImport/tags: dial tcp xx.xx.xx.xx:xxx: ........'' ''' - this most likely indicates that you have a HTTP proxy server on your network between the host running the executable and your Hornbill API endpoint. Ensure the http_proxy environment variable is set (See the section on "HTTP Proxies" for more information) and that the proxy is configured to allow this communication.<br />
* ''' ''panic: runtime error: invalid memory address or nil pointer deference [recovered]...'' ''' - this error is suggesting an incorrectly specified attribute in the conf file. Where information is being obtained from a directory attribute, the attribute must be in the following format: ''<nowiki>{{.directoryAttributeName}}</nowiki>''<br />
* ''' ''[ERROR] Unable to Create User: Invalid value for parameter '[parameter name]': The text size provided (31 characters) is greater than the maximum allowable size of 20 characters for column [column name]'' ''' - the contents of your directory attribute exceed the maximum number of characters that can be placed in the Hornbill database column.<br />
* ''' ''[ERROR] Unable to Create User: The value in element <userId> did not meet the required input pattern constraints. at location '/methodCall/params/userId' '' ''' - the user id contains characters that are not allowed. The User Id should be made up of alphanumeric characters. Full stops (.) and underscores (_) are also supported.<br />
* ''' ''[ERROR] Unable to Create User: [usedID] Error: The specified handle [Display Name] is already in use'' ''' - By default, the "Handle" (Hornbill Display Name) must be unique. This error suggests a user account already exists in Hornbill which is using this handle. The duplicate-handle validation can be disabled via a setting found in Hornbill Adminsitration under "''Home > System > Advanced Settings''" and filtering for "''api.xmlmc.uniqueUserHandle.enable''"<br />
* ''' ''[ERROR] Unable to Update User: Invalid value for parameter '[parameter name]': Error setting value for column '[column name]'. bad lexical cast: source type value could not be interpreted as target'' ''' - this error is indicating that the contents of your directory attribute are in a format that is not compatible with the type of the Hornbill database column. For example, you will get this when trying to place text into a database field that is of type "INT" (accepts integer values only).<br />
* ''' ''[ERROR] Unable to Load LDAP Attribute: '[LDAP attribute name]' For Input Param: '[Hornbill Parameter name]' '' ''' - When the import utility is unable to load a particular LDAP attribute, this means that the attribute field in your directory does not contain a value. This error will not prevent the user account being created or updated in Hornbill and can be considered more as a warning rather than an outright failure or problem.<br />
* ''' ''[ERROR] Unable to Set User Status [status name]: You have reached your user subscription limit of [xx], you will need to expand your subscription level if you wish to add more users'' ''' - The utility is trying to update the user status of an existing user account from an inactive status (i.e. "archived" or "suspended") to "active" however in order for this to be successful you must have some subscriptions available.<br />
* ''' ''[ERROR] Unable to run import, a previous import is still running'' ''' - this can occur if the previous import failed to complete. Perform a manual (non-scheduled) run of the import from the command line including the argument "forcerun=true". Future imports should now run without issue.<br />
<br />
=== Error Codes ===<br />
* '''100''' - Unable to create log File<br />
* '''101''' - Unable to create log folder<br />
* '''102''' - Unable to Load Configuration File<br />
<br />
== Scheduling Overview ==<br />
<br />
=== Windows ===<br />
You can schedule .exe to run with any optional command line argument from Windows Task Scheduler.<br />
* Ensure the user account running the task has rights to Azure2UserImport.exe and the containing folder.<br />
* Make sure the Start In parameter contains the folder where the executable resides in, otherwise it will not be able to pick up the correct path. eg:<br />
<br />
[[File:Ldap_import_schedule.png]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Single_Sign_On_with_SAML_2.0&diff=27749Single Sign On with SAML 2.02021-10-12T12:40:56Z<p>Victors: /* Example IdP Configurations */</p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
[[Main Page|Home]] > [[Integration]] > [[Essential Integrations]] > Single Sign On with SAML 2.0<br />
</div><br />
<br />
==Introduction==<br />
The Hornbill platform supports single-sign-on as well as policy-based transparent auto provisioning and data updates of both user and guest accounts thus providing enterprise-class user identity integration with your organisations core IT directory services. <br />
<br />
===What is SAML?===<br />
''Security Assertion Markup Language''' ('''SAML''', pronounced "sam-el") is an open standard XML-based framework developed by the Security Services Technical Committee of OASIS and is designed for communicating user authentication, entitlement, and attribute information between parties, in particular between an Identity Provider (IdP) and a Service Provider i.e. Hornbill.<br />
<br />
External References:<br />
<br/><br />
<small>Oasis-Open.org: [https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=security https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=security]</small>, <small>Wikipedia: [http://en.wikipedia.org/wiki/Security_Assertion_Markup_Language http://en.wikipedia.org/wiki/Security_Assertion_Markup_Language]</small>, <br />
<br><br />
===SAML and Hornbill===<br />
Hornbill makes use of the SAML framework to facilitate two things:<br />
:#'''Single Sign On (SSO)''' - this is the method of access control that enables a user to log in to their organisations network one time, but then have transparent authorisation to access resources of multiple software systems without being prompted to log in to each system separately. In the context of Hornbill, once configured, users may access their Hornbill instance pre-authenticated based on their enterprise desktop or browser login. <br />
:#'''Auto-provision Hornbill User Accounts''' - along with the authorization information needed for SSO, SAML has the ability to transport additional directory attributes of a user. Hornbill is capable of processing this additional information contained in the SAML payload and use it to automatically create a user accounts on your Hornbill instance. This mechanism can remove a significant overhead in terms of system administration.<br />
<br><br />
'''PLEASE NOTE:''' While SSO must be set up to utilise auto-provisioning, the auto-provisioning of user accounts in Hornbill is an optional mechanism that can be disabled independently of SSO. Hornbill provides a range of user import utilities that can be used instead of auto-provisioning. More information on the available user imports can be found via the following wiki page: [https://wiki.hornbill.com/index.php/Hornbill_Open_Integration_Tools '''Open Integration Tools''']<br />
<br><br />
===How it Works===<br />
There are three key actors in any SAML implementation, these are the "user" trying to access the Hornbill Cloud Application (via their Web Browser), the "Identity Provider (idP)" which knows and has identified the user, and the Service Provider (Hornbill Cloud Service) which provides the application and/or resources that the user wishes to access. Your Hornbill instance is the service provider, and typically your enterprise directory system, very often Microsoft Active Directory Federated Services (ADFS) acts as your identity provider.<br />
<br />
[[File:Saml-flow.png|600px|center]]<br />
<br />
Once SSO is configured, when an unauthenticated user navigates to your Hornbill instance via one of the Hornbill URLs, the browser will be re-directed to the identity provider with the information needed to request access to the service, this is known as a SAML AuthnRequest. The idP will look at the AuthnRequest and if the user is authorized will return an Assertion back to the browser with a redirect to the service provider (in this case the Hornbill Instance). The Hornbill instance will validate the Assertion checking its authenticity against a known Hornbill SSO profile and if valid will create a session and allow the user to access Hornbill as required.<br />
<br><br />
<br><br />
<br />
==Download the Hornbill Meta data==<br />
[[File:HornbillMetaData.PNG|400px|thumb|<div align="center">'''The Service Provider (Hornbill) meta data files needed for configuring your IdP can be downloaded from your Hornbill instance'''</div>]]<br />
In order to successfully configure your Identity Provider (IdP) you will need details of your Hornbill instance. The Service Provider meta data files contain such things as the Service Provider Entity Id and Assertion Consumer Service (ACS) binding that your IdP needs to communicate during the authentication process.<br />
<br />
To get your meta data files, log into Hornbill Administration and navigate to '''Home > system > Security > SSO Profiles'''. Located towards the top right of the list are buttons labelled "Mobile Catalog", "User", "Admin", "Service", and "Customer". Clicking each of these will download the Hornbill meta data file for the associated Service URL. <br />
<br />
'''USER''' - contains information for <nowiki>https://live.hornbill.com/[your instance name]</nowiki> <br><br />
'''ADMIN''' - contains information for <nowiki>https://admin.hornbill.com/[your instance name]</nowiki> <br><br />
'''MOBILE CATALOG''' - contains information for <nowiki>https://mcatalog.hornbill.com/[your instance name]</nowiki> <br><br />
'''CUSTOMER''' - contains information for <nowiki>https://customer.hornbill.com/[your instance name]</nowiki> <br><br />
<br />
'''SERVICE''' - contains information for <nowiki>https://service.hornbill.com/[your instance name]</nowiki> <br> This is the URL relating to the Hornbill Service Portal and is due to be retired during 2020. All new implementations of Hornbill do not require this.<br />
<br />
===What Meta data files do I need to download?===<br />
When configuring your IdP, you will need to create entries to represent each of the Hornbill URL's that will be used to access your Hornbill instance and you will need the corresponding meta data files to support the creation of the trusts.<br />
::* "User" is always necessary. Therefore as a minimum you will have one entry in your IdP. <br />
::* "Admin" is optional as access can be gained via a link from the user app once successful login has been achieved. However, many choose to configure this in their IdP for added convenience.<br />
::* "Mobile catalog" is required to facilitate access via a mobile device.<br />
::* "Customer" represents the self service portal used in the delivery of an external support function. This is only required if you need a portal to provide services to those outside of your organisation.<br />
<br><br />
<br />
== Configure your Identity Provider ==<br />
The Hornbill SSO implementation follows the SAML 2.0:2005 specification so will work with any commercial or home-grown identity provider that correctly supports this standard. We have tried to make our system as flexible as possible in terms of configuration and compatibility with the standard. Here is a link to the official standards documentation: - [https://wiki.oasis-open.org/security/FrontPage SAML 2.0 2005]<br />
<br/><br />
<br />
The following identity providers are known to have been configured and work with the Hornbill platform (we will expand this list as we integrate successfully with other systems). <br />
<br />
* [http://msdn.microsoft.com/en-GB/library/bb897402.aspx Microsoft Active Directory Federation Services (ADFS 2.0)]<br />
* Microsoft Active Directory Federation Services (ADFS 3.0)<br />
* [http://www.pingidentity.com/ Ping Identity]<br />
* [http://ssocircle.com/ SSO Circle]<br />
* [https://docs.microsoft.com/en-us/azure/active-directory/saas-apps/hornbill-tutorial Microsoft Azure Directory Services]<br />
* [https://www.shibboleth.net/products/identity-provider/ Shibboleth Identity Provider]<br />
* [http://www.openathens.net/ OpenAthens (EduServ)]<br />
<br />
As you might expect, different vendors may use different terminology to describe the configuration required in the IdP but typical examples are "Service Provider Profile" or "Relying Party Trust" (see below for Example IDP configurations and references). It is likely that you will need an entry in your IdP to represent each of the Hornbill Service URL's (i.e. admin, live, and service).<br />
<br><br />
=== Example IdP Configurations ===<br />
* [[SSO_Example_Config_Microsoft_ADFS_2.0_for_User_Accounts|Microsoft ADFS 2.0]]<br />
* [https://docs.microsoft.com/en-gb/azure/active-directory/saas-apps/hornbill-tutorial Microsoft Azure] - There's a Hornbill app in the [https://azuremarketplace.microsoft.com/en-us/marketplace/apps/aad.hornbill Azure Gallery] to help with the setup of Hornbill single sign-on using Azure AD as its identity provider.<br />
{{infobox|'''Note:'''<br />
When setting the Hornbill app in Azure following the tutorial provided by Microsoft, the documentation will mention the following:<br />
<br />
'''''In the Identifier (Entity ID) text box, type a URL using the following pattern''': https://<SUBDOMAIN>.hornbill.com/<INSTANCE_NAME>/lib/saml/auth/simplesaml/module.php/saml/sp/metadata.php/saml''<br />
<br />
This URL is no longer valid. We are liaising with Microsoft to have this information updated. Please use the URL provided in the (XML) metadata available in the SSO profile configuration section in the Hornbill admin area.}}<br />
<br><br />
'''IMPORTANT:''' Although we have expertise around our own platform and its SAML implementation, configuration, and behavior, we use the language associated with the SAML 2.0 standard and not the language/terminology of any specific vendors identity provider platforms. Hornbill's technical staff are not experts with the various identity provider technologies and platforms in use. It is important to understand that Hornbill supports the SAML 2.0 standard to the letter, so if it's in the standard we support it. <br />
Each organization's identity provider implementation can be unique to their organization and it will be necessary for you to have someone internally with expertise and a working knowledge of your identity provider and directory services within your own organization. You should refer your technical network expert to this document which should provide them with sufficient information to allow the planning and configuration of Single Sign-On for your organization.<br />
<br><br />
<br><br />
<br />
==SSO Certificate Expiry Reminders==<br />
[[File:sso_cert_2.png|400px|thumb|<div align="center">'''Showing the configured state of an SSO profile where certificate time and validity are enabled'''</div>]]<br />
<br />
===Summary===<br />
Digital certificates generated and used by your Identity Provider typically have an expiry date. Once a digital certificate has expired, and assuming you have not disabled the Time and Cert valid checks (which you should only ever do for troubleshooting), then you will no longer be able to login using SSO. As it is easily forgotten, your Hornbill instance will run a certificate reminder schedule in advance of your signing certificate expiring, acting as a reminder and prompt for you to update the certificates in your SSO Profile(s). <br />
<br />
===How the Schedule Works===<br />
The reminder schedule will send email notifications to your registered Primary and Secondary technical contacts, and will follow a schedule defined in “days before expiry” here: -<br />
<br />
::* 30 Days – a courtesy notification letting you know that your certificate will expire in 30 days, subject of the message will be “Your Single Sign-On Certificate will expire in 30 days”<br />
::* 15 Days – first reminder, subject of the message will be “ATTENTION: Your Single Sign-On Certificate will expire in 15 days” <br />
::* 7 Days – second reminder, subject of the message will be “WARNING: Your Single Sign-On Certificate will expire in 7 days”<br />
::* 1 Day – final reminder, subject of the message will be “URGENT: Your Single Sign-On Signing Certificate will expire tomorrow”<br />
<br />
At any point during this 30-day schedule, your SSO Profile(s) certificates are updated with new ones, this schedule will be reset and you will not receive any further notifications.<br />
<br />
The schedule message, subject, and content of the email messages are fixed and not customizable. The email addresses used are those defined as your primary and secondary technical contacts registered against your instance.<br />
<br />
==SSO Auto Certificate Renewal==<br />
[[File:sso_cert_1.png|400px|thumb|<div align="center">'''Showing the configured state of an SSO profile with both expired and valid certificates and SSO Auto Certificate Renewal enabled'''</div>]]<br />
<br />
===Summary===<br />
In order to eliminate manual administrative overhead, it is possible to configure your Hornbill instance to automatically update the public certificates from your SAML identity provider instead of having to do this manually each time the certificate is renewed on your identity provider. <br />
<br />
===Benefit===<br />
By configuring this capability, this certificate renewal automation removes the need for any further maintenance of certificates between your Hornbill instance and your Identity Provider, eliminating situations where someone forgets to update a certificate manually causing a loss of access to your instance while a new certificate is applied manually. <br />
<br />
===Overview===<br />
Many SAML 2.0 Identity providers have a feature whereby the signing certificate used for signing SAML assertions is renewed periodically. When a new certificate is generated, it is typically generated in advance of the expiry date of the currently active certificate creating an overlap period where both the new and the old certificate are active. This gives system administrators time to update any service providers using SSO with the new certificate information. <br />
<br />
The policies that control the certificate renewal and overlap periods are defined by the identity provider and beyond the scope of this document, you should see the documentation for the Identity Provider you are using. <br />
<br />
===How It works===<br />
When configuring Hornbill to use SSO, one of the things you are required to do as part of the SSO configuration is provide your Hornbill instance with the metadata from your Identity Provider, this is typically a URL that when viewed in a browser will return the XML data describing the Identity Provider, its public certificates and so on. <br />
<br />
If this is URL is accessible to the Hornbill instance, our servers will periodically look for new certificates from this trusted URL, and a match is found to any registered SSO profile on your instance, and if there are new public key(s), these will be automatically imported into the Hornbill SSO profile, allowing a seamless switch-over from an existing to a new certificate without any service disruption. Conversely, expired certificates are automatically removed from your SSO profile(s). <br />
<br />
===Configuring Auto Certificate Renewal===<br />
Configuration is as simple as providing the metadata URL and enabling the feature (see image to the right). So long as our servers can reach the metadata page over HTTPS this will just work. There are no special configurations required on your Identity Provider, apart from the assumption that your Identity Provider is auto-renewing its certificates periodically. <br />
<br />
===SSO Auto Certificate Renewal and SSO Certificate Expiry Reminders===<br />
When you configure automatic certificate renewal, you may or may not get one or more certificate expiry reminder emails, this depends on how your Identity Provider auto certificate renewal policy is set up in relation to the SSO Certificate Expiry Reminder schedule. In practice a certificate renewal occurs somewhere around 20-days prior to the expiry date, as shown in the below example (look at the old cert expiry date and the new cert start date), so in this case, you would receive the first courtesy notification in the SSO Certificate Expiry Reminder schedule, and then 10 days later your certs would be renewed, and you would not receive any further notifications. However, each setup is different so if you start to receive the warning or urgent notifications while you have auto certificate renewal enabled, you should investigate further.<br />
<br />
===Expired Certificate Auto Deletion===<br />
Certificates that have expired are marked as "expired" and will be displayed in red to indicate this, and are no longer used for verification. Expired certificates are left on the SSO profile for 180 days, after which time, the expired certificates are automatically, and permanently deleted from the SSO profile.<br />
<br />
== Configure a Single Sign On Profile in Hornbill ==<br />
The final step in setting up SSO for Hornbill is to create a Single Sign On Profile in your Hornbill instance. The following page will provide detail on how to complete this step: [[Single_Sign_On_Profiles|'''Configuring a Single Sign On Profile in Hornbill''']].<br />
<br><br />
<br><br />
<br />
==Enabling Single Sign On in your Web Browser==<br />
Depending on your policy, it may be necessary to make changes to your browser settings to ensure a seamless SSO experience. The following page outlines the steps for some common browsers: [[Enabling_Single_Sign_On_in_Your_Web_Browser|'''Enabling Single Sign On in Your Web Browser''']].<br />
<br><br />
<br><br />
<br />
==Troubleshooting Single Sign On==<br />
Hornbill's Single Sign On implementation is designed to present you with helpful error messages in situations where something may not be quite right. For information in relation common scenarios and what to do to overcome them please see the following page: [[Troubleshooting_Single_Sign_On|'''Troubleshooting Single Sign On''']]. <br />
<br><br />
<br><br />
== Preparing for Auto-Provisioning (Optional)==<br />
The necessary configuration to facilitate auto-provisioning can be considered a small extension of the Single Sign On configuration. In the case where only SSO is needed, there is a single one-to-one mapping between the Hornbill User ID and the "nameID" returned in the SAML communication that identifies the user, typically this is tied into the users login ID.<br />
For Hornbill to successfully auto-provision a user account, it will be necessary to specify additional information to be transported in the outgoing claim from your Identity Provider. This information is carried in the additional attributes that are transported during the authentication of a user.<br />
<br />
Obvious information such as first name, last name and e-mail address would be especially important when creating a Hornbill user account, but you may wish to bring over other information into the Hornbill instance at the point of auto-provisioning.<br />
<br />
==== Hornbill User Account Properties ====<br />
The Hornbill instance understands a definitive set of user account target properties. The available properties can be used as a starting point in determining what information you wish to bring into Hornbill via your IDP for auto-provisioning. For each user account property you wish to populate in Hornbill, you will need a directory attribute configured in the outgoing claim coming from your iDP. The mapping is defined in the [https://wiki.hornbill.com/index.php/Single_Sign_On_Profiles '''Hornbill Single Sign On Profile''']<br />
The following table lists the user account properties that can be populated during auto-provisioning.<br />
<br />
{| class="wikitable"<br />
<br />
|-<br />
! Name <br />
! Required <br />
! Description<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | account:name<br />
| No<br />
| The users display name/handle. If not specified then the name will be derived from account:firstName a space and the account:lastName. If these two attributes are not defined either, the name will be the same as the nameID (the users login id)<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | account:firstName<br />
| No<br />
| The users given/first name<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | account:lastName<br />
| No<br />
| The users given/last name<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | account:jobTitle<br />
| No<br />
| The users job title within the organisation<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | account:phone<br />
| No<br />
| The users phone number<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | account:email<br />
| No<br />
| The users e-mail address<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | account:mobile<br />
| No<br />
| The users mobile phone number<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | account:availabilityStatus<br />
| No<br />
| The users availability status - there is generally not a good mapping for this so you would not normally include it<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | account:availabilityMessage<br />
| No<br />
| The users availability message - there is generally not a good mapping for this so you would not normally include it<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | account:timeZone<br />
| No<br />
| The users timezone, see the list of supported times zones in Hornbill Administration<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | account:language<br />
| No<br />
| The users language, see the list of supported languages in Hornbill Administration<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | account:dateTimeFormat<br />
| No<br />
| The users dateTime format, see the API documentation for admin::userCreate for the format information<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | account:dateFormat<br />
| No<br />
| The users date format, see the API documentation for admin::userCreate for the format information<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | account:timeFormat<br />
| No<br />
| The users time format, see the API documentation for admin::userCreate for the format information<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | account:currencySymbol<br />
| No<br />
| The users default currency symbol<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | account:countryCode<br />
| No<br />
| The users country code<br />
<br />
|}<br />
====Auto-provisioning User Templates====<br />
If you have chosen to use auto-provisioning, you may want to explore the creation of an auto-provisioning User Template in Hornbill. Details can be found at the following page: [[User_Templates|'''Auto Provisioning User Templates''']].<br />
<br><br />
==== Hornbill Contact Record (Guest) Properties ====<br />
Like Hornbill user accounts, contact records can be created through auto-provisioning. The following table lists the contact record properties that can be populated during auto-provisioning.<br />
<br />
{| class="wikitable"<br />
<br />
|-<br />
! Name <br />
! Required <br />
! Description<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | contact:firstName<br />
| No<br />
| The users given/first name<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | contact:lastName<br />
| No<br />
| The users given/last name<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | contact:jobTitle<br />
| No<br />
| The users job title within the organisation<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | contact:phone<br />
| No<br />
| The users phone number<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | contact:email<br />
| No<br />
| The users e-mail address<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | contact:company<br />
| No<br />
| The name of the company the user works at<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | contact:timeZone<br />
| No<br />
| The users timezone, see the list of supported times zones in Hornbill Administration<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | contact:language<br />
| No<br />
| The users language, see the list of supported languages in Hornbill Administration<br />
<br />
|- style="vertical-align:top;"<br />
| style="font-family: courier new;" | contact:countryCode<br />
| No<br />
| The users country code<br />
<br />
|}<br />
====Auto-provisioning Contact (Guest) Templates====<br />
If you have chosen to use auto-provisioning, you may want to explore the creation of an auto-provisioning Contact (Guest) Template in Hornbill. Details can be found at the following page: [[Guest_Account_Templates|'''Auto Provisioning Guest Account Templates''']].</div>Victorshttps://wiki.hornbill.com/index.php?title=Updating_SSO_SAML_Metadata_Configuration_Action_Required&diff=27627Updating SSO SAML Metadata Configuration Action Required2021-09-28T09:34:16Z<p>Victors: </p>
<hr />
<div>We are asking all customers who have configured their SAML metadata prior to March 2021 to update their SAML configuration due to changes that have been made to Hornbill's SAML metadata and service endpoints. Basically, the redirect endpoint that your SSO service provider uses to authenticate SSO requests Hornbill users has been moved, this was a necessary change because we have changed the underlying technology stack, removing legacy PHP code and moved to a more modern front end architecture for both performance and security reasons. <br />
<br />
Customers who need to do this will see a banner displayed when in the Hornbill Admin tool, if you do not have this banner displayed in the admin tool no action is required.<br />
<br />
<br />
[[File:Sso_update.png|800px]]<br />
<br />
<br />
Current customers who are using the legacy SAML metadata endpoints will still be able to login as we are currently redirecting the legacy SAML endpoint to the new endpoint. However, by updating the configuration your login will be faster, more reliable and more secure. At some point in the future the old SAML/SSO endpoint will be depreciated, we will keep an eye on the status of this over the coming weeks. <br />
<br />
== How to update the configuration ==<br />
<br />
We have tried to make updating you configuration as simple as possible but it will require changes to be made on your SSO identity provider (e.g. ADFS, Azure etc). You will be required to re-import the Hornbill SAML metadata onto your identity provider. You will need to do this for each service you use SAML for in hornbill (e.g. live, admin, service, and mCatalog). This metadata can be imported alongside your current configuration on your identity provider so will not effect your users ability to login and the metadata required can be accessed by clicking the appropriate button on the SSO Profile list page in the admin tool (If your identity provider doesn't support importing metadata automatically you can view the Entity Id and Reply URL you will need by clicking on the metadata button). For more detail on how to import your Hornbill metadata to your identity provider please see the documentation [https://wiki.hornbill.com/index.php?title=Single_Sign_On_with_SAML_2.0#Download_the_Hornbill_Meta_data here]<br />
<br />
Once you have imported the new Hornbill metadata you will be able to update your SSO profile within Hornbill, you can do this by clicking on the '''Update SAML Profile''' button against the SSO Profiles that need updating (these are marked with a Exclamation in the SSO Profile list), and clicking Yes on the Warning message, after you confirm your SAML profile will be updated and will now use the updated hornbill metadata to authenticate with your identity provider.<br />
z<br />
While you are making this change, if you have not already done so, we would also encourage you to enable the '''Auto Update Certificate''' feature, this was added to ensure that as your SSO Provider/ADFS updates its signing certificates, your Hornbill instance will automatically and securely update your SSO profiles with the new certificates which removes the need to do this manually. You can read more about how to do that [https://wiki.hornbill.com/index.php?title=Single_Sign_On_with_SAML_2.0#SSO_Auto_Certificate_Renewal here]<br />
<br />
{{infobox|'''Note:'''<br />
<br />
When using Azure as the Identity Provider, it is possible that once you have updated the configuration following the steps above, users will receive the following error when attempting to log in:<br />
<br />
<br />
'''The reply URL specified in the request does not match the reply URLs configured for the application: 'https: //sso.hornbill.com/<instance_id>/live''''<br />
<br />
<br />
This happens because Azure does not properly automatically update the ACS (Assertion Consumer Service) which is the reply URL mentioned in the error message, so this needs to be actioned manually. The value for the reply URL, which needs to be manually updated on the Azure app, can be obtained by clicking the Metadata button at the top of the SSO Profiles page in Hornbill admin tool.}}</div>Victorshttps://wiki.hornbill.com/index.php?title=Updating_SSO_SAML_Metadata_Configuration_Action_Required&diff=27626Updating SSO SAML Metadata Configuration Action Required2021-09-28T09:27:30Z<p>Victors: </p>
<hr />
<div>We are asking all customers who have configured their SAML metadata prior to March 2021 to update their SAML configuration due to changes that have been made to Hornbill's SAML metadata and service endpoints. Basically, the redirect endpoint that your SSO service provider uses to authenticate SSO requests Hornbill users has been moved, this was a necessary change because we have changed the underlying technology stack, removing legacy PHP code and moved to a more modern front end architecture for both performance and security reasons. <br />
<br />
Customers who need to do this will see a banner displayed when in the Hornbill Admin tool, if you do not have this banner displayed in the admin tool no action is required.<br />
<br />
<br />
[[File:Sso_update.png|800px]]<br />
<br />
<br />
Current customers who are using the legacy SAML metadata endpoints will still be able to login as we are currently redirecting the legacy SAML endpoint to the new endpoint. However, by updating the configuration your login will be faster, more reliable and more secure. At some point in the future the old SAML/SSO endpoint will be depreciated, we will keep an eye on the status of this over the coming weeks. <br />
<br />
== How to update the configuration ==<br />
<br />
We have tried to make updating you configuration as simple as possible but it will require changes to be made on your SSO identity provider (e.g. ADFS, Azure etc). You will be required to re-import the Hornbill SAML metadata onto your identity provider. You will need to do this for each service you use SAML for in hornbill (e.g. live, admin, service, and mCatalog). This metadata can be imported alongside your current configuration on your identity provider so will not effect your users ability to login and the metadata required can be accessed by clicking the appropriate button on the SSO Profile list page in the admin tool (If your identity provider doesn't support importing metadata automatically you can view the Entity Id and Reply URL you will need by clicking on the metadata button). For more detail on how to import your Hornbill metadata to your identity provider please see the documentation [https://wiki.hornbill.com/index.php?title=Single_Sign_On_with_SAML_2.0#Download_the_Hornbill_Meta_data here]<br />
<br />
Once you have imported the new Hornbill metadata you will be able to update your SSO profile within Hornbill, you can do this by clicking on the '''Update SAML Profile''' button against the SSO Profiles that need updating (these are marked with a Exclamation in the SSO Profile list), and clicking Yes on the Warning message, after you confirm your SAML profile will be updated and will now use the updated hornbill metadata to authenticate with your identity provider.<br />
z<br />
While you are making this change, if you have not already done so, we would also encourage you to enable the '''Auto Update Certificate''' feature, this was added to ensure that as your SSO Provider/ADFS updates its signing certificates, your Hornbill instance will automatically and securely update your SSO profiles with the new certificates which removes the need to do this manually. You can read more about how to do that [https://wiki.hornbill.com/index.php?title=Single_Sign_On_with_SAML_2.0#SSO_Auto_Certificate_Renewal here]<br />
<br />
'''Important! Please Note:''' When using Azure as the Identity Provider, it is possible that once you have updated the configuration following the steps above, users will receive the following error when attempting to log in: '''The reply URL specified in the request does not match the reply URLs configured for the application: 'https: //sso.hornbill.com/<instance_id>/live''''. This happens because Azure does not properly automatically update the ACS (Assertion Consumer Service) which is the reply URL mentioned in the error message, so this needs to be actioned manually. The value for the reply URL, which needs to be manually updated on the Azure app, can be obtained by clicking the Metadata button at the top of the SSO Profiles page in Hornbill admin tool.</div>Victorshttps://wiki.hornbill.com/index.php?title=Outbound_Mail_Routing&diff=27178Outbound Mail Routing2021-08-13T08:05:46Z<p>Victors: </p>
<hr />
<div>{{DISPLAYTITLE:Email Domains}}<br />
{{bluebanner|[[Main Page|Home]] > [[Administration]] > [[Email Administration | Email]] > Email Domains|[[:Category:Administration|Index]]}}<br />
{{IntroAndLinks|Creating and configuring an Outbound Route is a required part of providing email functionality within some of the Hornbill applications. The "Domain" is primarily concerned with facilitating the Outbound mail operation, delivering from the Hornbill instance to the outside world. There are two methods of outbound routing available to us, "Direct Outbound" or "SMTP SmartHost".|<br />
:* [[Shared_Mailboxes|Shared Mailboxes (Inbound Route)]]<br />
:* [[Email_Templates|Configuring Email Templates]]<br />
:* [[How_to_configure_OAuth2_Authentication_for_Microsoft_Office_365_Mailbox_integration|MS Office 365 integration with OAuth2]]<br />
}}<br />
<br />
{{infobox|Although we have expertise around our own platform and its email routing implementation, configuration, and behaviour, we use the language associated with the POP3, IMAP4, and SMTP standards and not the specific language and/or terminology of any specific vendors' mail server interfaces or platforms. <br />
This means Hornbill's technical staff are not experts with the various mail server and firewall interfaces in use. Each organisations mail routing implementation can be unique to their organisation and it will be necessary for you to have someone internally with expertise and a working knowledge of your mail servers and firewalls within your own organisation. You should refer your technical email/network expert to this document which should provide them with sufficient information to allow the planning and configuration of email integration for your organisation.}}<br />
<br><br />
==Creating and Managing your Outbound Routes==<br />
To create and Configure a new Outbound route, in Hornbill Administration navigate to '''Home > System > Email > Outbound Domains'''. You will find a default domain entry (live.hornbill.com) comes already configured with your instance which allows you to test aspects of the Hornbill applications while you are organizing the email configuration required in your infrastructure.<br />
<br />
* To add a new Outbound route click the plus symbol in the top right of the list.<br />
* To view an existing Outbound route, simply click on the name which is presented in the list.<br />
* To delete an existing Outbound route, select the check box next the domain you wish to remove and then click the red trash can button at the top right of the list.<br />
<br />
===Outbound Mail Routing Details===<br />
<br />
To successfully configure an Outbound Mail Route the following details must be completed.<br />
{{bullet1|Domain Name|The name that is used here '''must''' be a valid domain name. For example 'mycompany.com'}}<br />
{{bullet1|Enable processing incoming mail on this route|Turnning this on will allow any email that has been sent to this domain to be processed by the SMTP service and allow it to be routed to the appropriate mailbox.}}<br />
{{bullet1|Automatically Create Address for this route when a new mailbox is created|When a new user is created a personal mailbox is created and associated with that user. When this feature is enabled, each new user will be automatically allocated an email address using this domain name. The Address Format can then be used to set the format of the username.}}<br />
{{bullet1|Address Format|The Address Format to be used when a new personal mailbox is created. This is only available if you have enabled the option above to automatically create addresses for this route. The formats that can be selected are based on variations of the Firstname and Lastname of the user with the exception of the LoginID.}}<br />
{{bullet1|Enable DKIM|DomainKeys Identified Mail (DKIM) is an email authentication method designed to make sure messages aren't altered in transit between the sending and recipient servers and to detect forged sender addresses in email (email spoofing), a technique often used in phishing and email spam.}}<br />
{{bullet2|DKIM Selector|A DKIM selector is specified when the private/public key pair is created when DKIM is set up for the email domain (or email sender), and it can be any arbitrary string of text}}<br />
{{bullet2|DKIM Key Size|Choose between 1024 and 2048 bits for your key size.}}<br />
:::{{infobox|Once the Email Domain has been saved, you will be presented with a DKIM Key}}<br />
{{bullet1|Outbound Routing Mode|There are two methods of outbound routing available in Hornbill, ''Use DNS Routing'' and ''Use SMTP Smart Host''. Select the one that is most desirable to you based on the descriptions below.}}<br />
<br><br />
<br />
== Outbound Routing Modes ==<br />
Now that you have familiarised yourself with where and how Outbound Routing is configured in Hornbill Administration, the next step is to understand which Outbound Routing mode is most suitable for your organisation. The available modes are described below and the decision essentially comes down to what's dictated by your internal IT policies. If your policies don't limit your choice then it's simply what you prefer when it comes to maintaining this integration going forward.<br />
<br><br />
<br><br />
===Option 1: Direct Outbound===<br />
If you wish to use the Direct Outbound method, this quite simply involves the addition of an SPF and TXT record to your DNS server, validating the record using the SPF Check button within the Hornbill Administration UI, and saving the configuration upon success. Please see the section below relating to the SPF/TXT record for more information. <br />
<br />
When email is delivered using the Direct Outbound method, our servers will automatically negotiate the highest level of transport encryption supported by the remote SMTP server. This is completely automatic and is negotiated each and every time a new SMTP connection is made. We support the TLS 1.2, TLS 1.1, TLS 1.0, SSL 3.0 and Plain Text protocols, prioritised and negotiated for in that order<br />
<br><br />
<br />
====SPF/TXT Record====<br />
<br />
If you wish to configure “Use Direct Outbound” and the domain name used in the email from address is not live.hornbill.com, a SPF/TXT Record must be configured. The SPF/TXT record allows Hornbill to send email using the configured domain without risk of breaching any anti-spam/email source validation checks.<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:900px"><br />
It is recommended that this is configured by a system admin to add this record to your DNS.<br />
<br />
<div class="mw-collapsible-content" style="width:1050px"><br />
The following record is to be added <br />
*'''include:_spf.hornbill.com'''<br />
<br />
An example SPF/TXT record would be <br />
<br />
''v=spf1 include:_spf.hornbill.com ~all''<br />
<br />
On all outbound email for this domain, Hornbill checks that the SPF/TXT record has the '''include:_spf.hornbill.com''' section set otherwise the mail will refuse to send.<br />
<br />
This check is put in place to ensure Hornbill is allowed to send email as the given domain and to prevent abuse such as someone sending email pretending to be from a domain they do not own.<br />
<br />
SPF/TXT – these are both types of DNS record which should be set although SPF have been officially deprecated it still may be used so it can be a good idea to set. The main record that needs to be added is the TXT version.<br />
<br><br />
<br><br />
'''When creating a domain you will not be able to save until you have successfully tested the SPF.'''<br />
[[File:SPF Check Fail.PNG |centre|750px|Hornbill]]<br />
<br><br />
<br><br />
To confirm that the include has been added to a TXT/SPF record it is possible to check using this 3rd party website http://mxtoolbox.com/SuperTool.aspx?action=spf (Hornbill takes no responsibility for 3rd party websites).<br />
</div><br />
</div><br />
<br><br />
<br />
===Option 2: SMTP SmartHost===<br />
A smart host is a type of email message transfer agent that allows a Simple Mail Transfer Protocol (SMTP) server to route email via an intermediate mailserver rather than directly to the recipient's server. With this method, a mailserver within your organisation is configured to allow the relaying of emails from your Hornbill instance (based in our data centre) to your end users. With the relay configured, any outbound email will pass through your domain and therefore, from the recipients perspective, the source domain will correspond to that used in the "from address" that we configure within Hornbill. <br />
<br><br />
<br><br />
To successfully complete the Email integration using this method you will need to:<br />
:# Create an outbound route in Hornbill and configure the necessary details (as shown in the image below).<br />
:# Configure a relay connector on your mail server (allowing relay from the appropriate origin IP stated below) <br />
:# Configure any necessary firewall rules (allowing traffic from the appropriate origin IP) to allow communication from your Hornbill instance. <br />
<br><br />
'''PLEASE NOTE:''' if you are not familiar with how to complete steps 2) and 3), please refer to the relevant vendor-specific documentation for your mail server and firewall interfaces.<br />
<br><br />
<br />
====Origin IP Address====<br />
The origin IP that should be specified in any such firewall rules is one of the following and is dependent on the location of your instance. You should have both the Primary and Secondary IP for your geographical area:<br />
* Europe: - 87.117.243.10 OR 212.71.225.67 (If you are a UK or European customer, your instance will be located in our European data centre and any outbound mail will originate from here)<br />
* North America: - 69.174.249.200 OR 64.34.188.200 (If you are a North American or Canadian customer, your instance will be located in our North American data centre and any outbound mail will originate from here)<br />
<br />
(More information about our data centres can be found in our FAQ: '''[[FAQ:Data_Centres|Hornbill Data Centres]]'''. If you are unable to find the answer you're looking for, please head over to the '''[https://forums.hornbill.com Hornbill forums]''' and start a discussion).<br />
<br />
The origin IP addresses are also contained in the "Email Integration Information" communication sent from your Product Specialist at the beginning of the Switch On.<br />
<br><br />
<br><br />
<br />
====Smart Host Details:====<br />
The information you will need to have to hand when specifying your SMART Host is indicated below:<br />
<br><br />
[[File:SMART Host Details.PNG|700px|SMART Host Configuration Form]]<br />
<br />
==How to configure OAuth2 Authentication for Microsoft Office 365 Mailbox integration==<br />
<br />
'''[[How_to_configure_OAuth2_Authentication_for_Microsoft_Office_365_Mailbox_integration|Guide can be found here]]'''<br />
<br />
[[Category:Administration]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Outbound_Mail_Routing&diff=27177Outbound Mail Routing2021-08-13T08:05:03Z<p>Victors: </p>
<hr />
<div>{{DISPLAYTITLE:Email Domains}}<br />
{{bluebanner|[[Main Page|Home]] > [[Administration]] > [[Email Administration | Email]] > Email Domains|[[:Category:Administration|Index]]}}<br />
{{IntroAndLinks|Creating and configuring an Outbound Route is a required part of providing email functionality within some of the Hornbill applications. The "Domain" is primarily concerned with facilitating the Outbound mail operation, delivering from the Hornbill instance to the outside world. There are two methods of outbound routing available to us, "Direct Outbound" or "SMTP SmartHost".|<br />
:* [[Shared_Mailboxes|Shared Mailboxes (Inbound Route)]]<br />
:* [[Email_Templates|Configuring Email Templates]]<br />
:* [[How_to_configure_OAuth2_Authentication_for_Microsoft_Office_365_Mailbox_integration|OAuth2 authentication for MS Office 365 integration]]<br />
}}<br />
<br />
{{infobox|Although we have expertise around our own platform and its email routing implementation, configuration, and behaviour, we use the language associated with the POP3, IMAP4, and SMTP standards and not the specific language and/or terminology of any specific vendors' mail server interfaces or platforms. <br />
This means Hornbill's technical staff are not experts with the various mail server and firewall interfaces in use. Each organisations mail routing implementation can be unique to their organisation and it will be necessary for you to have someone internally with expertise and a working knowledge of your mail servers and firewalls within your own organisation. You should refer your technical email/network expert to this document which should provide them with sufficient information to allow the planning and configuration of email integration for your organisation.}}<br />
<br><br />
==Creating and Managing your Outbound Routes==<br />
To create and Configure a new Outbound route, in Hornbill Administration navigate to '''Home > System > Email > Outbound Domains'''. You will find a default domain entry (live.hornbill.com) comes already configured with your instance which allows you to test aspects of the Hornbill applications while you are organizing the email configuration required in your infrastructure.<br />
<br />
* To add a new Outbound route click the plus symbol in the top right of the list.<br />
* To view an existing Outbound route, simply click on the name which is presented in the list.<br />
* To delete an existing Outbound route, select the check box next the domain you wish to remove and then click the red trash can button at the top right of the list.<br />
<br />
===Outbound Mail Routing Details===<br />
<br />
To successfully configure an Outbound Mail Route the following details must be completed.<br />
{{bullet1|Domain Name|The name that is used here '''must''' be a valid domain name. For example 'mycompany.com'}}<br />
{{bullet1|Enable processing incoming mail on this route|Turnning this on will allow any email that has been sent to this domain to be processed by the SMTP service and allow it to be routed to the appropriate mailbox.}}<br />
{{bullet1|Automatically Create Address for this route when a new mailbox is created|When a new user is created a personal mailbox is created and associated with that user. When this feature is enabled, each new user will be automatically allocated an email address using this domain name. The Address Format can then be used to set the format of the username.}}<br />
{{bullet1|Address Format|The Address Format to be used when a new personal mailbox is created. This is only available if you have enabled the option above to automatically create addresses for this route. The formats that can be selected are based on variations of the Firstname and Lastname of the user with the exception of the LoginID.}}<br />
{{bullet1|Enable DKIM|DomainKeys Identified Mail (DKIM) is an email authentication method designed to make sure messages aren't altered in transit between the sending and recipient servers and to detect forged sender addresses in email (email spoofing), a technique often used in phishing and email spam.}}<br />
{{bullet2|DKIM Selector|A DKIM selector is specified when the private/public key pair is created when DKIM is set up for the email domain (or email sender), and it can be any arbitrary string of text}}<br />
{{bullet2|DKIM Key Size|Choose between 1024 and 2048 bits for your key size.}}<br />
:::{{infobox|Once the Email Domain has been saved, you will be presented with a DKIM Key}}<br />
{{bullet1|Outbound Routing Mode|There are two methods of outbound routing available in Hornbill, ''Use DNS Routing'' and ''Use SMTP Smart Host''. Select the one that is most desirable to you based on the descriptions below.}}<br />
<br><br />
<br />
== Outbound Routing Modes ==<br />
Now that you have familiarised yourself with where and how Outbound Routing is configured in Hornbill Administration, the next step is to understand which Outbound Routing mode is most suitable for your organisation. The available modes are described below and the decision essentially comes down to what's dictated by your internal IT policies. If your policies don't limit your choice then it's simply what you prefer when it comes to maintaining this integration going forward.<br />
<br><br />
<br><br />
===Option 1: Direct Outbound===<br />
If you wish to use the Direct Outbound method, this quite simply involves the addition of an SPF and TXT record to your DNS server, validating the record using the SPF Check button within the Hornbill Administration UI, and saving the configuration upon success. Please see the section below relating to the SPF/TXT record for more information. <br />
<br />
When email is delivered using the Direct Outbound method, our servers will automatically negotiate the highest level of transport encryption supported by the remote SMTP server. This is completely automatic and is negotiated each and every time a new SMTP connection is made. We support the TLS 1.2, TLS 1.1, TLS 1.0, SSL 3.0 and Plain Text protocols, prioritised and negotiated for in that order<br />
<br><br />
<br />
====SPF/TXT Record====<br />
<br />
If you wish to configure “Use Direct Outbound” and the domain name used in the email from address is not live.hornbill.com, a SPF/TXT Record must be configured. The SPF/TXT record allows Hornbill to send email using the configured domain without risk of breaching any anti-spam/email source validation checks.<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:900px"><br />
It is recommended that this is configured by a system admin to add this record to your DNS.<br />
<br />
<div class="mw-collapsible-content" style="width:1050px"><br />
The following record is to be added <br />
*'''include:_spf.hornbill.com'''<br />
<br />
An example SPF/TXT record would be <br />
<br />
''v=spf1 include:_spf.hornbill.com ~all''<br />
<br />
On all outbound email for this domain, Hornbill checks that the SPF/TXT record has the '''include:_spf.hornbill.com''' section set otherwise the mail will refuse to send.<br />
<br />
This check is put in place to ensure Hornbill is allowed to send email as the given domain and to prevent abuse such as someone sending email pretending to be from a domain they do not own.<br />
<br />
SPF/TXT – these are both types of DNS record which should be set although SPF have been officially deprecated it still may be used so it can be a good idea to set. The main record that needs to be added is the TXT version.<br />
<br><br />
<br><br />
'''When creating a domain you will not be able to save until you have successfully tested the SPF.'''<br />
[[File:SPF Check Fail.PNG |centre|750px|Hornbill]]<br />
<br><br />
<br><br />
To confirm that the include has been added to a TXT/SPF record it is possible to check using this 3rd party website http://mxtoolbox.com/SuperTool.aspx?action=spf (Hornbill takes no responsibility for 3rd party websites).<br />
</div><br />
</div><br />
<br><br />
<br />
===Option 2: SMTP SmartHost===<br />
A smart host is a type of email message transfer agent that allows a Simple Mail Transfer Protocol (SMTP) server to route email via an intermediate mailserver rather than directly to the recipient's server. With this method, a mailserver within your organisation is configured to allow the relaying of emails from your Hornbill instance (based in our data centre) to your end users. With the relay configured, any outbound email will pass through your domain and therefore, from the recipients perspective, the source domain will correspond to that used in the "from address" that we configure within Hornbill. <br />
<br><br />
<br><br />
To successfully complete the Email integration using this method you will need to:<br />
:# Create an outbound route in Hornbill and configure the necessary details (as shown in the image below).<br />
:# Configure a relay connector on your mail server (allowing relay from the appropriate origin IP stated below) <br />
:# Configure any necessary firewall rules (allowing traffic from the appropriate origin IP) to allow communication from your Hornbill instance. <br />
<br><br />
'''PLEASE NOTE:''' if you are not familiar with how to complete steps 2) and 3), please refer to the relevant vendor-specific documentation for your mail server and firewall interfaces.<br />
<br><br />
<br />
====Origin IP Address====<br />
The origin IP that should be specified in any such firewall rules is one of the following and is dependent on the location of your instance. You should have both the Primary and Secondary IP for your geographical area:<br />
* Europe: - 87.117.243.10 OR 212.71.225.67 (If you are a UK or European customer, your instance will be located in our European data centre and any outbound mail will originate from here)<br />
* North America: - 69.174.249.200 OR 64.34.188.200 (If you are a North American or Canadian customer, your instance will be located in our North American data centre and any outbound mail will originate from here)<br />
<br />
(More information about our data centres can be found in our FAQ: '''[[FAQ:Data_Centres|Hornbill Data Centres]]'''. If you are unable to find the answer you're looking for, please head over to the '''[https://forums.hornbill.com Hornbill forums]''' and start a discussion).<br />
<br />
The origin IP addresses are also contained in the "Email Integration Information" communication sent from your Product Specialist at the beginning of the Switch On.<br />
<br><br />
<br><br />
<br />
====Smart Host Details:====<br />
The information you will need to have to hand when specifying your SMART Host is indicated below:<br />
<br><br />
[[File:SMART Host Details.PNG|700px|SMART Host Configuration Form]]<br />
<br />
==How to configure OAuth2 Authentication for Microsoft Office 365 Mailbox integration==<br />
<br />
'''[[How_to_configure_OAuth2_Authentication_for_Microsoft_Office_365_Mailbox_integration|Guide can be found here]]'''<br />
<br />
[[Category:Administration]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Outbound_Mail_Routing&diff=27176Outbound Mail Routing2021-08-13T08:03:25Z<p>Victors: </p>
<hr />
<div>{{DISPLAYTITLE:Email Domains}}<br />
{{bluebanner|[[Main Page|Home]] > [[Administration]] > [[Email Administration | Email]] > Email Domains|[[:Category:Administration|Index]]}}<br />
{{IntroAndLinks|Creating and configuring an Outbound Route is a required part of providing email functionality within some of the Hornbill applications. The "Domain" is primarily concerned with facilitating the Outbound mail operation, delivering from the Hornbill instance to the outside world. There are two methods of outbound routing available to us, "Direct Outbound" or "SMTP SmartHost".|<br />
:* [[Shared_Mailboxes|Shared Mailboxes (Inbound Route)]]<br />
:* [[Email_Templates|Configuring Email Templates]]<br />
}}<br />
<br />
{{infobox|Although we have expertise around our own platform and its email routing implementation, configuration, and behaviour, we use the language associated with the POP3, IMAP4, and SMTP standards and not the specific language and/or terminology of any specific vendors' mail server interfaces or platforms. <br />
This means Hornbill's technical staff are not experts with the various mail server and firewall interfaces in use. Each organisations mail routing implementation can be unique to their organisation and it will be necessary for you to have someone internally with expertise and a working knowledge of your mail servers and firewalls within your own organisation. You should refer your technical email/network expert to this document which should provide them with sufficient information to allow the planning and configuration of email integration for your organisation.}}<br />
<br><br />
==Creating and Managing your Outbound Routes==<br />
To create and Configure a new Outbound route, in Hornbill Administration navigate to '''Home > System > Email > Outbound Domains'''. You will find a default domain entry (live.hornbill.com) comes already configured with your instance which allows you to test aspects of the Hornbill applications while you are organizing the email configuration required in your infrastructure.<br />
<br />
* To add a new Outbound route click the plus symbol in the top right of the list.<br />
* To view an existing Outbound route, simply click on the name which is presented in the list.<br />
* To delete an existing Outbound route, select the check box next the domain you wish to remove and then click the red trash can button at the top right of the list.<br />
<br />
===Outbound Mail Routing Details===<br />
<br />
To successfully configure an Outbound Mail Route the following details must be completed.<br />
{{bullet1|Domain Name|The name that is used here '''must''' be a valid domain name. For example 'mycompany.com'}}<br />
{{bullet1|Enable processing incoming mail on this route|Turnning this on will allow any email that has been sent to this domain to be processed by the SMTP service and allow it to be routed to the appropriate mailbox.}}<br />
{{bullet1|Automatically Create Address for this route when a new mailbox is created|When a new user is created a personal mailbox is created and associated with that user. When this feature is enabled, each new user will be automatically allocated an email address using this domain name. The Address Format can then be used to set the format of the username.}}<br />
{{bullet1|Address Format|The Address Format to be used when a new personal mailbox is created. This is only available if you have enabled the option above to automatically create addresses for this route. The formats that can be selected are based on variations of the Firstname and Lastname of the user with the exception of the LoginID.}}<br />
{{bullet1|Enable DKIM|DomainKeys Identified Mail (DKIM) is an email authentication method designed to make sure messages aren't altered in transit between the sending and recipient servers and to detect forged sender addresses in email (email spoofing), a technique often used in phishing and email spam.}}<br />
{{bullet2|DKIM Selector|A DKIM selector is specified when the private/public key pair is created when DKIM is set up for the email domain (or email sender), and it can be any arbitrary string of text}}<br />
{{bullet2|DKIM Key Size|Choose between 1024 and 2048 bits for your key size.}}<br />
:::{{infobox|Once the Email Domain has been saved, you will be presented with a DKIM Key}}<br />
{{bullet1|Outbound Routing Mode|There are two methods of outbound routing available in Hornbill, ''Use DNS Routing'' and ''Use SMTP Smart Host''. Select the one that is most desirable to you based on the descriptions below.}}<br />
<br><br />
<br />
== Outbound Routing Modes ==<br />
Now that you have familiarised yourself with where and how Outbound Routing is configured in Hornbill Administration, the next step is to understand which Outbound Routing mode is most suitable for your organisation. The available modes are described below and the decision essentially comes down to what's dictated by your internal IT policies. If your policies don't limit your choice then it's simply what you prefer when it comes to maintaining this integration going forward.<br />
<br><br />
<br><br />
===Option 1: Direct Outbound===<br />
If you wish to use the Direct Outbound method, this quite simply involves the addition of an SPF and TXT record to your DNS server, validating the record using the SPF Check button within the Hornbill Administration UI, and saving the configuration upon success. Please see the section below relating to the SPF/TXT record for more information. <br />
<br />
When email is delivered using the Direct Outbound method, our servers will automatically negotiate the highest level of transport encryption supported by the remote SMTP server. This is completely automatic and is negotiated each and every time a new SMTP connection is made. We support the TLS 1.2, TLS 1.1, TLS 1.0, SSL 3.0 and Plain Text protocols, prioritised and negotiated for in that order<br />
<br><br />
<br />
====SPF/TXT Record====<br />
<br />
If you wish to configure “Use Direct Outbound” and the domain name used in the email from address is not live.hornbill.com, a SPF/TXT Record must be configured. The SPF/TXT record allows Hornbill to send email using the configured domain without risk of breaching any anti-spam/email source validation checks.<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:900px"><br />
It is recommended that this is configured by a system admin to add this record to your DNS.<br />
<br />
<div class="mw-collapsible-content" style="width:1050px"><br />
The following record is to be added <br />
*'''include:_spf.hornbill.com'''<br />
<br />
An example SPF/TXT record would be <br />
<br />
''v=spf1 include:_spf.hornbill.com ~all''<br />
<br />
On all outbound email for this domain, Hornbill checks that the SPF/TXT record has the '''include:_spf.hornbill.com''' section set otherwise the mail will refuse to send.<br />
<br />
This check is put in place to ensure Hornbill is allowed to send email as the given domain and to prevent abuse such as someone sending email pretending to be from a domain they do not own.<br />
<br />
SPF/TXT – these are both types of DNS record which should be set although SPF have been officially deprecated it still may be used so it can be a good idea to set. The main record that needs to be added is the TXT version.<br />
<br><br />
<br><br />
'''When creating a domain you will not be able to save until you have successfully tested the SPF.'''<br />
[[File:SPF Check Fail.PNG |centre|750px|Hornbill]]<br />
<br><br />
<br><br />
To confirm that the include has been added to a TXT/SPF record it is possible to check using this 3rd party website http://mxtoolbox.com/SuperTool.aspx?action=spf (Hornbill takes no responsibility for 3rd party websites).<br />
</div><br />
</div><br />
<br><br />
<br />
===Option 2: SMTP SmartHost===<br />
A smart host is a type of email message transfer agent that allows a Simple Mail Transfer Protocol (SMTP) server to route email via an intermediate mailserver rather than directly to the recipient's server. With this method, a mailserver within your organisation is configured to allow the relaying of emails from your Hornbill instance (based in our data centre) to your end users. With the relay configured, any outbound email will pass through your domain and therefore, from the recipients perspective, the source domain will correspond to that used in the "from address" that we configure within Hornbill. <br />
<br><br />
<br><br />
To successfully complete the Email integration using this method you will need to:<br />
:# Create an outbound route in Hornbill and configure the necessary details (as shown in the image below).<br />
:# Configure a relay connector on your mail server (allowing relay from the appropriate origin IP stated below) <br />
:# Configure any necessary firewall rules (allowing traffic from the appropriate origin IP) to allow communication from your Hornbill instance. <br />
<br><br />
'''PLEASE NOTE:''' if you are not familiar with how to complete steps 2) and 3), please refer to the relevant vendor-specific documentation for your mail server and firewall interfaces.<br />
<br><br />
<br />
====Origin IP Address====<br />
The origin IP that should be specified in any such firewall rules is one of the following and is dependent on the location of your instance. You should have both the Primary and Secondary IP for your geographical area:<br />
* Europe: - 87.117.243.10 OR 212.71.225.67 (If you are a UK or European customer, your instance will be located in our European data centre and any outbound mail will originate from here)<br />
* North America: - 69.174.249.200 OR 64.34.188.200 (If you are a North American or Canadian customer, your instance will be located in our North American data centre and any outbound mail will originate from here)<br />
<br />
(More information about our data centres can be found in our FAQ: '''[[FAQ:Data_Centres|Hornbill Data Centres]]'''. If you are unable to find the answer you're looking for, please head over to the '''[https://forums.hornbill.com Hornbill forums]''' and start a discussion).<br />
<br />
The origin IP addresses are also contained in the "Email Integration Information" communication sent from your Product Specialist at the beginning of the Switch On.<br />
<br><br />
<br><br />
<br />
====Smart Host Details:====<br />
The information you will need to have to hand when specifying your SMART Host is indicated below:<br />
<br><br />
[[File:SMART Host Details.PNG|700px|SMART Host Configuration Form]]<br />
<br />
==How to configure OAuth2 Authentication for Microsoft Office 365 Mailbox integration==<br />
<br />
'''[[How_to_configure_OAuth2_Authentication_for_Microsoft_Office_365_Mailbox_integration|Guide can be found here]]'''<br />
<br />
[[Category:Administration]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Outbound_Mail_Routing&diff=27175Outbound Mail Routing2021-08-13T08:01:54Z<p>Victors: </p>
<hr />
<div>{{DISPLAYTITLE:Email Domains}}<br />
{{bluebanner|[[Main Page|Home]] > [[Administration]] > [[Email Administration | Email]] > Email Domains|[[:Category:Administration|Index]]}}<br />
{{IntroAndLinks|Creating and configuring an Outbound Route is a required part of providing email functionality within some of the Hornbill applications. The "Domain" is primarily concerned with facilitating the Outbound mail operation, delivering from the Hornbill instance to the outside world. There are two methods of outbound routing available to us, "Direct Outbound" or "SMTP SmartHost".|<br />
:* [[Shared_Mailboxes|Shared Mailboxes (Inbound Route)]]<br />
:* [[Email_Templates|Configuring Email Templates]]<br />
}}<br />
<br />
{{infobox|Although we have expertise around our own platform and its email routing implementation, configuration, and behaviour, we use the language associated with the POP3, IMAP4, and SMTP standards and not the specific language and/or terminology of any specific vendors' mail server interfaces or platforms. <br />
This means Hornbill's technical staff are not experts with the various mail server and firewall interfaces in use. Each organisations mail routing implementation can be unique to their organisation and it will be necessary for you to have someone internally with expertise and a working knowledge of your mail servers and firewalls within your own organisation. You should refer your technical email/network expert to this document which should provide them with sufficient information to allow the planning and configuration of email integration for your organisation.}}<br />
<br><br />
==Creating and Managing your Outbound Routes==<br />
To create and Configure a new Outbound route, in Hornbill Administration navigate to '''Home > System > Email > Outbound Domains'''. You will find a default domain entry (live.hornbill.com) comes already configured with your instance which allows you to test aspects of the Hornbill applications while you are organizing the email configuration required in your infrastructure.<br />
<br />
* To add a new Outbound route click the plus symbol in the top right of the list.<br />
* To view an existing Outbound route, simply click on the name which is presented in the list.<br />
* To delete an existing Outbound route, select the check box next the domain you wish to remove and then click the red trash can button at the top right of the list.<br />
<br />
===Outbound Mail Routing Details===<br />
<br />
To successfully configure an Outbound Mail Route the following details must be completed.<br />
{{bullet1|Domain Name|The name that is used here '''must''' be a valid domain name. For example 'mycompany.com'}}<br />
{{bullet1|Enable processing incoming mail on this route|Turnning this on will allow any email that has been sent to this domain to be processed by the SMTP service and allow it to be routed to the appropriate mailbox.}}<br />
{{bullet1|Automatically Create Address for this route when a new mailbox is created|When a new user is created a personal mailbox is created and associated with that user. When this feature is enabled, each new user will be automatically allocated an email address using this domain name. The Address Format can then be used to set the format of the username.}}<br />
{{bullet1|Address Format|The Address Format to be used when a new personal mailbox is created. This is only available if you have enabled the option above to automatically create addresses for this route. The formats that can be selected are based on variations of the Firstname and Lastname of the user with the exception of the LoginID.}}<br />
{{bullet1|Enable DKIM|DomainKeys Identified Mail (DKIM) is an email authentication method designed to make sure messages aren't altered in transit between the sending and recipient servers and to detect forged sender addresses in email (email spoofing), a technique often used in phishing and email spam.}}<br />
{{bullet2|DKIM Selector|A DKIM selector is specified when the private/public key pair is created when DKIM is set up for the email domain (or email sender), and it can be any arbitrary string of text}}<br />
{{bullet2|DKIM Key Size|Choose between 1024 and 2048 bits for your key size.}}<br />
:::{{infobox|Once the Email Domain has been saved, you will be presented with a DKIM Key}}<br />
{{bullet1|Outbound Routing Mode|There are two methods of outbound routing available in Hornbill, ''Use DNS Routing'' and ''Use SMTP Smart Host''. Select the one that is most desirable to you based on the descriptions below.}}<br />
<br><br />
<br />
== Outbound Routing Modes ==<br />
Now that you have familiarised yourself with where and how Outbound Routing is configured in Hornbill Administration, the next step is to understand which Outbound Routing mode is most suitable for your organisation. The available modes are described below and the decision essentially comes down to what's dictated by your internal IT policies. If your policies don't limit your choice then it's simply what you prefer when it comes to maintaining this integration going forward.<br />
<br><br />
<br><br />
===Option 1: Direct Outbound===<br />
If you wish to use the Direct Outbound method, this quite simply involves the addition of an SPF and TXT record to your DNS server, validating the record using the SPF Check button within the Hornbill Administration UI, and saving the configuration upon success. Please see the section below relating to the SPF/TXT record for more information. <br />
<br />
When email is delivered using the Direct Outbound method, our servers will automatically negotiate the highest level of transport encryption supported by the remote SMTP server. This is completely automatic and is negotiated each and every time a new SMTP connection is made. We support the TLS 1.2, TLS 1.1, TLS 1.0, SSL 3.0 and Plain Text protocols, prioritised and negotiated for in that order<br />
<br><br />
<br />
====SPF/TXT Record====<br />
<br />
If you wish to configure “Use Direct Outbound” and the domain name used in the email from address is not live.hornbill.com, a SPF/TXT Record must be configured. The SPF/TXT record allows Hornbill to send email using the configured domain without risk of breaching any anti-spam/email source validation checks.<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:900px"><br />
It is recommended that this is configured by a system admin to add this record to your DNS.<br />
<br />
<div class="mw-collapsible-content" style="width:1050px"><br />
The following record is to be added <br />
*'''include:_spf.hornbill.com'''<br />
<br />
An example SPF/TXT record would be <br />
<br />
''v=spf1 include:_spf.hornbill.com ~all''<br />
<br />
On all outbound email for this domain, Hornbill checks that the SPF/TXT record has the '''include:_spf.hornbill.com''' section set otherwise the mail will refuse to send.<br />
<br />
This check is put in place to ensure Hornbill is allowed to send email as the given domain and to prevent abuse such as someone sending email pretending to be from a domain they do not own.<br />
<br />
SPF/TXT – these are both types of DNS record which should be set although SPF have been officially deprecated it still may be used so it can be a good idea to set. The main record that needs to be added is the TXT version.<br />
<br><br />
<br><br />
'''When creating a domain you will not be able to save until you have successfully tested the SPF.'''<br />
[[File:SPF Check Fail.PNG |centre|750px|Hornbill]]<br />
<br><br />
<br><br />
To confirm that the include has been added to a TXT/SPF record it is possible to check using this 3rd party website http://mxtoolbox.com/SuperTool.aspx?action=spf (Hornbill takes no responsibility for 3rd party websites).<br />
</div><br />
</div><br />
<br><br />
<br />
===Option 2: SMTP SmartHost===<br />
A smart host is a type of email message transfer agent that allows a Simple Mail Transfer Protocol (SMTP) server to route email via an intermediate mailserver rather than directly to the recipient's server. With this method, a mailserver within your organisation is configured to allow the relaying of emails from your Hornbill instance (based in our data centre) to your end users. With the relay configured, any outbound email will pass through your domain and therefore, from the recipients perspective, the source domain will correspond to that used in the "from address" that we configure within Hornbill. <br />
<br><br />
<br><br />
To successfully complete the Email integration using this method you will need to:<br />
:# Create an outbound route in Hornbill and configure the necessary details (as shown in the image below).<br />
:# Configure a relay connector on your mail server (allowing relay from the appropriate origin IP stated below) <br />
:# Configure any necessary firewall rules (allowing traffic from the appropriate origin IP) to allow communication from your Hornbill instance. <br />
<br><br />
'''PLEASE NOTE:''' if you are not familiar with how to complete steps 2) and 3), please refer to the relevant vendor-specific documentation for your mail server and firewall interfaces.<br />
<br><br />
<br />
====Origin IP Address====<br />
The origin IP that should be specified in any such firewall rules is one of the following and is dependent on the location of your instance. You should have both the Primary and Secondary IP for your geographical area:<br />
* Europe: - 87.117.243.10 OR 212.71.225.67 (If you are a UK or European customer, your instance will be located in our European data centre and any outbound mail will originate from here)<br />
* North America: - 69.174.249.200 OR 64.34.188.200 (If you are a North American or Canadian customer, your instance will be located in our North American data centre and any outbound mail will originate from here)<br />
<br />
(More information about our data centres can be found in our FAQ: '''[[FAQ:Data_Centres|Hornbill Data Centres]]'''. If you are unable to find the answer you're looking for, please head over to the '''[https://forums.hornbill.com Hornbill forums]''' and start a discussion).<br />
<br />
The origin IP addresses are also contained in the "Email Integration Information" communication sent from your Product Specialist at the beginning of the Switch On.<br />
<br><br />
<br><br />
<br />
====Smart Host Details:====<br />
The information you will need to have to hand when specifying your SMART Host is indicated below:<br />
<br><br />
[[File:SMART Host Details.PNG|700px|SMART Host Configuration Form]]<br />
<br />
==How to configure OAuth2 Authentication for Microsoft Office 365 Mailbox integration==<br />
<br />
[[Category:Administration]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Outbound_Mail_Routing&diff=27174Outbound Mail Routing2021-08-13T08:01:28Z<p>Victors: </p>
<hr />
<div>{{DISPLAYTITLE:Email Domains}}<br />
{{bluebanner|[[Main Page|Home]] > [[Administration]] > [[Email Administration | Email]] > Email Domains|[[:Category:Administration|Index]]}}<br />
{{IntroAndLinks|Creating and configuring an Outbound Route is a required part of providing email functionality within some of the Hornbill applications. The "Domain" is primarily concerned with facilitating the Outbound mail operation, delivering from the Hornbill instance to the outside world. There are two methods of outbound routing available to us, "Direct Outbound" or "SMTP SmartHost".|<br />
:* [[Shared_Mailboxes|Shared Mailboxes (Inbound Route)]]<br />
:* [[Email_Templates|Configuring Email Templates]]<br />
}}<br />
<br />
{{infobox|Although we have expertise around our own platform and its email routing implementation, configuration, and behaviour, we use the language associated with the POP3, IMAP4, and SMTP standards and not the specific language and/or terminology of any specific vendors' mail server interfaces or platforms. <br />
This means Hornbill's technical staff are not experts with the various mail server and firewall interfaces in use. Each organisations mail routing implementation can be unique to their organisation and it will be necessary for you to have someone internally with expertise and a working knowledge of your mail servers and firewalls within your own organisation. You should refer your technical email/network expert to this document which should provide them with sufficient information to allow the planning and configuration of email integration for your organisation.}}<br />
<br><br />
==Creating and Managing your Outbound Routes==<br />
To create and Configure a new Outbound route, in Hornbill Administration navigate to '''Home > System > Email > Outbound Domains'''. You will find a default domain entry (live.hornbill.com) comes already configured with your instance which allows you to test aspects of the Hornbill applications while you are organizing the email configuration required in your infrastructure.<br />
<br />
* To add a new Outbound route click the plus symbol in the top right of the list.<br />
* To view an existing Outbound route, simply click on the name which is presented in the list.<br />
* To delete an existing Outbound route, select the check box next the domain you wish to remove and then click the red trash can button at the top right of the list.<br />
<br />
===Outbound Mail Routing Details===<br />
<br />
To successfully configure an Outbound Mail Route the following details must be completed.<br />
{{bullet1|Domain Name|The name that is used here '''must''' be a valid domain name. For example 'mycompany.com'}}<br />
{{bullet1|Enable processing incoming mail on this route|Turnning this on will allow any email that has been sent to this domain to be processed by the SMTP service and allow it to be routed to the appropriate mailbox.}}<br />
{{bullet1|Automatically Create Address for this route when a new mailbox is created|When a new user is created a personal mailbox is created and associated with that user. When this feature is enabled, each new user will be automatically allocated an email address using this domain name. The Address Format can then be used to set the format of the username.}}<br />
{{bullet1|Address Format|The Address Format to be used when a new personal mailbox is created. This is only available if you have enabled the option above to automatically create addresses for this route. The formats that can be selected are based on variations of the Firstname and Lastname of the user with the exception of the LoginID.}}<br />
{{bullet1|Enable DKIM|DomainKeys Identified Mail (DKIM) is an email authentication method designed to make sure messages aren't altered in transit between the sending and recipient servers and to detect forged sender addresses in email (email spoofing), a technique often used in phishing and email spam.}}<br />
{{bullet2|DKIM Selector|A DKIM selector is specified when the private/public key pair is created when DKIM is set up for the email domain (or email sender), and it can be any arbitrary string of text}}<br />
{{bullet2|DKIM Key Size|Choose between 1024 and 2048 bits for your key size.}}<br />
:::{{infobox|Once the Email Domain has been saved, you will be presented with a DKIM Key}}<br />
{{bullet1|Outbound Routing Mode|There are two methods of outbound routing available in Hornbill, ''Use DNS Routing'' and ''Use SMTP Smart Host''. Select the one that is most desirable to you based on the descriptions below.}}<br />
<br><br />
<br />
== Outbound Routing Modes ==<br />
Now that you have familiarised yourself with where and how Outbound Routing is configured in Hornbill Administration, the next step is to understand which Outbound Routing mode is most suitable for your organisation. The available modes are described below and the decision essentially comes down to what's dictated by your internal IT policies. If your policies don't limit your choice then it's simply what you prefer when it comes to maintaining this integration going forward.<br />
<br><br />
<br><br />
===Option 1: Direct Outbound===<br />
If you wish to use the Direct Outbound method, this quite simply involves the addition of an SPF and TXT record to your DNS server, validating the record using the SPF Check button within the Hornbill Administration UI, and saving the configuration upon success. Please see the section below relating to the SPF/TXT record for more information. <br />
<br />
When email is delivered using the Direct Outbound method, our servers will automatically negotiate the highest level of transport encryption supported by the remote SMTP server. This is completely automatic and is negotiated each and every time a new SMTP connection is made. We support the TLS 1.2, TLS 1.1, TLS 1.0, SSL 3.0 and Plain Text protocols, prioritised and negotiated for in that order<br />
<br><br />
<br />
====SPF/TXT Record====<br />
<br />
If you wish to configure “Use Direct Outbound” and the domain name used in the email from address is not live.hornbill.com, a SPF/TXT Record must be configured. The SPF/TXT record allows Hornbill to send email using the configured domain without risk of breaching any anti-spam/email source validation checks.<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:900px"><br />
It is recommended that this is configured by a system admin to add this record to your DNS.<br />
<br />
<div class="mw-collapsible-content" style="width:1050px"><br />
The following record is to be added <br />
*'''include:_spf.hornbill.com'''<br />
<br />
An example SPF/TXT record would be <br />
<br />
''v=spf1 include:_spf.hornbill.com ~all''<br />
<br />
On all outbound email for this domain, Hornbill checks that the SPF/TXT record has the '''include:_spf.hornbill.com''' section set otherwise the mail will refuse to send.<br />
<br />
This check is put in place to ensure Hornbill is allowed to send email as the given domain and to prevent abuse such as someone sending email pretending to be from a domain they do not own.<br />
<br />
SPF/TXT – these are both types of DNS record which should be set although SPF have been officially deprecated it still may be used so it can be a good idea to set. The main record that needs to be added is the TXT version.<br />
<br><br />
<br><br />
'''When creating a domain you will not be able to save until you have successfully tested the SPF.'''<br />
[[File:SPF Check Fail.PNG |centre|750px|Hornbill]]<br />
<br><br />
<br><br />
To confirm that the include has been added to a TXT/SPF record it is possible to check using this 3rd party website http://mxtoolbox.com/SuperTool.aspx?action=spf (Hornbill takes no responsibility for 3rd party websites).<br />
</div><br />
</div><br />
<br><br />
<br />
===Option 2: SMTP SmartHost===<br />
A smart host is a type of email message transfer agent that allows a Simple Mail Transfer Protocol (SMTP) server to route email via an intermediate mailserver rather than directly to the recipient's server. With this method, a mailserver within your organisation is configured to allow the relaying of emails from your Hornbill instance (based in our data centre) to your end users. With the relay configured, any outbound email will pass through your domain and therefore, from the recipients perspective, the source domain will correspond to that used in the "from address" that we configure within Hornbill. <br />
<br><br />
<br><br />
To successfully complete the Email integration using this method you will need to:<br />
:# Create an outbound route in Hornbill and configure the necessary details (as shown in the image below).<br />
:# Configure a relay connector on your mail server (allowing relay from the appropriate origin IP stated below) <br />
:# Configure any necessary firewall rules (allowing traffic from the appropriate origin IP) to allow communication from your Hornbill instance. <br />
<br><br />
'''PLEASE NOTE:''' if you are not familiar with how to complete steps 2) and 3), please refer to the relevant vendor-specific documentation for your mail server and firewall interfaces.<br />
<br><br />
<br />
====Origin IP Address====<br />
The origin IP that should be specified in any such firewall rules is one of the following and is dependent on the location of your instance. You should have both the Primary and Secondary IP for your geographical area:<br />
* Europe: - 87.117.243.10 OR 212.71.225.67 (If you are a UK or European customer, your instance will be located in our European data centre and any outbound mail will originate from here)<br />
* North America: - 69.174.249.200 OR 64.34.188.200 (If you are a North American or Canadian customer, your instance will be located in our North American data centre and any outbound mail will originate from here)<br />
<br />
(More information about our data centres can be found in our FAQ: '''[[FAQ:Data_Centres|Hornbill Data Centres]]'''. If you are unable to find the answer you're looking for, please head over to the '''[https://forums.hornbill.com Hornbill forums]''' and start a discussion).<br />
<br />
The origin IP addresses are also contained in the "Email Integration Information" communication sent from your Product Specialist at the beginning of the Switch On.<br />
<br><br />
<br><br />
<br />
====Smart Host Details:====<br />
The information you will need to have to hand when specifying your SMART Host is indicated below:<br />
<br><br />
[[File:SMART Host Details.PNG|700px|SMART Host Configuration Form]]<br />
<br />
===How to configure OAuth2 Authentication for Microsoft Office 365 Mailbox integration===<br />
<br />
[[Category:Administration]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Mapping_Fields_from_Customised_Forms&diff=26945Mapping Fields from Customised Forms2021-06-22T08:33:57Z<p>Victors: /* Introduction */</p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
__NOTOC__[[Main Page|Home]] > [[Administration]] > [[Progressive Capture Designer]] > Mapping Fields from Customised Forms<br />
</div><br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
== Introduction ==<br />
<br />
Any information captured in customised forms results in the question and answer to be visible on the request form in a '''Questions''' collapsable section. Custom forms also support field mapping which is a mechanism that allows us to write the information to the main request table.<br />
<br />
===Why would I use field mapping?===<br />
<br />
Field mapping is desirable for two reasons:<br />
:# to make the answers to custom questions more accessible for reporting (i.e. Measures, Widgets, Reports).<br />
:# to make the answers to custom questions available in email templates.<br />
<br />
The information gathered in a progressive capture custom form is stored in a table h_itsm_questions and is intended to act as a sort of audit history displaying what information was provided at the point the request was logged. Answers in the Questions section of a request can be edited. This option is only available for single-line and multi-line text fields and only for users having "Service Manager Delete Questions" or "Service Desk Admin" roles. Any other type of answers cannot be edited.<br />
<br><br />
<br />
The way the data is stored in the table h_itsm_questions does not offer us much flexibility when it comes to reporting and also means is not accessible via the email template variable picker. The exercise of field mapping ensures the data is written to h_itsm_requests (the main request table) which means it is readily available.<br />
<br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
:* [[Customised_Forms|Customised forms]] <br />
:* [[Request_Details_Form_Designer|Request Details Form Designer]]<br />
|}<br />
<br />
== Configuring a Custom Field for Mapping ==<br />
When creating a custom question on a customised form, each question requires a Field ID and it is here that the mapping can be performed. When defining the Field ID, if you use any of the following values, the answer to this question will be mapped to the database column you have specified. <br />
<br />
[[File:Mapping_Custom_Fields.png|400px|thumb|<div align="center">'''Field mapping takes place when a supported database column name is specified as the field id of a custom field.'''</div>]]<br />
<br />
===Which Database Columns Support Field Mapping?===<br />
<br />
To map a custom form answer to one of the supported database columns, the form field ID need to be set using the following format '''h_custom_a''' or appropriate column you would like to map to. The table below lists all the database columns that support field mapping and the type of content that they can hold.<br />
<br><br />
{| class="wikitable" width="70%" style="text-align: left"<br />
<br />
! width = "180px" | Available Columns<br />
! width = "220px" | Data Type/Capacity<br />
! width = "600px%" | Description<br />
<br />
|-<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_summary<br />
| <!-- Data Type/Capacity --> VARCHAR/255 characters<br />
| <!-- Description --> The Summary field of a request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_description<br />
| <!-- Data Type/Capacity --> TEXT/unlimited*<br />
| <!-- Description --> The description field of a request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_site<br />
| <!-- Data Type/Capacity --> VARCHAR/64 characters<br />
| <!-- Description --> The site field for a request<br />
|-<br />
| align = "left" |<!-- Column Name --> h_custom_a - h_custom_o<br />
| <!-- Data Type/Capacity --> VARCHAR/255 characters<br />
| <!-- Description --> ''VARCHAR'' custom fields a - o each suitable for holding up to 255 characters of any type.<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_custom_p - h_custom_t<br />
| <!-- Data Type/Capacity --> TEXT/unlimited*<br />
| <!-- Description --> ''TEXT'' custom fields p - t each suitable for holding large amounts of text characters of any type.<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_custom_21 - h_custom_25<br />
| <!-- Data Type/Capacity --> DATETIME/a single date-time stamp<br />
| <!-- Description --> ''DATETIME'' custom fields 21 - 25 each suitable for holding a single date-time stamp (YYYY-MM-dd HH:mm:ss). These columns should ONLY be used in conjunction with a date-time picker.<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_custom_26 - h_custom_30<br />
| <!-- Data Type/Capacity --> INTEGER/any whole number <br />
| <!-- Description --> ''INTEGER'' custom fields 26 - 30 each suitable for holding whole numbers. When mapping to these columns, ensure the following RegEx is specified in your Custom field settings: ''[0-9]''<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_custom_31 - h_custom_40<br />
| <!-- Data Type/Capacity --> TEXT/unlimited*<br />
| <!-- Description --> ''TEXT'' custom fields 31 - 40 each suitable for holding large amounts of text characters of any type.<br />
<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_backout_plan<br />
| <!-- Data Type/Capacity --> Text/Unlimited*<br />
| <!-- Description --> The Back Out Plan of a Change or Release Request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_support_plan<br />
| <!-- Data Type/Capacity --> Text/Unlimited*<br />
| <!-- Description --> The Support Plan of a Change or Relase Request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_communication_plan<br />
| <!-- Data Type/Capacity --> Text/Unlimited*<br />
| <!-- Description --> The Communication Plan of a Change or Release Request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_test_plan<br />
| <!-- Data Type/Capacity --> Text/Unlimited*<br />
| <!-- Description --> The Test Plan of a Change or Release Request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_implementation_plan<br />
| <!-- Data Type/Capacity --> Text/Unlimited*<br />
| <!-- Description --> The Implementation Plan of a Change or Release Request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_security_implications<br />
| <!-- Data Type/Capacity --> Text/Unlimited*<br />
| <!-- Description --> The Security Implications of a Change or Release Request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_change_justification<br />
| <!-- Data Type/Capacity --> Text/Unlimited*<br />
| <!-- Description --> The Change Justification a Change Request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_release_justification<br />
| <!-- Data Type/Capacity --> Text/Unlimited*<br />
| <!-- Description --> The Change Justification a Release Request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_release_plan<br />
| <!-- Data Type/Capacity --> Text/Unlimited*<br />
| <!-- Description --> The Release Plan for a Release Request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_disruption_level<br />
| <!-- Data Type/Capacity --> VarChar/255 Characters<br />
| <!-- Description --> The Disruption Level of a Change or Release Request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_change_category <br />
| <!-- Data Type/Capacity --> VarChar/100 Characters<br />
| <!-- Description --> The Category of a Change Request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_release_category <br />
| <!-- Data Type/Capacity --> VarChar/100 Characters<br />
| <!-- Description --> The Category of a Release Request<br />
|-<br />
| align = "left" |<!-- Column Name --> h_proposed_start_time<br />
| <!-- Data Type/Capacity --> DATETIME/a single date-time stamp<br />
| <!-- Description --> The Proposed Start date/time of the a Change or Release Request - (YYYY-MM-dd HH:mm:ss). These columns should ONLY be used in conjunction with a date-time picker<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_proposed_end_time<br />
| <!-- Data Type/Capacity --> DATETIME/a single date-time stamp<br />
| <!-- Description --> The Proposed End date / time of the a Change or Release Request - (YYYY-MM-dd HH:mm:ss). These columns should ONLY be used in conjunction with a date-time picker<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_workaround<br />
| <!-- Data Type/Capacity --> Text/Unlimited*<br />
| <!-- Description --> The Workaround for a Problem or Known Error record<br />
<br />
|}<br />
unlimited* - TEXT fields have a maximum capacity of 65000 characters.<br />
<br><br />
<br><br />
<br />
===Considerations===<br />
<br />
* When specifying the column you wish to map to in your custom form id, '''this value is case sensitive'''. e.g. ''h_summary'' will acheive the desired mapping but ''h_'''S'''ummary'' will fail to pull any values through. Ensure that the mapped value is written in lower case.<br />
* When the option of ''value / display'' is offered (e.g. in a static drop-down list) it is the '''display''' value that will be mapped to the column.<br />
* Do not store Telephone Numbers in ''Integer'' fields. At best you will lose the initial ''''0'''', even more likely is that the value will exceed the maximum allowed for an Integer and the operation will fail.<br />
* If the Default '''Request Details''' form is used in your progressive capture flow, and you try to map to h_summary or h_description, the values will not overwrite or be written to the summary or description fields i.e. the standard "Request Details" form takes precedence, but the custom questions and answers will still be written to the '''Questions''' section on the request.<br />
* If the same mapping is used on different custom forms in your progressive capture flow, the first mapping will be written to the specified default field on the request, and any subsequent mapping to the same field will not overwrite this value, but will be written to the '''Questions''' section on the request.<br />
* When custom questions have been mapped, the question and answer are still available in the '''Questions''' section on a request as well as now being available in the mapped field. This restriction can be controlled via the application setting "guest.itsm.progressiveCapture.overwriteCustomFieldValue".<br />
* Once you have configured field mapping in your progressive capture custom forms, you may need to expose the mapped field on the request. See the [[Request_Details_Form_Designer|'''Request Details Form Designer''']] for more information.<br />
* When creating your email template, simply look for the '''custom''' options available from the variables drop down pick list. By selecting the required variable in your email template, this will pass through the answer from your custom question which has been mapped to the corresponding custom field.<br />
<br />
[[Category:Administration]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Upload_Assets_CSV&diff=26208Upload Assets CSV2021-01-21T12:08:43Z<p>Victors: /* Creating The Upload Template */</p>
<hr />
<div>__NOTOC__[[Main Page|Home]] > [[Service Manager]] > [[Asset Management]] > [[Manage Assets]] > Assets CSV<br />
{{#ev:youtube|9qi1GvqwsYw|400|right}}<br />
===Introduction===<br />
<br />
Manually upload multiple assets for specific Asset Classes from CSV files. This option is provided to allow the '''Insert''' of new assets into the Service Manager asset repository, this is generally used for static data. If you require the ability to schedule the importing of new or updates to existing assets from discovery tools or MSSQL or MySQL databases, please read more about our Asset Import utility [[Database_Asset_Import|'''Here''']]<br />
<br />
* As an Asset Management Administrator select the '''Asset Upload''' option from the '''Asset Management''' Icon on the Application navigation bar.<br />
<br />
<br />
==Creating The Upload Template==<br />
<br />
It is possible to upload assets of different asset '''Types''' but only those which are managed under the same asset '''Class''' from a single CSV template. If you require to upload assets for types which are managed under different asset classes, you are required to create different CSV templates for each asset class grouping. <br />
<br />
:1. Firstly select the Asset Class from the drop down control against which you wish to import the new assets. In doing so the option to '''download''' the related asset class template will become enabled. <br />
:2. Select to download the template file.<br />
:3. Populate the template file rows and columns with the attributes for each asset you which to upload.<br />
:4. '''Name''' and '''Type''' are mandatory attributes for each asset you wish to upload regardless of their type or class.<br />
:5. Save the template file.<br />
<br />
* Note - Whilst other attributes are not mandatory to perform the import, it is good practise to populate the attribute fields to match those which you have enabled for each asset type, when you were defining the asset types. Examples being Usedby, or Site, should you want the assets to appear as linked to these entities when performing other Service Manager actions, such as logging requests through progressive capture and having the option to choose from a list of assets associated to the user.<br />
<br />
:* Used by requires the usedById, usedByName and usedByType attributes to be completed. usedByType should be populated with either:<br />
:** 0 - if Used By is a coworker<br />
:** 1 - if Used By is a contact<br />
:* Owned By requires both the ownedById, ownedByName and ownedByType attributes to be completed. ownedByType should be populated with either:<br />
:** 0 - if Owned By is a coworker<br />
:** 1 - if Owned By is a contact<br />
:* Site requires both the site and the siteId attributes to be completed. SiteId refers to the database numerical value not the display name<br />
:* Date attributes are required in the following format: yyyy-mm-dd hh:mm:ssZ<br />
:* Country requires the ISO Alpha 2 codes as per the listing here - [https://en.wikipedia.org/wiki/ISO_3166-1]<br />
<br />
The fields in the CSV file are mapped on the assets database table. To find what values and types need to be populated in the fields, navigate to Home > Applications > Service Manager > Entity Viewer. Select "Database Schema Viewer" and navigate to the the "h_cmdb_assets" table.<br />
<br />
==Validation==<br />
<br />
Against each asset class it is possible to configure which if any fields for that given asset class you wish to perform data validation before uploading the assets from the CSV file into the Service Manager asset repository. <br />
<br />
* As each customer maybe using different unique identifiers, it is possible for each customer to select from the available fields for each asset class, against which to perform the validation to ensure an asset does not already exist, and therefore avoid the creation of duplicate entries. <br />
<br />
:1. Select Validation<br />
:2. Select one, multiple or all of the available fields to perform the validation checks against and select save.<br />
<br />
* '''It is important to appreciate that the upload time for the asset import will be extended if validation is enabled and if multiple checks are required to be performed.'''<br />
<br />
==Select CSV File to Upload==<br />
<br />
In order to initiate the asset upload, you will need to select the CSV file you wish to use. On selecting the file the import process will automatically begin.<br />
<br />
On completion of the import a report will be produced which will summarise:<br />
<br />
* Number of records processed<br />
* The number of records successfully uploaded<br />
* Records which failed to upload<br />
<br />
If during the import process, specific rows of asset data are not able to be imported, this will be detailed below including:<br />
<br />
* Which rows failed<br />
* The reason for the failures <br />
<br />
[[File:CSV_Import_Errors.png|600px]]<br />
<br />
[[Category: Service Manager]][[Category:Videos]]</div>Victorshttps://wiki.hornbill.com/index.php?title=ServiceNow_Request_Import&diff=26207ServiceNow Request Import2021-01-21T10:19:38Z<p>Victors: /* HBConfig */</p>
<hr />
<div>= Overview =<br />
<br />
This tool provides functionality to allow the import of Task/Request data from ServiceNow in to Hornbill Service Manager.<br />
<br />
The following tasks are carried out when the tool is executed:<br />
<br />
* ServiceNow task data is extracted as per your specification, as outlined in the Configuration section of this document;<br />
* New requests are raised on Service Manager using the extracted task data and associated mapping specifications;<br />
* ServiceNow Task diary entries are imported as Historic Updates against the new Service Manager Requests;<br />
* ServiceNow Task attachments are attached to the relevant imported Service Manager request;<br />
* Previous parent-child relationships between ServiceNow Tasks are re-created by linking the newly-imported Service Manager requests with their previous parents/children;<br />
* ServiceNow Approval Tasks are imported as Hornbill Activity Tasks, and associated with the relevant imported Requests.<br />
<br />
==== IMPORTANT! ====<br />
<br />
Importing ServiceNow task data and associated file attachments will consume your subscribed Hornbill storage. Please check your Administration console and your ServiceNow data to ensure that you have enough subscribed storage available before running this import.<br />
<br />
= Installation =<br />
<br />
==== Windows ====<br />
<br />
* Download the [[https://github.com/hornbill/goServiceNowRequestImporter/releases/latestZIP archive]] containing the import executables for your operating system and architecture<br />
* Extract zip into a folder you would like the application to run from e.g. <code>C:\servicenow_request_import\</code><br />
* Open ‘’’conf.json’’’ and add in the necessary configuration<br />
* Open Command Line Prompt as Administrator<br />
* Change Directory to the folder containing the extracted files <code>C:\servicenow_request_import\</code><br />
* Run the command relevant to the computer you are running this on:<br />
* ** For Windows Machines : goServiceNowRequestImport.exe -dryrun=true<br />
<br />
= Configuration =<br />
<br />
Example JSON File:<br />
<br />
<pre class="json"><br />
{<br />
"HBConf": {<br />
"UserName": "Hornbill Instance Username",<br />
"Password": "Hornbill Instance Password",<br />
"InstanceID": "Hornbill Instance ID (case sensitive)"<br />
},<br />
"SNAppDBConf": {<br />
"Driver": "mysql",<br />
"Server": "IP Address of Database Server",<br />
"Database": "servicenow_dbname",<br />
"UserName": "Database User ID",<br />
"Password": "Database Password",<br />
"Port": 3306,<br />
"Encrypt": false<br />
},<br />
"CustomerType": "0",<br />
"ConfIncident": {<br />
"Import":false,<br />
"CallClass": "Incident",<br />
"DefaultTeam":"Service Desk",<br />
"DefaultPriority":"Low",<br />
"DefaultService":"ServiceNow Historic Requests",<br />
"SQLStatement":{<br />
"0":"SELECT task.sys_id AS request_guid, task.sys_class_name AS callclass, task.number AS callref, ",<br />
"1":"task.made_sla, task.opened_at AS logdate, task.u_desk_visit, u_symptoms.u_name AS symptom_name, ",<br />
"2":"task.short_description, task.description, task.u_category, task.category_1, task.contact_type, ",<br />
"3":"task.u_resolved_at, task.closed_at, task.close_code, task.close_notes, task.sys_created_by AS createdby_username, ",<br />
"4":"core_company.name AS company_name, cmdb_ci.name AS service_name, dept.name AS department, ",<br />
"5":"task.u_first_line_fix, parent_task.number AS parent_task_ref, ",<br />
"6":"(SELECT label FROM sys_choice where name = 'incident' AND element = 'incident_state' AND value = task.incident_state) AS incident_state, ",<br />
"7":"(SELECT label FROM sys_choice where name = 'task' AND element = 'state' AND value = task.state) AS task_state, ",<br />
"8":"(SELECT name from cmdb_ci where sys_id = task.u_close_ci) AS close_ci, ",<br />
"9":"(SELECT user_name FROM sys_user where sys_id = task.opened_by) AS loggedby, ",<br />
"10":"(SELECT user_name FROM sys_user where sys_id = task.assigned_to) AS owner_username, ",<br />
"11":"(SELECT name FROM sys_user where sys_id = task.assigned_to) AS owner_name, ",<br />
"12":"(SELECT name FROM sys_user_group where sys_id = task.assignment_group) AS support_group, ",<br />
"13":"(SELECT user_name FROM sys_user WHERE sys_id = task.a_ref_1) AS incident_customer_username, ",<br />
"14":"(SELECT name FROM sys_user where sys_id = task.a_ref_1) AS incident_customer_name, ",<br />
"15":"(SELECT label FROM sys_choice where name = 'incident' AND element = 'priority' AND value = task.priority) AS priority, ",<br />
"16":"(SELECT label FROM sys_choice where name = 'incident' AND element = 'impact' AND value = task.impact) AS impact, ",<br />
"17":"(SELECT label FROM sys_choice where name = 'incident' AND element = 'urgency' AND value = task.urgency) AS urgency, ",<br />
"18":"(SELECT label FROM sys_choice where name = 'incident' AND element = 'severity' AND value = task.severity) AS severity, ",<br />
"19":"(SELECT user_name FROM sys_user WHERE sys_id = task.u_resolved_by) AS resolved_by, ",<br />
"20":"(SELECT name FROM sys_user where sys_id = task.u_resolved_by) AS resolved_by_name, ",<br />
"21":"(SELECT user_name FROM sys_user where sys_id = task.closed_by) AS closed_by, ",<br />
"22":"(SELECT name FROM sys_user where sys_id = task.closed_by) AS closed_by_name, ",<br />
"23":"(SELECT name FROM cmn_location WHERE sys_id = task.location) AS site ",<br />
"24":"FROM servicenow_dbname.task ",<br />
"25":"LEFT JOIN core_company ON task.company = core_company.sys_id ",<br />
"26":"LEFT JOIN cmdb_ci ON task.u_internal_service = cmdb_ci.sys_id ",<br />
"27":"LEFT JOIN cmn_department dept ON task.u_business_unit = dept.sys_id",<br />
"28":"LEFT JOIN task parent_task ON task.parent = parent_task.sys_id ",<br />
"29":"LEFT JOIN u_symptoms ON task.u_symptom = u_symptoms.sys_id ",<br />
"30":"WHERE task.sys_class_name = 'incident' "<br />
},<br />
"CoreFieldMapping": {<br />
"h_datelogged":"[logdate]",<br />
"h_dateresolved":"[u_resolved_at]",<br />
"h_dateclosed":"[closed_at]",<br />
"h_summary":"[short_description]",<br />
"h_description":"ServiceNow Incident Task Reference: [callref]\n\n[description]",<br />
"h_external_ref_number":"[callref]",<br />
"h_createdby":"[createdby_username]",<br />
"h_fk_user_id":"[incident_customer_username]",<br />
"h_fk_user_name":"[incident_customer_name]",<br />
"h_status":"[incident_state]",<br />
"h_request_language":"en-GB",<br />
"h_impact":"[impact]",<br />
"h_urgency":"[urgency]",<br />
"h_customer_type":"0",<br />
"h_container_id":"",<br />
"h_fk_serviceid":"ServiceNow Historic Requests",<br />
"h_resolution":"[close_notes]",<br />
"h_resolvedby_user_id":"[resolved_by]",<br />
"h_resolvedby_username":"[resolved_by_name]",<br />
"h_closedby_user_id":"[closed_by]",<br />
"h_closedby_username":"[closed_by_name]",<br />
"h_category_id":"",<br />
"h_category":"[symptom_name]",<br />
"h_closure_category_id":"",<br />
"h_closure_category":"[close_code]",<br />
"h_ownerid":"[owner_username]",<br />
"h_ownername":"[owner_name]",<br />
"h_fk_team_id":"[support_group]",<br />
"h_fk_priorityid":"[priority]",<br />
"h_site_id":"[site]",<br />
"h_source_type":"[contact_type]",<br />
"h_company_id":"",<br />
"h_company_name":"[company_name]",<br />
"h_withinfix":"[made_sla]",<br />
"h_withinresponse":"[made_sla]",<br />
"h_custom_a":"[request_guid]",<br />
"h_custom_b":"[service_name]",<br />
"h_custom_c":"[close_ci]",<br />
"h_custom_d":"[close_code]",<br />
"h_custom_e":"[createdby_username]",<br />
"h_custom_f":"[incident_customer_name]",<br />
"h_custom_g":"[owner_name]",<br />
"h_custom_h":"[department]",<br />
"h_custom_i":"[site]",<br />
"h_custom_j":"",<br />
"h_custom_k":"",<br />
"h_custom_l":"",<br />
"h_custom_m":"",<br />
"h_custom_n":"",<br />
"h_custom_o":"",<br />
"h_custom_p":"",<br />
"h_custom_q":""<br />
},<br />
"AdditionalFieldMapping":{<br />
"h_firsttimefix":"",<br />
"h_custom_a":"",<br />
"h_custom_b":"",<br />
"h_custom_c":"",<br />
"h_custom_d":"",<br />
"h_custom_e":"",<br />
"h_custom_f":"",<br />
"h_custom_g":"",<br />
"h_custom_h":"",<br />
"h_custom_i":"",<br />
"h_custom_j":"",<br />
"h_custom_k":"",<br />
"h_custom_l":"",<br />
"h_custom_m":"",<br />
"h_custom_n":"",<br />
"h_custom_o":"",<br />
"h_custom_p":"",<br />
"h_custom_q":"",<br />
"h_flgproblemfix":"",<br />
"h_fk_problemfixid":"",<br />
"h_flgfixisworkaround":"",<br />
"h_flg_fixisresolution":""<br />
},<br />
"StatusMapping":{<br />
"ServiceNow Status":"Service Manager Status",<br />
"New":"status.new",<br />
"In Progress":"status.open",<br />
"Scheduled":"status.open",<br />
"Accepted":"status.open",<br />
"Resolved":"status.resolved",<br />
"Closed":"status.closed"<br />
},<br />
"PriorityMapping": {<br />
"ServiceNow Priority": "Service Manager Priority"<br />
},<br />
"ServiceMapping": {<br />
"ServiceNow Service Name":"Service Manager Service Name"<br />
}<br />
},<br />
"ConfServiceRequest": {<br />
"Import":false,<br />
"CallClass": "Service Request",<br />
"DefaultTeam":"Service Desk",<br />
"DefaultPriority":"Low",<br />
"DefaultService":"ServiceNow Historic Requests",<br />
"SQLStatement":{<br />
"0":"SELECT task.sys_id AS request_guid, task.sys_class_name AS callclass, task.number AS callref, ",<br />
"1":"task.made_sla, task.opened_at AS logdate, task.u_desk_visit, ",<br />
"2":"task.short_description, task.description, task.u_category, task.category_1, task.category_2, task.contact_type, ",<br />
"3":"task.u_resolved_at, task.closed_at, task.close_code, task.close_notes, ",<br />
"4":"task.u_total, task.u_total_string, task.u_unit_cost, task.u_ucost_string, task.u_quantity, task.u_payment_method, ",<br />
"5":"task.approval, task.u_it_approval_required, task.u_business_approval_required, task.sys_created_by AS createdby_username, ",<br />
"6":"dept.name as department, core_company.name AS company_name, cmdb_ci.name AS service_name, ",<br />
"7":"task.u_first_line_fix, parent_task.number AS parent_task_ref, wf.name AS workflow, ",<br />
"8":"(SELECT label FROM sys_choice where name = 'sc_request' AND element = 'request_state' AND value = task.request_state) AS request_state, ",<br />
"9":"(SELECT label FROM sys_choice where name = 'task' AND element = 'state' AND value = task.state) AS task_state, ",<br />
"10":"(SELECT name from cmdb_ci where sys_id = task.u_close_ci) AS close_ci,",<br />
"11":"(SELECT user_name FROM sys_user where sys_id = task.opened_by) AS loggedby, ",<br />
"12":"(SELECT user_name FROM sys_user where sys_id = task.assigned_to) AS owner_username, ",<br />
"13":"(SELECT name FROM sys_user where sys_id = task.assigned_to) AS owner_name, ",<br />
"14":"(SELECT name FROM sys_user_group where sys_id = task.assignment_group) AS support_group, ",<br />
"15":"(SELECT label FROM sys_choice where name = 'task' AND element = 'priority' AND value = task.priority) AS priority, ",<br />
"16":"(SELECT label FROM sys_choice where name = 'task' AND element = 'impact' AND value = task.impact) AS impact, ",<br />
"17":"(SELECT label FROM sys_choice where name = 'task' AND element = 'urgency' AND value = task.urgency) AS urgency, ",<br />
"18":"(SELECT user_name FROM sys_user WHERE sys_id = task.requested_for) AS requested_for_username, ",<br />
"19":"(SELECT name FROM sys_user where sys_id = task.requested_for) AS requested_for_name, ",<br />
"20":"(SELECT user_name FROM sys_user WHERE sys_id = task.u_resolved_by) AS resolved_by, ",<br />
"21":"(SELECT name FROM sys_user where sys_id = task.u_resolved_by) AS resolved_by_name, ",<br />
"22":"(SELECT user_name FROM sys_user where sys_id = task.closed_by) AS closed_by, ",<br />
"23":"(SELECT name FROM sys_user where sys_id = task.closed_by) AS closed_by_name, ",<br />
"24":"(SELECT name FROM cmn_location WHERE sys_id = task.location) AS site ",<br />
"25":"FROM servicenow_dbname.task ",<br />
"26":"LEFT JOIN core_company ON task.company = core_company.sys_id ",<br />
"27":"LEFT JOIN cmdb_ci ON task.u_internal_service = cmdb_ci.sys_id ",<br />
"28":"LEFT JOIN cmn_department dept ON task.u_business_unit = dept.sys_id ",<br />
"29":"LEFT JOIN task parent_task ON task.parent = parent_task.sys_id ",<br />
"30":"LEFT JOIN wf_context wf ON task.sys_id = wf.id ",<br />
"31":"WHERE task.sys_class_name IN ('sc_request','sc_task')"<br />
},<br />
"CoreFieldMapping": {<br />
"h_datelogged":"[logdate]",<br />
"h_dateresolved":"[u_resolved_at]",<br />
"h_dateclosed":"[closed_at]",<br />
"h_summary":"[short_description]",<br />
"h_description":"ServiceNow Service Request Task Reference: [callref]\n\n[description]",<br />
"h_external_ref_number":"[callref]",<br />
"h_createdby":"[createdby_username]",<br />
"h_fk_user_id":"[requested_for_username]",<br />
"h_fk_user_name":"[requested_for_name]",<br />
"h_status":"[request_state]",<br />
"h_request_language":"en-GB",<br />
"h_impact":"[impact]",<br />
"h_urgency":"[urgency]",<br />
"h_customer_type":"0",<br />
"h_container_id":"",<br />
"h_fk_serviceid":"ServiceNow Historic Requests",<br />
"h_resolution":"[close_notes]",<br />
"h_resolvedby_user_id":"[resolved_by]",<br />
"h_resolvedby_username":"[resolved_by_name]",<br />
"h_closedby_user_id":"[closed_by]",<br />
"h_closedby_username":"[closed_by_name]",<br />
"h_category_id":"",<br />
"h_category":"[symptom_name]",<br />
"h_closure_category_id":"",<br />
"h_closure_category":"[close_code]",<br />
"h_ownerid":"[owner_username]",<br />
"h_ownername":"[owner_name]",<br />
"h_fk_team_id":"[support_group]",<br />
"h_fk_priorityid":"[priority]",<br />
"h_site_id":"[site]",<br />
"h_source_type":"[contact_type]",<br />
"h_company_id":"",<br />
"h_company_name":"[company_name]",<br />
"h_withinfix":"[made_sla]",<br />
"h_withinresponse":"[made_sla]",<br />
"h_custom_a":"[request_guid]",<br />
"h_custom_b":"[service_name]",<br />
"h_custom_c":"[close_ci]",<br />
"h_custom_d":"[close_code]",<br />
"h_custom_e":"[createdby_username]",<br />
"h_custom_f":"[requested_for_name]",<br />
"h_custom_g":"[owner_name]",<br />
"h_custom_h":"[department]",<br />
"h_custom_i":"[site]",<br />
"h_custom_j":"",<br />
"h_custom_k":"",<br />
"h_custom_l":"",<br />
"h_custom_m":"",<br />
"h_custom_n":"",<br />
"h_custom_o":"",<br />
"h_custom_p":"",<br />
"h_custom_q":""<br />
},<br />
"AdditionalFieldMapping":{<br />
"h_custom_a":"",<br />
"h_custom_b":"",<br />
"h_custom_c":"",<br />
"h_custom_d":"",<br />
"h_custom_e":"",<br />
"h_custom_f":"",<br />
"h_custom_g":"",<br />
"h_custom_h":"",<br />
"h_custom_i":"",<br />
"h_custom_j":"",<br />
"h_custom_k":"",<br />
"h_custom_l":"",<br />
"h_custom_m":"",<br />
"h_custom_n":"",<br />
"h_custom_o":"",<br />
"h_custom_p":"",<br />
"h_custom_q":""<br />
},<br />
"StatusMapping":{<br />
"ServiceNow Status":"Service Manager Status",<br />
"New":"status.new",<br />
"In Progress":"status.open",<br />
"Scheduled":"status.open",<br />
"Accepted":"status.open",<br />
"Resolved":"status.resolved",<br />
"Closed Cancelled":"status.cancelled",<br />
"Closed":"status.closed"<br />
},<br />
"PriorityMapping": {<br />
"ServiceNow Priority": "Service Manager Priority"<br />
},<br />
"ServiceMapping": {<br />
"ServiceNow Service Name":"Service Manager Service Name"<br />
}<br />
},<br />
"ConfChangeRequest": {<br />
"Import":true,<br />
"CallClass": "Change Request",<br />
"DefaultTeam":"Service Desk",<br />
"DefaultPriority":"Low",<br />
"DefaultService":"ServiceNow Historic Requests",<br />
"SQLStatement":{<br />
"0":"SELECT task.sys_id AS request_guid, task.sys_class_name AS callclass, task.number AS callref, ",<br />
"1":"task.made_sla, task.opened_at AS logdate, task.u_desk_visit, task.type_1 AS change_type, ",<br />
"2":"task.short_description, task.description, task.u_category, task.category_1, task.category_2, task.contact_type, ",<br />
"3":"task.u_resolved_at, task.closed_at, task.u_closed_code, task.close_notes, task.approval, ",<br />
"4":"GROUP_CONCAT(DISTINCT dept.name) AS department, core_company.name AS company_name, cmdb_ci.name AS service_name, ",<br />
"5":"task.u_first_line_fix, parent_task.number AS parent_task_ref, wf.name AS workflow, task.u_justification, task.u_disruption, ",<br />
"6":"task.u_disruption_duration, task.backout_plan, task.u_support_plan, task.u_communication_plan, task.u_security_implication, task.change_plan, ",<br />
"7":"task.test_plan, task.u_implementation_result, task.u_imp_results, task.u_post_imp_results, ",<br />
"8":"(SELECT label FROM sys_choice where name = 'sc_request' AND element = 'request_state' AND value = task.request_state) AS request_state, ",<br />
"9":"(SELECT label FROM sys_choice where name = 'task' AND element = 'state' AND value = task.state) AS task_state, ",<br />
"10":"(SELECT user_name FROM sys_user where sys_id = task.opened_by) AS loggedby, ",<br />
"11":"(SELECT user_name FROM sys_user where sys_id = task.assigned_to) AS owner_username, ",<br />
"12":"(SELECT name FROM sys_user_group where sys_id = task.assignment_group) AS support_group, ",<br />
"13":"(SELECT label FROM sys_choice where name = 'task' AND element = 'priority' AND value = task.priority) AS priority, ",<br />
"14":"(SELECT label FROM sys_choice where name = 'task' AND element = 'impact' AND value = task.impact) AS impact, ",<br />
"15":"(SELECT label FROM sys_choice where name = 'task' AND element = 'urgency' AND value = task.urgency) AS urgency, ",<br />
"16":"(SELECT user_name FROM sys_user WHERE sys_id = task.requested_for) AS requested_for_username, ",<br />
"17":"(SELECT name FROM sys_user where sys_id = task.requested_for) AS requested_for_name, ",<br />
"18":"(SELECT user_name FROM sys_user WHERE sys_id = task.u_resolved_by) AS resolved_by, ",<br />
"19":"(SELECT user_name FROM sys_user where sys_id = task.closed_by) AS closed_by, ",<br />
"20":"(SELECT name FROM sys_user where sys_id = task.closed_by) AS closed_by_name,",<br />
"21":"(SELECT name FROM cmn_location WHERE sys_id = task.location) AS site ",<br />
"22":"FROM servicenow_dbname.task ",<br />
"23":"LEFT JOIN core_company ON task.company = core_company.sys_id ",<br />
"24":"LEFT JOIN cmdb_ci ON task.u_service = cmdb_ci.sys_id ",<br />
"25":"LEFT JOIN cmn_department dept ON FIND_IN_SET(dept.sys_id, task.bu_affect) > 0 ",<br />
"26":"LEFT JOIN task parent_task ON task.parent = parent_task.sys_id ",<br />
"27":"LEFT JOIN wf_context wf ON task.sys_id = wf.id ",<br />
"28":"WHERE task.sys_class_name = 'change_request'",<br />
"29":"GROUP BY task.number"<br />
},<br />
"CoreFieldMapping": {<br />
"h_datelogged":"[logdate]",<br />
"h_dateresolved":"[u_resolved_at]",<br />
"h_dateclosed":"[closed_at]",<br />
"h_summary":"[short_description]",<br />
"h_description":"ServiceNow Change Request Task Reference: [callref]\n\n[description]\n\n\n\n'''Change Justification'''\n\n[u_justification]\n\n\n\n'''Change Disruption'''\n\n[u_disruption]\n\n'''Disruption Duration'''\n\n[u_disruption_duration]\n\n'''Security Implication'''\n\n[u_security_implication]\n\n'''Change Plan'''\n\n[change_plan]\n\n'''Backout Plan'''\n\n[backout_plan]\n\n'''Test Plan'''\n\n[test_plan]\n\n'''Support Plan'''\n\n[u_support_plan]\n\n'''Communication Plan'''\n\n[u_communication_plan]\n\n'''Approval Outcome'''\n\n[approval]\n\n'''Implementation result'''\n\n[u_implementation_result]\n\n'''Implementation results'''\n\n[u_imp_results]\n\n'''Post Implementation Results'''\n\n[u_post_imp_results]",<br />
"h_external_ref_number":"[callref]",<br />
"h_fk_user_id":"[requested_for_username]",<br />
"h_status":"[task_state]",<br />
"h_request_language":"en-GB",<br />
"h_impact":"[impact]",<br />
"h_urgency":"",<br />
"h_customer_type":"0",<br />
"h_container_id":"",<br />
"h_fk_serviceid":"ServiceNow Historic Requests",<br />
"h_resolution":"[close_notes]",<br />
"h_category_id":"[category_2]",<br />
"h_closure_category_id":"[u_closed_code]",<br />
"h_closedby_user_id":"[closed_by]",<br />
"h_closedby_username":"[closed_by_name]",<br />
"h_ownerid":"[owner_username]",<br />
"h_fk_team_id":"[support_group]",<br />
"h_fk_priorityid":"[priority]",<br />
"h_site_id":"[site]",<br />
"h_company_id":"",<br />
"h_company_name":"[company_name]",<br />
"h_withinfix":"[made_sla]",<br />
"h_withinresponse":"[made_sla]",<br />
"h_custom_a":"[request_guid]",<br />
"h_custom_b":"[service_name]",<br />
"h_custom_c":"",<br />
"h_custom_d":"[u_closed_code]",<br />
"h_custom_e":"",<br />
"h_custom_f":"[requested_for_name]",<br />
"h_custom_g":"",<br />
"h_custom_h":"[department]",<br />
"h_custom_i":"[site]",<br />
"h_custom_j":"",<br />
"h_custom_k":"",<br />
"h_custom_l":"",<br />
"h_custom_m":"",<br />
"h_custom_n":"",<br />
"h_custom_o":"",<br />
"h_custom_p":"",<br />
"h_custom_q":""<br />
},<br />
"AdditionalFieldMapping":{<br />
"h_start_time":"",<br />
"h_end_time":"",<br />
"h_change_type":"[change_type]",<br />
"h_custom_a":"[category_2]",<br />
"h_custom_b":"",<br />
"h_custom_c":"",<br />
"h_custom_d":"",<br />
"h_custom_e":"",<br />
"h_custom_f":"",<br />
"h_custom_g":"",<br />
"h_custom_h":"",<br />
"h_custom_i":"",<br />
"h_custom_j":"",<br />
"h_custom_k":"",<br />
"h_custom_l":"",<br />
"h_custom_m":"",<br />
"h_custom_n":"",<br />
"h_custom_o":"",<br />
"h_custom_p":"",<br />
"h_custom_q":"",<br />
"h_scheduled":""<br />
},<br />
"StatusMapping":{<br />
"ServiceNow Status":"Service Manager Status",<br />
"Open":"status.open",<br />
"Pending":"status.open",<br />
"Closed Incomplete":"status.closed",<br />
"Closed Complete":"status.closed"<br />
},<br />
"PriorityMapping": {<br />
"ServiceNow Priority": "Service Manager Priority"<br />
},<br />
"ServiceMapping": {<br />
"ServiceNow Service Name":"Service Manager Service Name"<br />
}<br />
},<br />
"ConfProblem": {<br />
"Import":false,<br />
"CallClass": "Problem",<br />
"DefaultTeam":"Service Desk",<br />
"DefaultPriority":"Low",<br />
"DefaultService":"ServiceNow Historic Requests",<br />
"SQLStatement":{<br />
"0":"SELECT task.sys_id AS request_guid, task.sys_class_name AS callclass, task.number AS callref, ",<br />
"1":"task.made_sla, task.opened_at AS logdate, u_symptoms.u_name AS symptom_name, ",<br />
"2":"task.short_description, task.description, task.u_category, task.category_1, task.contact_type, ",<br />
"3":"task.u_resolved_at, task.closed_at, task.close_code, task.close_notes, ",<br />
"4":"core_company.name AS company_name, cmdb_ci.name AS service_name, wf.name AS workflow, ",<br />
"5":"task.u_first_line_fix, parent_task.number AS parent_task_ref, ",<br />
"6":"(SELECT label FROM sys_choice where name = 'task' AND element = 'state' AND value = task.state) AS task_state, ",<br />
"7":"(SELECT user_name FROM sys_user where sys_id = task.opened_by) AS loggedby, ",<br />
"8":"(SELECT user_name FROM sys_user where sys_id = task.assigned_to) AS owner_username, ",<br />
"9":"(SELECT name FROM sys_user_group where sys_id = task.assignment_group) AS support_group, ",<br />
"10":"(SELECT label FROM sys_choice where name = 'task' AND element = 'priority' AND value = task.priority) AS priority, ",<br />
"11":"(SELECT user_name FROM sys_user WHERE sys_id = task.requested_for) AS requested_for_username, ",<br />
"12":"(SELECT user_name FROM sys_user WHERE sys_id = task.u_resolved_by) AS resolved_by, ",<br />
"13":"(SELECT user_name FROM sys_user where sys_id = task.closed_by) AS closed_by, ",<br />
"14":"(SELECT name FROM sys_user where sys_id = task.closed_by) AS closed_by_name,",<br />
"15":"(SELECT name FROM cmn_location WHERE sys_id = task.location) AS site ",<br />
"16":"FROM servicenow_dbname.task ",<br />
"17":"LEFT JOIN core_company ON task.company = core_company.sys_id ",<br />
"18":"LEFT JOIN cmdb_ci ON task.u_internal_service = cmdb_ci.sys_id",<br />
"19":"LEFT JOIN task parent_task ON task.parent = parent_task.sys_id",<br />
"20":"LEFT JOIN u_symptoms ON task.u_symptom = u_symptoms.sys_id",<br />
"21":"LEFT JOIN wf_context wf ON task.sys_id = wf.id ",<br />
"22":"WHERE task.sys_class_name = 'problem' AND task.known_error != 1"<br />
},<br />
"CoreFieldMapping": {<br />
"h_datelogged":"[logdate]",<br />
"h_dateresolved":"[u_resolved_at]",<br />
"h_dateclosed":"[closed_at]",<br />
"h_summary":"[short_description]",<br />
"h_description":"ServiceNow Problem Task Reference: [callref]\n\n[description]",<br />
"h_external_ref_number":"[callref]",<br />
"h_fk_user_id":"[requested_for_username]",<br />
"h_status":"[task_state]",<br />
"h_request_language":"en-GB",<br />
"h_impact":"",<br />
"h_urgency":"",<br />
"h_customer_type":"0",<br />
"h_container_id":"",<br />
"h_fk_serviceid":"ServiceNow Historic Requests",<br />
"h_resolution":"[close_notes]",<br />
"h_category_id":"[symptom_name]",<br />
"h_closure_category_id":"[close_code]",<br />
"h_closedby_user_id":"[closed_by]",<br />
"h_closedby_username":"[closed_by_name]",<br />
"h_ownerid":"[owner_username]",<br />
"h_fk_team_id":"[support_group]",<br />
"h_fk_priorityid":"[priority]",<br />
"h_site_id":"[site]",<br />
"h_company_id":"",<br />
"h_company_name":"[company_name]",<br />
"h_withinfix":"[made_sla]",<br />
"h_withinresponse":"[made_sla]",<br />
"h_custom_a":"[request_guid]",<br />
"h_custom_b":"[service_name]",<br />
"h_custom_c":"",<br />
"h_custom_d":"",<br />
"h_custom_e":"",<br />
"h_custom_f":"",<br />
"h_custom_g":"",<br />
"h_custom_h":"",<br />
"h_custom_i":"[site]",<br />
"h_custom_j":"",<br />
"h_custom_k":"",<br />
"h_custom_l":"",<br />
"h_custom_m":"",<br />
"h_custom_n":"",<br />
"h_custom_o":"",<br />
"h_custom_p":"",<br />
"h_custom_q":""<br />
},<br />
"AdditionalFieldMapping":{<br />
"h_workaround":"",<br />
"h_custom_a":"",<br />
"h_custom_b":"",<br />
"h_custom_c":"",<br />
"h_custom_d":"",<br />
"h_custom_e":"",<br />
"h_custom_f":"",<br />
"h_custom_g":"",<br />
"h_custom_h":"",<br />
"h_custom_i":"",<br />
"h_custom_j":"",<br />
"h_custom_k":"",<br />
"h_custom_l":"",<br />
"h_custom_m":"",<br />
"h_custom_n":"",<br />
"h_custom_o":"",<br />
"h_custom_p":"",<br />
"h_custom_q":""<br />
},<br />
"StatusMapping":{<br />
"ServiceNow Status":"Service Manager Status",<br />
"Open":"status.open",<br />
"Closed Complete":"status.closed"<br />
},<br />
"PriorityMapping": {<br />
"ServiceNow Priority": "Service Manager Priority"<br />
},<br />
"ServiceMapping": {<br />
"ServiceNow Service Name":"Service Manager Service Name"<br />
}<br />
},<br />
"ConfKnownError": {<br />
"Import":false,<br />
"CallClass": "Known Error",<br />
"DefaultTeam":"Service Desk",<br />
"DefaultPriority":"Low",<br />
"DefaultService":"ServiceNow Historic Requests",<br />
"SQLStatement":{<br />
"0":"SELECT task.sys_id AS request_guid, task.sys_class_name AS callclass, task.number AS callref, ",<br />
"1":"task.made_sla, task.opened_at AS logdate, u_symptoms.u_name AS symptom_name, ",<br />
"2":"task.short_description, task.description, task.u_category, task.category_1, task.contact_type, ",<br />
"3":"task.u_resolved_at, task.closed_at, task.close_code, task.close_notes, ",<br />
"4":"core_company.name AS company_name, cmdb_ci.name AS service_name, wf.name AS workflow, ",<br />
"5":"task.u_first_line_fix, parent_task.number AS parent_task_ref, ",<br />
"6":"(SELECT label FROM sys_choice where name = 'task' AND element = 'state' AND value = task.state) AS task_state, ",<br />
"7":"(SELECT user_name FROM sys_user where sys_id = task.opened_by) AS loggedby, ",<br />
"8":"(SELECT user_name FROM sys_user where sys_id = task.assigned_to) AS owner_username, ",<br />
"9":"(SELECT name FROM sys_user_group where sys_id = task.assignment_group) AS support_group, ",<br />
"10":"(SELECT label FROM sys_choice where name = 'task' AND element = 'priority' AND value = task.priority) AS priority, ",<br />
"11":"(SELECT user_name FROM sys_user WHERE sys_id = task.requested_for) AS requested_for_username, ",<br />
"12":"(SELECT user_name FROM sys_user WHERE sys_id = task.u_resolved_by) AS resolved_by, ",<br />
"13":"(SELECT user_name FROM sys_user where sys_id = task.closed_by) AS closed_by, ",<br />
"14":"(SELECT name FROM sys_user where sys_id = task.closed_by) AS closed_by_name,",<br />
"15":"(SELECT name FROM cmn_location WHERE sys_id = task.location) AS site ",<br />
"16":"FROM servicenow_dbname.task ",<br />
"17":"LEFT JOIN core_company ON task.company = core_company.sys_id ",<br />
"18":"LEFT JOIN cmdb_ci ON task.u_internal_service = cmdb_ci.sys_id",<br />
"19":"LEFT JOIN task parent_task ON task.parent = parent_task.sys_id",<br />
"20":"LEFT JOIN u_symptoms ON task.u_symptom = u_symptoms.sys_id",<br />
"21":"LEFT JOIN wf_context wf ON task.sys_id = wf.id ",<br />
"22":"WHERE task.sys_class_name = 'problem' AND task.known_error = 1"<br />
},<br />
"CoreFieldMapping": {<br />
"h_datelogged":"[logdate]",<br />
"h_dateresolved":"[u_resolved_at]",<br />
"h_dateclosed":"[closed_at]",<br />
"h_summary":"[short_description]",<br />
"h_description":"ServiceNow Known Error Task Reference: [callref]\n\n[description]",<br />
"h_external_ref_number":"[callref]",<br />
"h_fk_user_id":"[requested_for_username]",<br />
"h_status":"[task_state]",<br />
"h_request_language":"en-GB",<br />
"h_impact":"",<br />
"h_urgency":"",<br />
"h_customer_type":"0",<br />
"h_container_id":"",<br />
"h_fk_serviceid":"[service_name]",<br />
"h_resolution":"[close_notes]",<br />
"h_category_id":"[symptom_name]",<br />
"h_closure_category_id":"[close_code]",<br />
"h_ownerid":"[owner_username]",<br />
"h_fk_team_id":"[support_group]",<br />
"h_fk_priorityid":"[priority]",<br />
"h_site_id":"[site]",<br />
"h_company_id":"",<br />
"h_company_name":"[company_name]",<br />
"h_withinfix":"[made_sla]",<br />
"h_withinresponse":"[made_sla]",<br />
"h_custom_a":"[request_guid]",<br />
"h_custom_b":"",<br />
"h_custom_c":"",<br />
"h_custom_d":"",<br />
"h_custom_e":"",<br />
"h_custom_f":"",<br />
"h_custom_g":"",<br />
"h_custom_h":"",<br />
"h_custom_i":"[site]",<br />
"h_custom_j":"",<br />
"h_custom_k":"",<br />
"h_custom_l":"",<br />
"h_custom_m":"",<br />
"h_custom_n":"",<br />
"h_custom_o":"",<br />
"h_custom_p":"",<br />
"h_custom_q":""<br />
},<br />
"AdditionalFieldMapping":{<br />
"h_solution":"",<br />
"h_root_cause":"",<br />
"h_steps_to_resolve":"",<br />
"h_custom_a":"",<br />
"h_custom_b":"",<br />
"h_custom_c":"",<br />
"h_custom_d":"",<br />
"h_custom_e":"",<br />
"h_custom_f":"",<br />
"h_custom_g":"",<br />
"h_custom_h":"",<br />
"h_custom_i":"",<br />
"h_custom_j":"",<br />
"h_custom_k":"",<br />
"h_custom_l":"",<br />
"h_custom_m":"",<br />
"h_custom_n":"",<br />
"h_custom_o":"",<br />
"h_custom_p":"",<br />
"h_custom_q":""<br />
},<br />
"StatusMapping":{<br />
"ServiceNow Status":"Service Manager Status",<br />
"Open":"status.open",<br />
"Closed Complete":"status.closed"<br />
},<br />
"PriorityMapping": {<br />
"ServiceNow Priority": "Service Manager Priority"<br />
},<br />
"ServiceMapping": {<br />
"ServiceNow Service Name":"Service Manager Service Name"<br />
}<br />
},<br />
"ConfActivities": {<br />
"Import":false,<br />
"SQLStatement": {<br />
"0":"SELECT task.sys_class_name AS callclass, task.number AS callref, ",<br />
"1":"task.opened_at AS logdate, task.approval_set, parent_task.number AS parent_task_ref, ",<br />
"2":"sysappr.state AS approval_state, sysappr.u_rejection_reason, sysappr.expected_start, sysappr.due_date, ",<br />
"3":"(SELECT label FROM sys_choice where name = 'task' AND element = 'state' AND value = task.state) AS task_state, ",<br />
"4":"(SELECT user_name FROM sys_user where sys_id = task.opened_by) AS loggedby, ",<br />
"5":"(SELECT name FROM sys_user_group where sys_id = task.assignment_group) AS support_group, ",<br />
"6":"(SELECT label FROM sys_choice where name = 'task' AND element = 'priority' AND value = task.priority) AS priority, ",<br />
"7":"(SELECT user_name FROM sys_user WHERE sys_id = task.requested_for) AS authoriser, ",<br />
"8":"(SELECT user_name FROM sys_user WHERE sys_id = task.closed_by) AS closed_by, ",<br />
"9":"(SELECT user_name FROM sys_user WHERE sys_id = sysappr.approver) AS approver, ",<br />
"10":"(SELECT name FROM wf_activity WHERE sys_id = sysappr.wf_activity) AS wf_activity, ",<br />
"11":"(SELECT label FROM sys_choice where name = 'task' AND element = 'state' AND value = task.state) AS task_state ",<br />
"12":"FROM servicenow_dbname.task ",<br />
"13":"LEFT JOIN task parent_task ON task.parent = parent_task.sys_id ",<br />
"14":"LEFT JOIN sysapproval_approver sysappr ON task.parent = sysappr.sysapproval ",<br />
"15":"WHERE task.sys_class_name = 'sysapproval_group' "<br />
},<br />
"Category":"BPM Authorisation",<br />
"ParentRef":"[parent_task_ref]",<br />
"Title":"Approval Activity",<br />
"Description":"Workflow: [wf_activity]\nPriority: [priority]\nRaised By: [loggedby]\nSupport Group: [support_group]",<br />
"StartDate":"[expected_start]",<br />
"DueDate":"[due_date]",<br />
"AssignTo":"[approver]",<br />
"Status":"[task_state]",<br />
"Decision":"[approval_state]",<br />
"Reason":"[u_rejection_reason]"<br />
},<br />
"TeamMapping": {<br />
"ServiceNow Team Name":"Service Manager Team Name"<br />
},<br />
"CategoryMapping": {<br />
"ServiceNow Category Name":"Service Manager Category ID"<br />
},<br />
"ResolutionCategoryMapping": {<br />
"ServiceNow Category Name":"Service Manager Category ID"<br />
}<br />
}<br />
</pre><br />
<br />
==== HBConfig ====<br />
<br />
Connection information for the Hornbill instance:<br />
<br />
* “UserName” - Instance User Name with which the tool will log the new requests<br />
* “Password” - Instance Password for the above User<br />
* “InstanceId” - ID of your Hornbill instance (case sensitive)<br />
<br />
==== SNAppDBConf ====<br />
<br />
Contains the connection information for the ServiceNow application database.<br />
<br />
* “Driver” the driver to use to connect to the database that holds the ServiceNow application information:<br />
* mysql = MySQL Server v5.0 or above, or MariaDB<br />
* mssql = Microsoft SQL Server (2005 or above)<br />
* “Server” The address of the SQL server<br />
* “UserName” The username for the SQL database<br />
* “Password” Password for above User Name<br />
* “Port” SQL port<br />
* “Encrypt” Boolean value to specify whether the connection between the script and the database should be encrypted. ‘’NOTE’’: There is a bug in SQL Server 2008 and below that causes the connection to fail if the connection is encrypted. Only set this to true if your SQL Server has been patched accordingly.<br />
<br />
==== CustomerType ====<br />
<br />
Integer value 0 or 1, to determine the customer type for the records being imported:<br />
<br />
* 0 - Hornbill Users<br />
* 1 - Hornbill Contacts<br />
<br />
==== ConfCallClass ====<br />
<br />
Contains request-class specific configuration. This section should be repeated for all Service Manager Call Classes.<br />
<br />
* Import - boolean true/false. Specifies whether the current class section should be included in the import.<br />
* CallClass - specifies the Service Manager request class that the current Conf section relates to.<br />
* DefaultTeam - If a request is being imported, and the tool cannot verify its Support Group, then the Support Group from this variable is used to assign the request.<br />
* DefaultPriority - If a request is being imported, and the tool cannot verify its Priority, then the Priority from this variable is used to escalate the request.<br />
* DefaultService - If a request is being imported, and the tool cannot verify its Service from the mapping, then the Service from this variable is used to log the request.<br />
* SQLStatement - The SQL query used to get call (and extended) information from the ServiceNow application data. This is broken up in to numbered elements, for ease of reading and updating.<br />
* CoreFieldMapping - The core fields used by the API calls to raise requests within Service Manager, and how the ServiceNow data should be mapped in to these fields.<br />
* ** Any value wrapped with [] will be populated with the corresponding response from the SQL Query<br />
* ** Any Other Value is treated literally as written example:<br />
** “h_summary”:“[short_description]”, - the value of short_description is taken from the SQL output and populated within the request summary field<br />
** “h_description”:“ServiceNow Incident Task Reference: [callref]\n\n[description]”, - the request description would be populated with “ServiceNow Incident Task Reference:”, followed by the ServiceNow Task reference, 2 new lines then the description text from the ServiceNow task.<br />
pandoc 1.17.2<br />
* Core Fields that can resolve associated record from passed-through value:<br />
** “h_site_id”:“[site]”, - When a string is passed to the site field, the script attempts to resolve the given site name against the Site entity, and populates the request with the correct site information. If the site cannot be resolved, the site details are not populated for the request being imported.<br />
** “h_fk_user_id”:“[requested_for_username]”, - As site, above, but resolves the original request customer against the users or contacts within Hornbill.<br />
** “h_ownerid”:“[owner]”, - As site, above, but resolves the original request owner against the analysts within Hornbill.<br />
** “h_category_id”:“[symptom_name]”, - As site, above, but uses additional CategoryMapping from the configuration, as detailed below.<br />
** “h_closure_category_id”:“[close_code]”, - As site, above, but uses additional ResolutionCategoryMapping from the configuration, as detailed below.<br />
** “h_ownerid”:“[owner_username]”, - As site, above, but resolves the original request owner against the analysts within Hornbill.<br />
** “h_fk_team_id”:“[support_group]”, - As site, above, but uses additional TeamMapping from the configuration, as detailed below.<br />
** “h_fk_priorityid”:“[priority]”, - As site, above, but uses additional PriorityMapping from the configuration, as detailed below.<br />
* AdditionalFieldMapping - Contains additional columns that can be stored against the new request record. Mapping rules are as above.<br />
* StatusMapping - Allows for the mapping of task-class specific Statuses between ServiceNow and Hornbill Service Manager, where the left-side properties list the Statuses from ServiceNow, and the right-side values are the corresponding Statuses from Hornbill that should be used when importing requests.<br />
* PriorityMapping - Allows for the mapping of task-class specific Priorities between ServiceNow and Hornbill Service Manager, where the left-side properties list the Priorities from ServiceNow, and the right-side values are the corresponding Priorities from Hornbill that should be used when escalating the imported requests.<br />
* ServiceMapping - Allows for the mapping of task-class specific Services between ServiceNow and Hornbill Service Manager, where the left-side properties list the Service names from ServiceNow, and the right-side values are the corresponding Services from Hornbill that should be used when raising the new requests.<br />
<br />
<br />
==== ConfActivities ====<br />
<br />
Contains the configuration to allow the import of ServiceNow Approval Tasks as Hornbill Activities.<br />
<br />
* Import - boolean true/false. Specifies whether Activities should be included in the import.<br />
* SQLStatement - The SQL query used to get call (and extended) information from the ServiceNow application data. This is broken up in to numbered elements, for ease of reading and updating.<br />
* Category - the Category of the Activity being raised within Hornbill (either <code>BPM Authorisation</code> or <code>Task</code>).<br />
* ParentRef - The column containing the reference number of the parent task of the approval task being imported.<br />
* Title - The summary title of the new Activities<br />
* Description - The detailed description of the Activities<br />
* StartDate - The Start Date of the Activities<br />
* DueDate - The Due Date of the Activities<br />
* AssignTo - The ID of the analyst that the Activity should be assigned to<br />
* Status - The status of the Activity (Open, Closed Complete or Closed Incomplete)<br />
* Decision - The approval decision<br />
* Reason - The reason as to why the approval decision was made<br />
<br />
==== TeamMapping ====<br />
<br />
Allows for the mapping of Support Groups/Team between ServiceNow and Hornbill Service Manager, where the left-side properties list the Support Group names from ServiceNow, and the right-side values are the corresponding Team names from Hornbill that should be used when assigning the new requests.<br />
<br />
==== CategoryMapping ====<br />
<br />
Allows for the mapping of Problem Profiles/Request Categories between ServiceNow and Hornbill Service Manager, where the left-side properties list the Category label from ServiceNow, and the right-side values are the corresponding Profile Codes from Hornbill that should be used when categorising the new requests.<br />
<br />
==== ResolutionCategoryMapping ====<br />
<br />
Allows for the mapping of Resolution Profiles/Resolution Categories between ServiceNow and Hornbill Service Manager, where the left-side properties list the Resolution Category label from ServiceNow, and the right-side values are the corresponding Resolution Codes from Hornbill that should be used when applying Resolution Categories to the imported requests.<br />
<br />
= Execute =<br />
<br />
Command Line Parameters<br />
<br />
* file - Defaults to <code>conf.json</code> - Name of the Configuration file to load<br />
* dryrun - Defaults to <code>false</code> - Set to true, and the XMLMC for new request creation will not be called and instead the XML will be dumped to the log file, this is to aid in debugging the initial connection information.<br />
* debug - Defaults to <code>false</code> - Set this to true, and the log file will include additional debugging information. NOTE! The log file can increase in size dramatically with this flag set to true!<br />
* zone - Defaults to <code>eur</code> - Allows you to change the ZONE used for creating the XMLMC EndPoint URL https://{ZONE}api.hornbill.com/{INSTANCE}/<br />
* concurrent - defaults to <code>1</code>. This is to specify the number of requests that should be imported concurrently, and can be an integer between 1 and 10 (inclusive). 1 is the slowest level of import, but does not affect performance of your Hornbill instance, and 10 will process the import more quickly but may affect performance of your instance.<br />
* attachments - defaults to <code>true</code>. By default, all attachments associated with the tasks that you import will be imported in to Service Manager and associated with the relevant requests. Set this to <code>false</code> to prevent any file attachments being imported.<br />
<br />
= Testing =<br />
<br />
If you run the application with the argument dryrun=true then no requests will be logged - the XML used to raise requests will instead be saved in to the log file so you can ensure the data mappings are correct before running the import.<br />
<br />
‘goServiceNowRequestImport.exe -dryrun=true’<br />
<br />
= Logging =<br />
<br />
All Logging output is saved in the log directory in the same directory as the executable the file name contains the date and time the import was run ‘SN_Task_Import_2015-11-06T14-26-13Z.log’<br />
<br />
= Error Codes =<br />
<br />
* <code>100</code> - Unable to create log File<br />
* <code>101</code> - Unable to create log folder<br />
* <code>102</code> - Unable to Load Configuration File<br />
<br />
[[Category:Integration]]</div>Victorshttps://wiki.hornbill.com/index.php?title=SQL_Organisation_Import&diff=26206SQL Organisation Import2021-01-21T10:18:04Z<p>Victors: /* Configuration Overview */</p>
<hr />
<div>=About the SQL Organisation Import Utility=<br />
<br />
The utility provides a quick and easy method of uploading and updating organisations from an external data source into Hornbill instance.<br />
<br />
==Open Source==<br />
<br />
The Hornbill SQL Organisation Import Utility is provided open source under the [https://wiki.hornbill.com/index.php/The_Hornbill_Community_License_(HCL) Hornbill Community Licence] and can be found [https://github.com/hornbill/goHornbillOrgImport Here] on GitHub<br />
<br />
==Installation Overview==<br />
<br />
===Windows Installation===<br />
<br />
* Download the [https://github.com/hornbill/goHornbillOrgImport/releases/latest ZIP archive] relevant to your OS and architecture. This contains the tool executable file, configuration file and license;<br />
* Extract the ZIP archive into a folder you would like the application to run from e.g. 'C:\organisation_import\'.<br />
<br />
<br />
==Configuration Overview==<br />
<br />
The configuration of this utility is managed through a JSON file (conf.json), which is supplied with each release:<br />
<br />
<code><br />
"APIKey": "your_api_key_here",<br />
"InstanceId": "your_instance_id_here",<br />
"OrganisationAction": "Create/Update/Both",<br />
"SQLConf": {<br />
"Driver": "",<br />
"Server": "",<br />
"Database": "",<br />
"UserName": "",<br />
"Password": "",<br />
"Port": 0,<br />
"Encrypt": false,<br />
"OrganizationName": "FIELD 1",<br />
"Query": "SELECT <field_list> FROM <table_or_file>"<br />
},<br />
"OrganizationMapping":{<br />
"organization_name":"FIELD 1",<br />
"address":"FIELD 2",<br />
"city":"FIELD 3",<br />
"state":"FIELD 4",<br />
"postal_code":"FIELD 5",<br />
"country":"FIELD 6",<br />
"industry":"FIELD 7",<br />
"phone_number":"FIELD 8",<br />
"website":"FIELD 9",<br />
"language":"FIELD 10",<br />
"custom_1":"FIELD 11",<br />
"custom_2":"FIELD 12",<br />
"custom_3":"FIELD 13",<br />
"custom_4":"FIELD 14",<br />
"custom_5":"FIELD 15",<br />
"custom_6":"FIELD 16",<br />
"custom_7":"FIELD 17",<br />
"custom_8":"FIELD 18",<br />
"custom_9":"FIELD 19",<br />
"custom_10":"FIELD 20",<br />
"custom_11":"FIELD 21"<br />
}<br />
</code><br />
<br />
<br />
*'''APIKey''' - a Hornbill API key for a user account with the correct permissions to carry out all of the required API calls<br />
*'''InstanceId''' - Hornbil instance ID. You can get the instance ID from your URL used to access Hornbill: <nowiki>https://live.hornbill.com/your_instance_id/</nowiki>. This value is case sensitive.<br />
*'''OrganisationAction''' - one of the following values:<br />
**'''Create''' = Import will only create new organisations in your instance. <br />
***If the imported organisation already exists and this is set to "Create" then the organisation will not be created<br />
**'''Update''' = Import will only update existing organisations in your instance.<br />
***If the imported organisation does not exist and this is set to "Update" then the organisation will not be updated<br />
**'''Both''' = Import will create new organisations and update existing organisations in your instance.<br />
***If the imported organisation does not exist and this is set to "Both" then the organisation will be created<br />
***If the imported organisation does exist and this is set to "Both" then the organisation will be updated<br />
<br />
<br />
'''SQLConf'''<br />
<br />
*'''Driver''' - the driver to use to connect to the database that holds the asset information. Needs to be one of the following:<br />
**'''mssql''' = Microsoft SQL Server (2005 or above)<br />
**'''mysql''' = MySQL Server 4.1+, MariaDB<br />
**'''mysql320''' = MySQL Server v3.2.0 to v4.0<br />
**'''csv''' = ODBC Data Source using MS Access Text Driver (*.txt, *.csv)<br />
**'''excel''' = ODBC Data Source using MS Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)<br />
<br />
<br />
When using mssql, mysql or mysql320 drivers, the '''Server''', '''Database''', '''UserName''', '''Password''' and '''Port''' parameters should be populated accordingly:<br />
*'''Server''' = the address of the SQL server (e.g. localhost)<br />
*'''Database''' = the name of the Database to connect to<br />
*'''UserName''' = this should be the SQL authentication Username to connect to the Database (if any, e.g. root)<br />
*'''Password''' = this should be the password for the above username (if any)<br />
*'''Port''' = the SQL port (e.g. 5002)<br />
<br />
<br />
When using csv or excel as a data source, the '''Database''' parameter should be populated accordingly:<br />
*'''Database''' = this should be populated with the name of the ODBC connection (the name of the Data Source - DSN) on the PC that is running the tool<br />
<br />
<br />
In addition, when using any of the available drivers, the '''Encrypt''', '''OrganizationName''' and '''Query''' parameters should also be populated accordingly:<br />
*'''Query''' = this should be the SQL query to retrieve the organisation records (e.g. SELECT * FROM <datbase_table_or_file>)<br />
*'''OrganizationName''' = specify which field from your data source contains the organisation name<br />
*'''Encrypt''' = boolean value to specify whether the connection between the script and the database should be encrypted. <br />
<br />
''NOTE'': There is a bug in SQL Server 2008 and below that causes the connection to fail if the connection is encrypted. Only set this to true if your SQL Server has been patched accordingly.<br />
<br />
<br />
'''OrganizationMapping'''<br />
<br />
*Maps data from your data source into the generic Hornbill organisation record<br />
*Any value wrapped with "" will be populated with the corresponding response from the SQL Query and is treated literally as a written example.<br />
<br />
==Set up ODBC Connector for CSV files==<br />
<br />
To create a 64 bit ODBC connector for CSV files, you need to have '''Microsoft Access Text Driver''' installed. This comes with the Microsoft Access Database Engine which can be found as an [https://www.microsoft.com/en-us/download/details.aspx?id=13255 MS 2010 Redistributable] or as an optional part of the Microsoft Office Suite.<br />
<br />
===Step 1===<br />
<br />
* in Windows menu open '''ODBC Data Sources''' app as Administrator (in Windows 10 you can type in "ODBC" in the search box on the taskbar to quickly find the ODBC Data Sources app)<br />
* in ODBC Data Sources app navigate to '''System DSN''' tab<br />
* click on '''Add''' button to "Create a New Data Source". In the list of drivers locate '''Microsoft Access Text Driver (*.txt, *.csv)'''. If this driver is not present in the list then you don't have Microsoft Access Database Engine installed. Please refer to the notes above to find out how to install it<br />
* click on '''Finish''' button to progress to the next step<br />
<br />
===Step 2===<br />
<br />
* type in a name for your Data Source - this name will be used for the "Database" parameter in the JSON config file<br />
* set up the directory/folder where the CSV files are located:<br />
** when configuring the connector for the first time the '''Use Current Directory''' checkbox is selected by default. Unselect this checkbox to enable '''Select Directory''' button and click it. Navigate to the directory/folder where the CSV files are located. select the folder then click '''Ok''' button.<br />
** when editing an existing CSV connector the '''Use Current Directory''' checkbox should be unselected and '''Select Directory''' enabled. If the folder containing the CSV files is already displayed then there is no need to do anything in this step.<br />
* click on '''Options''' button to expand the current window<br />
* in the "Extensions List" select the '''*.csv''' option <br />
* click on '''Define Format''' button to progress to the next step<br />
<br />
===Step 3===<br />
<br />
* if the directory/folder has been configured correctly in the previous step you should see the CSV file(s) in the '''Tables''' list. Select the file you need to use for the import.<br />
* if you have column headings in your CSV file activate '''Column Name Header''' checkbox<br />
* amend '''Rows to Scan''' option depending on how many records you are importing. By default, this is set to 25, if you are importing more then it needs to be increased. It does not have to be an exact number but it needs to be sufficient to ensure all records from your file are retrieved<br />
* set '''Characters''' option to ANSI<br />
* on the left hand side there is a '''Columns''' list. By default, in the ODBC data source we are configuring the columns in the file are set to FIELD1, FIELD2, etc. You can leave them as they are but you need to ensure the columns in this list matches the columns in the CSV file or you can customise them. This does not affect the CSV file in any form, this is only for the ODBC Data Source configuration.<br />
**Note: when having column headers in the CSV file, using the '''Guess''' button will attempt to read the column headers and customise the columns in the list accordingly. This is not a failproof action (hence the name of the button) therefore you need to ensure the columns are configured correctly if the Guess button is used:<br />
*** '''Data Type''' = should always be '''Char''' unless there is a need to be another type<br />
*** '''Name''' = should be a valid name. Please note that on occasion invalid characters are introduced in the column name (e.g. ). You need to remove these characters and then click on '''Modify''' button to save the changes. Invalid characters in column name can cause the tool to fail to import the records.<br />
* click on '''Ok''' buttons all the way back to '''System DSN''' tab to finish the configuration<br />
<br />
Note: when importing from multiple files, repeat this step for all the files you need to import<br />
<br />
If the configuration is complete then in the directory/folder selected during configuration there should now be a file named '''schema.ini'''. This file stores the configuration performed in the above steps. If this file is missing then the configuration was not completed successfully. This files stores the configuration for any file in the respective directory /folder therefore when defining a format for another file, the configuration is appended into this file rather than creating a separate schema file.<br />
<br />
<br />
== Execute ==<br />
<br />
Command Line Parameters:<br />
<br />
* '''file''' - this should point to your JSON configuration file and by default looks for a file in the current working directory called conf.json. If this is present you don't need to have the parameter.<br />
* '''dryrun''' - if set to True the XMLMC for Create and Update organisations will not be called and instead the XML will be dumped to the log file, so you can ensure the data mappings are correct before running the import. Defaults to `false`.<br />
<br />
'goOrganisationImport_x64.exe -file=conf.json'<br />
<br />
<br />
== Preparing to run the tool ==<br />
<br />
* Open '''conf.json''' and add in the necessary configuration;<br />
* Open Command Line Prompt as Administrator;<br />
* Change directory to the folder with goOrganisationImport_x64 *.* executables 'C:\organisation_import<br />
** On 32 bit Windows PCs: goOrganisationImport_x86.exe <br />
** On 64 bit Windows PCs: goOrganisationImport_x64.exe<br />
* Follow all on-screen prompts, taking careful note of all prompts and messages provided.<br />
<br />
<br />
==Logging Overview==<br />
<br />
All Logging output is saved in the log directory in the same directory as the executable the file name contains the date and time the import was run 'SQL_Organization_Import_YYYYMMDDHHMMSS.log'<br />
<br />
<br />
==Trouble Shooting==<br />
<br />
<br />
===Common Error Messages===<br />
<br />
Below are some common errors that you may encounter in the log file and what they mean:<br />
* '' '''[ERROR] Error Decoding Configuration File:.....''' '' - this will be typically due to a missing quote (") or comma (,) somewhere in the configuration file. This is where an online JSON viewer/validator can come in handy rather than trawling the conf file looking for that proverbial needle in a haystack.<br />
<br />
<br />
=== Error Codes ===<br />
* '''100''' - Unable to create log File<br />
* '''101''' - Unable to create log folder<br />
* '''102''' - Unable to Load Configuration File<br />
<br />
<br />
== HTTP Proxies ==<br />
<br />
If you use a proxy for all of your internet traffic, the HTTP_PROXY Environment variable needs to be set. The https_proxy environment variable holds the hostname or IP address of your proxy server. It is a standard environment variable and like any such variable, the specific steps you use to set it depends on your operating system.<br />
<br />
For windows machines, it can be set from the command line using the following:<br />
<br><br />
<code><br />
set HTTP_PROXY=HOST:PORT<br />
</code><br />
<br><br />
Where "HOST" is the IP address or hostname of your Proxy Server and "PORT" is the specific port number.<br />
<br />
<br />
==Scheduling Overview==<br />
<br />
<br />
===Windows===<br />
You can schedule goHornbillOrgImport.exe to run with any optional command line argument from Windows Task Scheduler.<br />
<br />
* Ensure the user account running the task has rights to goHornbillOrgImport.exe and the containing folder.<br />
* Make sure the Start In parameter contains the folder where goHornbillOrgImport.exe resides in otherwise it will not be able to pick up the correct path.<br />
<br />
<br />
<br />
[[Category:Integration]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Asset_Data_Import_Tool&diff=26205Asset Data Import Tool2021-01-21T10:15:44Z<p>Victors: /* InstanceConfig */</p>
<hr />
<div>=About the Hornbill Database Asset Import Utility=<br />
<br />
The utility provides a simple, safe and secure way to create and update asset records on the Hornbill platform, by reading asset records from your asset discovery tool, or another database containing asset records. The tool is designed to run behind your corporate firewall, connect to your asset database server, query the required information, then transform and load the records into your Hornbill instance. The tool connects to your Hornbill instance in the cloud over HTTPS/SSL, so as long as you have standard internet access then you should be able to use the tool without the need to make any firewall configuration changes. The tool supports both the initial bulk import as well as incremental adds and updates. You can schedule the tool to run periodically to perform the import/update tasks as required.<br />
<br />
==Open Source==<br />
<br />
The Asset Import Utility is provided open source under the [https://wiki.hornbill.com/index.php/The_Hornbill_Community_License_(HCL) Hornbill Community Licence] and can be found [https://github.com/hornbill/goDBAssetImport Here] on GitHub<br />
<br />
==Installation Overview==<br />
<br />
===Windows Installation===<br />
<br />
* Download the [https://github.com/hornbill/goDBAssetImport/releases/latest ZIP archive] relevant to your OS and architecture<br />
* Extract zip into a folder you would like the application to run from e.g. '''C:\Asset_Import\'''<br />
* Open '''conf_sccm_assetscomputer.json''' and add in the necessary configuration<br />
* Open a Command Line Prompt as Administrator<br />
* Change Directory to the folder containing the import files '''C:\Asset_Import\'''<br />
* Run the command:<br />
For Windows Systems: <br />
<code><br />
goDBAssetImport.exe -dryrun=true -file=conf_sccm_assetscomputer.json<br />
</code><br />
<br />
For Mac OSX and Linux Systems: <br />
<code><br />
./goDBAssetImport -dryrun=true -file=conf_sccm_assetscomputer.json<br />
</code><br />
<br />
==Configuration Overview==<br />
<br />
A demonstration configuration file is provided within the package, which includes configuration for importing asset data from Microsoft SCCM 2007 or 2012 (conf_sccm_assetscomputer.json - see the [https://wiki.hornbill.com/index.php/Database_Asset_Import#Configuration_Example Configuration Example] section of this document). If a configuration file is not specified as a command line argument when executing the tool, then a default configuration file named conf.json, containing the correct JSON, must exist. The following configuration file contains the configuration elements required when importing Asset Types that belong to the AssetsComputer entity:<br />
<br />
<code><br />
"APIKey": "",<br />
"InstanceId": "",<br />
"LogSizeBytes":1000000,<br />
"SQLConf": {<br />
"Driver": "",<br />
"Server": "",<br />
"Database": "",<br />
"Authentication": "",<br />
"UserName": "",<br />
"Password": "",<br />
"Port": 0,<br />
"Encrypt": false,<br />
"Query": ""<br />
},<br />
"AssetTypes": [{<br />
"AssetType": "Server",<br />
"OperationType": "Both",<br />
"PreserveShared": false,<br />
"PreserveState": false,<br />
"PreserveSubState": false,<br />
"PreserveOperationalState": false,<br />
"Query": "",<br />
"AssetIdentifier": {<br />
"DBColumn": "SystemSerialNumber",<br />
"Entity": "AssetsComputer",<br />
"EntityColumn": "h_serial_number"<br />
}<br />
},<br />
{<br />
"AssetType": "Laptop",<br />
"OperationType": "Both",<br />
"PreserveShared": false,<br />
"PreserveState": false,<br />
"PreserveSubState": false,<br />
"PreserveOperationalState": false,<br />
"Query": "",<br />
"AssetIdentifier": {<br />
"DBColumn": "MachineName",<br />
"Entity": "Asset",<br />
"EntityColumn": "h_name"<br />
}<br />
},<br />
{<br />
"AssetType": "Desktop",<br />
"OperationType": "Both",<br />
"PreserveShared": false,<br />
"PreserveState": false,<br />
"PreserveSubState": false,<br />
"PreserveOperationalState": false,<br />
"Query": "",<br />
"AssetIdentifier": {<br />
"DBColumn": "MachineName",<br />
"Entity": "Asset",<br />
"EntityColumn": "h_name"<br />
}<br />
},<br />
{<br />
"AssetType": "Virtual Machine",<br />
"OperationType": "Both",<br />
"PreserveShared": false,<br />
"PreserveState": false,<br />
"PreserveSubState": false,<br />
"PreserveOperationalState": false,<br />
"Query": "",<br />
"AssetIdentifier": {<br />
"DBColumn": "MachineName",<br />
"Entity": "Asset",<br />
"EntityColumn": "h_name"<br />
}<br />
}<br />
],<br />
"AssetGenericFieldMapping":{<br />
"h_name":"",<br />
"h_site":"",<br />
"h_asset_tag":"",<br />
"h_acq_method":"",<br />
"h_actual_retired_date":"",<br />
"h_beneficiary":"",<br />
"h_building":"",<br />
"h_cost":"",<br />
"h_cost_center":"",<br />
"h_country":"",<br />
"h_created_date":"",<br />
"h_deprec_method":"",<br />
"h_deprec_start":"",<br />
"h_description":"",<br />
"h_disposal_price":"",<br />
"h_disposal_reason":"",<br />
"h_floor":"",<br />
"h_geo_location":"",<br />
"h_invoice_number":"",<br />
"h_location":"",<br />
"h_location_type":"",<br />
"h_maintenance_cost":"",<br />
"h_maintenance_ref":"",<br />
"h_notes":"",<br />
"h_operational_state":"",<br />
"h_order_date":"",<br />
"h_order_number":"",<br />
"h_owned_by":"",<br />
"h_owned_by_name":"",<br />
"h_product_id":"",<br />
"h_received_date":"",<br />
"h_residual_value":"",<br />
"h_room":"",<br />
"h_scheduled_retire_date":"",<br />
"h_supplier_id":"",<br />
"h_supported_by":"",<br />
"h_used_by":"",<br />
"h_used_by_name":"",<br />
"h_version":"",<br />
"h_warranty_expires":"",<br />
"h_warranty_start":""<br />
},<br />
"AssetTypeFieldMapping":{<br />
"h_name":"",<br />
"h_mac_address":"",<br />
"h_net_ip_address":"",<br />
"h_net_computer_name":"",<br />
"h_net_win_domain":"",<br />
"h_model":"",<br />
"h_manufacturer":"",<br />
"h_cpu_info":"",<br />
"h_description":"",<br />
"h_last_logged_on":"",<br />
"h_last_logged_on_user":"",<br />
"h_memory_info":"",<br />
"h_net_win_dom_role":"",<br />
"h_optical_drive":"",<br />
"h_os_description":"",<br />
"h_os_registered_to":"",<br />
"h_os_serial_number":"",<br />
"h_os_service_pack":"",<br />
"h_os_type":"",<br />
"h_os_version":"",<br />
"h_physical_disk_size":"",<br />
"h_serial_number":"",<br />
"h_cpu_clock_speed":"",<br />
"h_physical_cpus":"",<br />
"h_logical_cpus":"",<br />
"h_bios_name":"",<br />
"h_bios_manufacturer":"",<br />
"h_bios_serial_number":"",<br />
"h_bios_release_date":"",<br />
"h_bios_version":"",<br />
"h_max_memory_capacity":"",<br />
"h_number_memory_slots":"",<br />
"h_net_name":"",<br />
"h_subnet_mask":""<br />
}<br />
</code><br />
<br />
===InstanceConfig===<br />
* "APIKey" - a Hornbill API key for a user account with the correct permissions to carry out all of the required API calls<br />
* "InstanceId" - the name of your Hornbill instance and can be found within the URL you use to navigate to it: live.hornbill.com/[instance name]/. E.g. if the URL you use to access your instance is live.hornbill.com/arescomputing/, then your instance id would be "arescomputing". '''This value is case sensitive'''.<br />
* "LogSizeBytes" - The maximum size that the generated Log Files should be, in bytes. Setting this value to 0 will cause the tool to create one log file only and not split the results between multiple logs.<br />
<br />
===SQLConfig===<br />
* "Driver" the driver to use to connect to the database that holds the asset information:<br />
** mssql = Microsoft SQL Server (2005 or above)<br />
** mysql = MySQL Server<br />
** mysql320 = MySQL Server v3.2.0 to v4.0<br />
** swsql = Supportworks SQL (Core Services v3.x)<br />
** odbc = ODBC Data Source using SQL Server driver. When using ODBC as a data source, the `Database`, `UserName`, `Password` and `Query` parameters should be populated accordingly:<br />
*** Database - this should be populated with the name of the ODBC connection on the PC that is running the tool<br />
*** UserName - this should be the SQL authentication Username to connect to the Database<br />
*** Password - this should be the password for the above username<br />
*** Query - this should be the SQL query to retrieve the asset records<br />
* "Server" The address of the SQL server<br />
* "Authentication The type of authentication to use to connect to the SQL server. Can be either:<br />
** Windows - Windows Account authentication, uses the logged-in Windows account to authenticate, and not the UserName and Password fields (below)<br />
** SQL - uses SQL Server authentication, and requires the Username and Password parameters (below) to be populated<br />
* "UserName" The username for the SQL database - only used when Authentication is set to SQL: for Windows authentication this field can be left as an empty string<br />
* "Password" Password for above User Name - only used when Authentication is set to SQL: for Windows authentication this field can be left as an empty string<br />
* "Port" Integer value containing the port to use when communicating with the SQL server<br />
* "Encrypt" Boolean value to specify whether the connection between the script and the database should be encrypted. ''NOTE'': There is a bug in SQL Server 2008 and below that causes the connection to fail if the connection is encrypted. Only set this to true if your SQL Server has been patched accordingly.<br />
* "Query" The basic SQL query to retrieve asset information from the data source. See AssetTypes below for further filtering<br />
<br />
===AssetTypes===<br />
* An array of objects details the asset types to import:<br />
** AssetType - the Asset Type Name which needs to match a correct Asset Type Name in your Hornbill Instance<br />
** OperationType - The type of operation that should be performed on discovered assets - can be Create, Update or Both. Defaults to Both if no value is provided<br />
** PreserveShared - If set to true, when updating assets that are Shared, then the Used By fields will not be updated. Defaults to false<br />
** PreserveState - If set to true then the State field will not be updated. Defaults to false<br />
** PreserveSubState - If set to true then the SubState fields will not be updated. Defaults to false<br />
** PreserveOperationalState - If set to true then the Operational State field will not be updated. Defaults to false<br />
** Query - additional SQL filter to be appended to the Query from SQLConf, to retrieve assets of that asset type.<br />
** AssetIdentifier - an object containing details to help in the identification of existing asset records in the Hornbill instance. If value in an imported records DBColumn matches the value in the EntityColumn of an asset in Hornbill (within the defined Entity), then the asset record will be updated rather than a new asset being created:<br />
*** DBColumn - specifies the unique identifier column from the database query<br />
*** Entity - the Hornbill entity where data is stored<br />
*** EntityColumn - specifies the unique identifier column from the Hornbill entity<br />
<br />
===AssetGenericFieldMapping===<br />
* Maps data in to the generic Asset record<br />
* Any value wrapped with [] will be populated with the corresponding response from the SQL Query<br />
* Providing a value of <code>__clear__</code> will NULL that column for the record in the database when assets are being updated ONLY. This can either be hard-coded in the config, or sent as a string column within the SQL query resultset (<code>SELECT '__clear__' AS clearColumn</code> in the query and <code>[clearColumn]</code> in the mapping for example)<br />
* Any Other Value is treated as written examples below:<br />
** "h_name":"[MachineName]", - the value of MachineName is taken from the SQL output and populated within this field;<br />
** "h_description":"This is a description", - the value of "h_description" would be populated with "This is a description" for ALL imported assets;<br />
** "h_description":"[MachineName] ([SystemModel])]", - the value of "h_description" would be populated with the value of MachineName from the SQL output, followed by the SystemModel, surrounded by brackets;<br />
** "h_site":"[SiteName]", - When a string is passed to the h_site field, the script attempts to resolve the given site name against the Site entity, and populates this (and h_site_id) with the correct site information. If the site cannot be resolved, the site details are not populated for the Asset record being imported.<br />
** "h_owned_by":"[UserName]" - when a valid Hornbill User ID (for a Full or Basic User) is passed to this field, the user is verified on your Hornbill instance, and the tool will complete the h_owned_by and h_owned_by_name columns appropriately.<br />
** "h_used_by":"[UserName]" - when a valid Hornbill User ID (for a Full or Basic User) is passed to this field, the user is verified on your Hornbill instance, and the tool will complete the h_used_by and h_used_by_name columns appropriately.<br />
** "h_company_name":"[CompanyName]" - when a valid Hornbill Company group name is passed to this field, the company is verified against your Hornbill instance, and the tool will complete the h_company_id and h_company_name columns appropriately.<br />
<br />
===AssetTypeFieldMapping===<br />
* Maps data in to the type-specific Asset record, so the same rules as AssetGenericFieldMapping<br />
* For the computer asset class:<br />
** "h_last_logged_on_user":"[UserName]" - when a valid Hornbill User ID (for a Full or Basic User) is passed to this field, the user is verified on your Hornbill instance, and the tool will complete the h_last_logged_on_user column with an appropriate URN value for the user.<br />
<br />
==Configuration Examples==<br />
===SCCM 2007 & 2012===<br />
<br />
The following is an example of the SQLConf, AssetTypes and data mapping configuration that could be used to import computer-type assets from an SCCM 2007 or 2012 data source. '''NOTE''': The configuration example is provided as-is, and may not be suitable to import your organisations SCCM asset data. We highly recommend that a DBA review the SQL clauses against your SCCM database prior to using this in a production environment.<br />
<br />
In this example:<br />
<br />
* Asset records found against the Servers asset type will be verified using the SystemSerialNumber column from the DB query, and the h_serial_number column within the AssetsComputer entity in your Hornbill instance.<br />
* Asset records found against all other defined asset types will be verified using the MachineName column from the DB query, and the h_namecolumn within the Asset entity in your Hornbill instance.<br />
<br />
<code><br />
"SQLConf": {<br />
"Driver": "mssql",<br />
"Server": "",<br />
"Database": "",<br />
"Authentication": "Windows",<br />
"UserName": "",<br />
"Password": "",<br />
"Port": 1433,<br />
"Encrypt": false,<br />
"Query": "SELECT OARSys.ResourceID AS [AssetID], OARSys.User_Name0 AS [UserName], OARSys.Netbios_Name0 AS [MachineName], OARSys.Resource_Domain_OR_Workgr0 AS [NETDomain], dbo.v_GS_OPERATING_SYSTEM.Caption0 AS [OperatingSystemCaption], OARSys.Operating_System_Name_and0 AS [OperatingSystem], dbo.v_GS_OPERATING_SYSTEM.Version0 AS [OperatingSystemVersion], dbo.v_GS_OPERATING_SYSTEM.CSDVersion0 AS [ServicePackVersion], dbo.v_GS_COMPUTER_SYSTEM.Manufacturer0 AS [SystemManufacturer], dbo.v_GS_COMPUTER_SYSTEM.Model0 AS [SystemModel], dbo.v_GS_PC_BIOS.SerialNumber0 AS [SystemSerialNumber], OAProc.MaxClockSpeed0 AS [ProcessorSpeedGHz], OAProc.Name0 AS [ProcessorName], dbo.v_GS_COMPUTER_SYSTEM.NumberOfProcessors0 AS [NumberofProcessors], dbo.v_GS_X86_PC_MEMORY.TotalPhysicalMemory0 AS [MemoryKB], dbo.v_GS_LOGICAL_DISK.Size0 AS [DiskSpaceMB], dbo.v_GS_LOGICAL_DISK.FreeSpace0 AS [FreeDiskSpaceMB], OAIP.IP_Addresses0 AS [IPAddress], OAMac.MAC_Addresses0 AS [MACAddress], dbo.v_GS_PC_BIOS.Description0 AS [BIOSDescription], dbo.v_GS_PC_BIOS.ReleaseDate0 AS [BIOSReleaseDate], dbo.v_GS_PC_BIOS.SMBIOSBIOSVersion0 AS [SMBIOSVersion], dbo.v_GS_SYSTEM.SystemRole0 AS [SystemType], OASysEncl.ChassisTypes0 AS [ChassisTypes], OASysEncl.TimeStamp AS [ChassisDate], OARSys.AD_Site_Name0 AS [SiteName] FROM dbo.v_R_System OUTER APPLY (SELECT TOP 1 * FROM dbo.v_R_System b WHERE b.Netbios_Name0 = dbo.v_R_System.Netbios_Name0 ORDER BY SMS_UUID_Change_Date0 DESC) OARSys OUTER APPLY (SELECT TOP 1 dbo.v_GS_SYSTEM_ENCLOSURE.* FROM dbo.v_GS_SYSTEM_ENCLOSURE WHERE dbo.v_GS_SYSTEM_ENCLOSURE.ResourceID = dbo.v_R_System.ResourceID ORDER BY TimeStamp DESC) OASysEncl OUTER APPLY (SELECT TOP 1 IP_Addresses0, ROW_NUMBER() OVER (order by (SELECT 0)) AS rowNum FROM dbo.v_RA_System_IPAddresses WHERE dbo.v_RA_System_IPAddresses.ResourceID = dbo.v_R_System.ResourceID ORDER BY rowNum DESC) OAIP OUTER APPLY (SELECT TOP 1 MAC_Addresses0 FROM dbo.v_RA_System_MACAddresses WHERE dbo.v_RA_System_MACAddresses.ResourceID = dbo.v_R_System.ResourceID ) OAMac OUTER APPLY (SELECT TOP 1 MaxClockSpeed0, Name0 FROM dbo.v_GS_PROCESSOR WHERE dbo.v_GS_PROCESSOR.ResourceID = dbo.v_R_System.ResourceID ORDER BY TimeStamp DESC) OAProc LEFT JOIN dbo.v_GS_X86_PC_MEMORY ON dbo.v_GS_X86_PC_MEMORY.ResourceID = dbo.v_R_System.ResourceID LEFT JOIN dbo.v_GS_OPERATING_SYSTEM ON dbo.v_GS_OPERATING_SYSTEM.ResourceID = dbo.v_R_System.ResourceID LEFT JOIN dbo.v_GS_COMPUTER_SYSTEM ON dbo.v_GS_COMPUTER_SYSTEM.ResourceID = dbo.v_R_System.ResourceID LEFT JOIN dbo.v_GS_PC_BIOS ON dbo.v_GS_PC_BIOS.ResourceID = dbo.v_R_System.ResourceID LEFT JOIN dbo.v_GS_LOGICAL_DISK ON dbo.v_GS_LOGICAL_DISK.ResourceID = dbo.v_R_System.ResourceID LEFT JOIN dbo.v_FullCollectionMembership ON (dbo.v_FullCollectionMembership.ResourceID = v_R_System.ResourceID) LEFT JOIN dbo.v_GS_SYSTEM ON dbo.v_GS_SYSTEM.ResourceID = dbo.v_R_System.ResourceID WHERE dbo.v_GS_LOGICAL_DISK.DeviceID0 = 'C:' AND dbo.v_FullCollectionMembership.CollectionID = 'SMS00001' "<br />
},<br />
"AssetTypes": [{<br />
"AssetType": "Server",<br />
"PreserveShared": false,<br />
"Query": "AND OASysEncl.ChassisTypes0 IN (2, 17, 18, 19, 20, 21, 22, 23)",<br />
"AssetIdentifier": {<br />
"DBColumn": "SystemSerialNumber",<br />
"Entity": "AssetsComputer",<br />
"EntityColumn": "h_serial_number"<br />
}<br />
},<br />
{<br />
"AssetType": "Laptop",<br />
"PreserveShared": false,<br />
"Query": "AND OASysEncl.ChassisTypes0 IN (8, 9, 10, 14)",<br />
"AssetIdentifier": {<br />
"DBColumn": "MachineName",<br />
"Entity": "Asset",<br />
"EntityColumn": "h_name"<br />
}<br />
},<br />
{<br />
"AssetType": "Desktop",<br />
"PreserveShared": false,<br />
"Query": "AND OASysEncl.ChassisTypes0 IN (3, 4, 5, 6, 7, 12, 13, 15, 16)",<br />
"AssetIdentifier": {<br />
"DBColumn": "MachineName",<br />
"Entity": "Asset",<br />
"EntityColumn": "h_name"<br />
}<br />
},<br />
{<br />
"AssetType": "Virtual Machine",<br />
"PreserveShared": false,<br />
"Query": "AND OASysEncl.ChassisTypes0 = 1",<br />
"AssetIdentifier": {<br />
"DBColumn": "MachineName",<br />
"Entity": "Asset",<br />
"EntityColumn": "h_name"<br />
}<br />
}],<br />
"AssetGenericFieldMapping":{<br />
"h_name":"[MachineName]",<br />
"h_site":"[SiteName]",<br />
"h_asset_tag":"[MachineName]",<br />
"h_acq_method":"",<br />
"h_actual_retired_date":"",<br />
"h_beneficiary":"",<br />
"h_building":"",<br />
"h_cost":"",<br />
"h_cost_center":"",<br />
"h_country":"",<br />
"h_created_date":"",<br />
"h_deprec_method":"",<br />
"h_deprec_start":"",<br />
"h_description":"[MachineName] ([SystemModel])",<br />
"h_disposal_price":"",<br />
"h_disposal_reason":"",<br />
"h_floor":"",<br />
"h_geo_location":"",<br />
"h_invoice_number":"",<br />
"h_location":"",<br />
"h_location_type":"",<br />
"h_maintenance_cost":"",<br />
"h_maintenance_ref":"",<br />
"h_notes":"",<br />
"h_operational_state":"",<br />
"h_order_date":"",<br />
"h_order_number":"",<br />
"h_owned_by":"",<br />
"h_owned_by_name":"",<br />
"h_product_id":"",<br />
"h_received_date":"",<br />
"h_residual_value":"",<br />
"h_room":"",<br />
"h_scheduled_retire_date":"",<br />
"h_supplier_id":"",<br />
"h_supported_by":"",<br />
"h_used_by":"",<br />
"h_used_by_name":"",<br />
"h_version":"",<br />
"h_warranty_expires":"",<br />
"h_warranty_start":""<br />
},<br />
"AssetTypeFieldMapping":{<br />
"h_name":"[MachineName]",<br />
"h_mac_address":"[MACAddress]",<br />
"h_net_ip_address":"[IPAddress]",<br />
"h_net_computer_name":"[MachineName]",<br />
"h_net_win_domain":"[NETDomain]",<br />
"h_model":"[SystemModel]",<br />
"h_manufacturer":"[SystemManufacturer]",<br />
"h_cpu_info":"[ProcessorName]",<br />
"h_description":"[SystemModel]",<br />
"h_last_logged_on":"",<br />
"h_last_logged_on_user":"",<br />
"h_memory_info":"[MemoryKB]",<br />
"h_net_win_dom_role":"",<br />
"h_optical_drive":"",<br />
"h_os_description":"[OperatingSystem]",<br />
"h_os_registered_to":"",<br />
"h_os_serial_number":"",<br />
"h_os_service_pack":"[ServicePackVersion]",<br />
"h_os_type":"",<br />
"h_os_version":"[OperatingSystemVersion]",<br />
"h_physical_disk_size":"[DiskSpaceMB]",<br />
"h_serial_number":"[SystemSerialNumber]",<br />
"h_cpu_clock_speed":"[ProcessorSpeedGHz]",<br />
"h_physical_cpus":"[NumberofProcessors]",<br />
"h_logical_cpus":"",<br />
"h_bios_name":"[BIOSDescription]",<br />
"h_bios_manufacturer":"",<br />
"h_bios_serial_number":"",<br />
"h_bios_release_date":"[BIOSReleaseDate]",<br />
"h_bios_version":"[SMBIOSVersion]",<br />
"h_max_memory_capacity":"",<br />
"h_number_memory_slots":"",<br />
"h_net_name":"",<br />
"h_subnet_mask":""<br />
}<br />
</code><br />
<br />
===Lansweeper 7.1===<br />
<br />
The following is an example of the SQLConf, AssetTypes and data mapping configuration that could be used to import computer-type assets from a Lansweeper 7.1 data source. '''NOTE''': The configuration example is provided as-is, and may not be suitable to import your organisations LanSweeper asset data. We highly recommend that a DBA review the SQL clauses against your LanSweeper database prior to using this in a production environment.<br />
<br />
In this example:<br />
<br />
* Asset records found against all defined asset types will be verified using the ''AssetName'' column from the DB query, and the ''h_name'' column within the Asset entity in your Hornbill instance.<br />
<br />
<code><br />
"SQLConf": {<br />
"Driver": "mssql",<br />
"Server": "",<br />
"Database": "lansweeperdb",<br />
"Authentication": "SQL",<br />
"UserName": "",<br />
"Password": "",<br />
"Port": 1433,<br />
"Encrypt": false,<br />
"Query": "SELECT at.AssetType AS AssetTypeID, at.AssetTypename AS AssetTypeName, a.AssetID, a.AssetUnique, a.Domain, a.Username AS ADUserID, a.FQDN, a.IPAddress, a.SiteID, CASE WHEN at.AssetTypename = 'Windows' THEN os.Caption WHEN at.AssetTypename = 'Apple Mac' THEN mos.SystemVersion END AS OperatingSystem, a.SP, convert(varchar, a.Firstseen, 20) as FirstSeen, a.Description, a.AssetName, a.Mac, a.Uptime, a.Memory, a.NrProcessors, a.Processor, convert(varchar, a.LastChanged, 20) as LastChanged, os.Caption, os.ProductType, convert(varchar, ac.PurchaseDate, 20) as PurchaseDate, convert(varchar, ac.Warrantydate, 20) as Warrantydate, ac.Manufacturer, ac.Model, ac.Serialnumber, u.Displayname AS ADUserName FROM dbo.tblAssets AS a LEFT JOIN dbo.tsysAssetTypes at ON a.Assettype = at.AssetType LEFT JOIN dbo.tblOperatingsystem os ON a.AssetID = os.AssetID LEFT JOIN dbo.tblMacOSInfo mos ON a.AssetID = mos.AssetID LEFT JOIN dbo.tblAssetCustom ac ON a.AssetID = ac.AssetID LEFT JOIN lansweeperdb.dbo.tblADusers u ON a.Username = u.Username"<br />
},<br />
"AssetTypes": [{<br />
"AssetType": "Laptop",<br />
"PreserveShared": false,<br />
"Query": "WHERE at.AssetTypename = 'Windows' AND os.ProductType = 1 AND ac.Model = 'Latitude E6320'",<br />
"AssetIdentifier": {<br />
"DBColumn": "AssetName",<br />
"Entity": "Asset",<br />
"EntityColumn": "h_name"<br />
}<br />
},<br />
{<br />
"AssetType": "Desktop",<br />
"PreserveShared": false,<br />
"Query": "WHERE (at.AssetTypename = 'Windows' AND os.ProductType = 1 AND ac.Model = 'Precision WorkStation T5500') OR at.AssetTypename = 'Apple Mac'",<br />
"AssetIdentifier": {<br />
"DBColumn": "AssetName",<br />
"Entity": "Asset",<br />
"EntityColumn": "h_name"<br />
}<br />
},<br />
{<br />
"AssetType": "Server",<br />
"PreserveShared": false,<br />
"Query": "WHERE os.ProductType IN (2, 3)",<br />
"AssetIdentifier": {<br />
"DBColumn": "AssetName",<br />
"Entity": "Asset",<br />
"EntityColumn": "h_name"<br />
}<br />
}<br />
],<br />
"AssetGenericFieldMapping": {<br />
"h_name": "[AssetName]",<br />
"h_site": "=",<br />
"h_asset_tag": "[AssetName]",<br />
"h_acq_method": "",<br />
"h_actual_retired_date": "",<br />
"h_beneficiary": "",<br />
"h_building": "",<br />
"h_company_name": "",<br />
"h_cost": "",<br />
"h_cost_center": "",<br />
"h_country": "",<br />
"h_created_date": "[Firstseen]",<br />
"h_deprec_method": "",<br />
"h_deprec_start": "",<br />
"h_description": "[Description]",<br />
"h_disposal_price": "",<br />
"h_disposal_reason": "",<br />
"h_floor": "",<br />
"h_geo_location": "",<br />
"h_invoice_number": "",<br />
"h_location": "",<br />
"h_location_type": "",<br />
"h_maintenance_cost": "",<br />
"h_maintenance_ref": "",<br />
"h_notes": "",<br />
"h_operational_state": "",<br />
"h_order_date": "",<br />
"h_order_number": "",<br />
"h_owned_by": "[ADUserID]",<br />
"h_owned_by_name": "[ADUserName]",<br />
"h_product_id": "",<br />
"h_received_date": "",<br />
"h_residual_value": "",<br />
"h_room": "",<br />
"h_scheduled_retire_date": "",<br />
"h_supplier_id": "",<br />
"h_supported_by": "",<br />
"h_used_by": "[ADUserID]",<br />
"h_used_by_name": "[ADUserName]",<br />
"h_version": "",<br />
"h_warranty_expires": "[Warrantydate]",<br />
"h_warranty_start": "[PurchaseDate]"<br />
},<br />
"AssetTypeFieldMapping": {<br />
"h_name": "[AssetName]",<br />
"h_mac_address": "[Mac]",<br />
"h_net_ip_address": "[IPAddress]",<br />
"h_net_computer_name": "[FQDN]",<br />
"h_net_win_domain": "[Domain]",<br />
"h_model": "[Model]",<br />
"h_manufacturer": "[Manufacturer]",<br />
"h_cpu_info": "[Processor]",<br />
"h_description": "[Description]",<br />
"h_last_logged_on": "",<br />
"h_last_logged_on_user": "",<br />
"h_memory_info": "[Memory]",<br />
"h_net_win_dom_role": "",<br />
"h_optical_drive": "",<br />
"h_os_description": "[OperatingSystem]",<br />
"h_os_registered_to": "",<br />
"h_os_serial_number": "",<br />
"h_os_service_pack": "[ServicePackVersion]",<br />
"h_os_type": "",<br />
"h_os_version": "[OSCode]",<br />
"h_physical_disk_size": "",<br />
"h_serial_number": "[Serialnumber]",<br />
"h_cpu_clock_speed": "",<br />
"h_physical_cpus": "[NrProcessors]",<br />
"h_logical_cpus": "",<br />
"h_bios_name": "",<br />
"h_bios_manufacturer": "",<br />
"h_bios_serial_number": "",<br />
"h_bios_release_date": "",<br />
"h_bios_version": "",<br />
"h_max_memory_capacity": "",<br />
"h_number_memory_slots": "",<br />
"h_net_name": "[FQDN]",<br />
"h_subnet_mask": ""<br />
}<br />
</code><br />
<br />
==Command Line Parameters==<br />
<br />
* file - Defaults to `conf.json` - Name of the Configuration file to load<br />
* dryrun - Defaults to `false` - Set to True and the XMLMC for the creation and update of assets will not be called, and instead the generated XML for each asset will be dumped to the log file. This is to aid in debugging the initial connection information.<br />
* concurrent - defaults to 1, with a maximum of 10. Allows you to change the number of concurrent threads used to process the import. This can improve performance on slow imports, but using too many threads can have an effect on the performance of your Hornbill instance.<br />
* debug - defaults to `false` = Set to true to enable debug mode, which will output debugging information to the log<br />
<br />
==Testing Overview==<br />
There is no substitute for hands-on experience when becoming familiar with the Hornbill import utilities. <br />
<br><br />
The Database Asset import utility accepts and understands a number of "Command Line Parameters" that can be used when running the utility from the command line. The most important one for testing is the '''-dryrun=true''' command. When this is specified, no information will be written to Hornbill and it allows you to confirm that the conf file is correctly structured and that a connection to your database can be established. A dryrun will also output a log file which provides you with an opportunity to review and understand any error messages that may occur.<br />
<br><br />
Below are some high level steps to help you build confidence in your configuration:<br />
<br><br />
<br><br />
# In the conf.json file, specify a query to target a single asset record. (Its good practice to initially test on a single, or small set of, asset records as this allows the dryruns to complete quicker and there is less log content to sift through).<br />
# Perform a dryrun (by executing the utility along with the -dryrun=true command line parameter).<br />
# Review cmd output and log file for errors<br />
# Check against "Common Error Messages" listed on the wiki and take action to rectify where necessary.<br />
# Continue with dryrun tests until you are happy that all the errors are accounted for.<br />
# Perform a live import with this single asset record still specified.<br />
# Review the asset record in Hornbill and check all asset attributes are populated as expected i.e. Asset Name contains the name of the asset etc.<br />
# Adjust conf file asset attribute mappings as necessary<br />
# Loop through steps 6 - 8 as many times as is necessary until you are happy with the information being transported into the attributes of the Hornbill Asset record.<br />
# Amend the query to target the asset records required for a full import.<br />
# Perform a dryrun<br />
# Review cmd output and log file for errors<br />
# Check against "Common Error Messages" listed on the wiki and take action to rectify where necessary.<br />
# Continue with dryrun tests until you are happy that all the errors are accounted for.<br />
<br><br />
Example use of the dryrun command line parameter specified after the utility executable:<br />
<code><br />
goDBAssetImport_x64.exe -dryrun=true –file=conf_sccm_assetscomputer.json<br />
</code><br />
<br />
===Command Line Output===<br />
After each run of the utility, the command line will output a summary of the records that were processed. <br />
<br />
'''''Updated: xx''''' - The number of assets that were updated successfully.<br><br />
'''''Updated Skipped: xx''''' - The number of assets that were recognised as needing updating, but the update was not applied for some reason.<br><br />
'''''Created: xx''''' - The number of new asset records that were created in Hornbill.<br><br />
'''''Created Skipped: xx''''' - The number of assets that were recognised as needing to be created, but the creation of the record failed.<br><br />
<br />
This output can also be found in the log files which should be examined to understand why records failed to be created or updated. In the case of a failed update, even if this is only due to a problem with one of the attributes, then the other attributes will also not be updated i.e. the entire asset record remains unchanged.<br />
<br />
==Logging Overview==<br />
<br />
All logging output is saved in the log directory, in the same directory as the executable. The file name contains the date and time the import was run '''''Asset_Import_2015-11-06T14-26-13Z.log'''''<br />
<br />
==Trouble Shooting==<br />
<br />
===Common Error Messages===<br />
<br />
Below are some common errors that you may encounter in the log file and what they mean:<br />
* '' '''[ERROR] Error Decoding Configuration File:.....''' '' - this will be typically due to a missing quote (") or comma (,) somewhere in the configuration file. This is where an online JSON viewer/validator can come in handy rather than trawling the conf file looking for that proverbial needle in a haystack.<br />
*'' '''[ERROR] https:// ........invalid request :path "//xmlmc//apps/com.hornbill.servicemanager/?method=[''methodName'']"''' '' - If you identify errors stating an "invalid request path" for one or more API calls, this is typically due to a missing or incorrect instance name specified in the conf.json file. Check the instance id is correct. It also may be prudent to check you have added a valid API key too.<br />
*'' '''[ERROR] API Call failed when retrieving Asset Class:Post https: //eurapi.hornbill.com/[instanceName]/xmlmc//data/?method=entityBrowseRecords: dial tcp 78.129.xxx.xxx:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.'' ''' - With this error it is always prudent to check the instance name and an API key exist in the conf file, check that the instance name is spelt correctly and uses lower case characters, and the API key is valid. However, this is typically encountered if you use a proxy for all of your internet traffic and you haven't set the "HTTP_PROXY environment" variable as described in the "HTTP Proxies" section on this page.<br />
*'' '''[ERROR] Database Query Error: driver: bad connection.''' '' - This can be associated with an incorrect driver, username, and/or password specified in the ''SQLConf'' section of the conf file. Check and confirm the required driver, username, and password of the database that you're trying to access.<br />
*'' '''[ERROR] Unable to write to log Post /system/?method=logMessage: unsupported protocol scheme.''' '' - this suggests that the import was unable to access the csv file. There could be two reasons for this:<br />
# Someone had moved the csv from its default location<br />
# The csv file was open at the time and this locked the import<br />
<br />
=== Error Codes ===<br />
* '''100''' - Unable to create log File<br />
* '''101''' - Unable to create log folder<br />
* '''102''' - Unable to Load Configuration File<br />
<br />
== HTTP Proxies ==<br />
<br />
If you use a proxy for all of your internet traffic, the HTTP_PROXY Environment variable needs to be set. The https_proxy environment variable holds the hostname or IP address of your proxy server. It is a standard environment variable and like any such variable, the specific steps you use to set it depends on your operating system.<br />
<br />
For windows machines, it can be set from the command line using the following:<br />
<br><br />
<code><br />
set HTTP_PROXY=HOST:PORT<br />
</code><br />
<br><br />
Where "HOST" is the IP address or host name of your Proxy Server and "PORT" is the specific port number.<br />
<br />
==Scheduling Overview==<br />
<br />
===Windows===<br />
You can schedule goDBAssetImport_x64.exe to run with any optional command line argument from Windows Task Scheduler.<br />
<br />
* Ensure the user account running the task has rights to goDBAssetImport_x64.exe and the containing folder.<br />
* Make sure the Start In parameter contains the folder where goDBAssetImport_x64.exe resides in otherwise it will not be able to pick up the correct path.<br />
<br />
<br />
[[Category:Integration]]</div>Victorshttps://wiki.hornbill.com/index.php?title=CSV_Asset_Import&diff=26204CSV Asset Import2021-01-21T10:14:50Z<p>Victors: /* InstanceConfig */</p>
<hr />
<div>=About the Hornbill CSV Asset Import Utility=<br />
<br />
The utility provides a simple, safe and secure way to create and update asset records on the Hornbill platform, by reading asset records from CSV files. The tool is designed to run behind your corporate firewall, read your asset data from CSV files accessible to the user account running this tool, then transform and load the records into your Hornbill instance. The tool connects to your Hornbill instance in the cloud over HTTPS/SSL, so as long as you have standard internet access then you should be able to use the tool without the need to make any firewall configuration changes. The tool supports both the initial bulk import as well as incremental adds and updates. You can schedule the tool to run periodically to perform the import/update tasks as required.<br />
<br />
==Open Source==<br />
<br />
The Asset Import Utility is provided open source under the [https://wiki.hornbill.com/index.php/The_Hornbill_Community_License_(HCL) Hornbill Community Licence] and can be found [https://github.com/hornbill/goCSVAssetImport Here] on GitHub<br />
<br />
==Installation Overview==<br />
<br />
===Windows Installation===<br />
<br />
* Download the [https://github.com/hornbill/goCSVAssetImport/releases/latest latest package] from GitHub<br />
* Extract zip into a folder you would like the application to run from e.g. `C:\asset_import\`<br />
* Populate a CSV file with asset data, and store in a folder or network location accessible to the user account running this tool<br />
* Open the configuration file of your choice ('''conf_computerSystem.json''') and add in the necessary configration<br />
* Open Command Line Prompt as Administrator<br />
* Change Directory to the folder with goCSVAssetImport_*.exe `C:\asset_import\`<br />
* Run the command:<br />
For Windows 32bit Systems: <br />
<code><br />
goCSVAssetImport_x86.exe -dryrun=true -file=conf_computerSystem.json<br />
</code><br />
<br />
For Windows 64bit Systems: <br />
<code><br />
goCSVAssetImport_x64.exe -dryrun=true -file=conf_computerSystem.json<br />
</code><br />
<br />
==Configuration Overview==<br />
<br />
Bundled with the release of this tool on Github is a configuration file named conf_computerSystem_demomapping.json. This should help in setting up your first import from CSV, and demonstrates how the CSV to Hornbill mappings work.<br />
<br />
The following configuration file overview contains the configuration elements required when importing Asset Types that belong to the AssetsComputer entity:<br />
<br />
<code><br />
"APIKey": "your_api_key_here",<br />
"InstanceId": "your_instance_name",<br />
"AssetIdentifier":"h_name",<br />
"CSVAssetIdentifier":"assetTag",<br />
"CSVCommaCharacter": ",",<br />
"CSVLazyQuotes": false,<br />
"CSVFieldsPerRecord": 0,<br />
"CSVCarriageReturnRemoval": false,<br />
"LogSizeBytes":1000000,<br />
"AssetTypes": {<br />
"Desktop": "\\\\path\\to\\csv\\assetcomputer_desktops.csv"<br />
},<br />
"AssetGenericFieldMapping":{<br />
"h_name":"[assetTag]",<br />
"h_site":"[site]",<br />
"h_asset_tag":"[assetTag]",<br />
"h_acq_method":"",<br />
"h_actual_retired_date":"",<br />
"h_beneficiary":"",<br />
"h_building":"[building]",<br />
"h_company_name:"[companyName]",<br />
"h_cost":"",<br />
"h_cost_center":"",<br />
"h_country":"",<br />
"h_created_date":"",<br />
"h_deprec_method":"",<br />
"h_deprec_start":"",<br />
"h_description":"[description]",<br />
"h_disposal_price":"",<br />
"h_disposal_reason":"",<br />
"h_floor":"[floor]",<br />
"h_geo_location":"",<br />
"h_invoice_number":"",<br />
"h_location":"",<br />
"h_location_type":"",<br />
"h_maintenance_cost":"",<br />
"h_maintenance_ref":"",<br />
"h_notes":"[notes]",<br />
"h_operational_state":"",<br />
"h_order_date":"",<br />
"h_order_number":"",<br />
"h_owned_by":"[ownedById]",<br />
"h_product_id":"",<br />
"h_received_date":"",<br />
"h_residual_value":"",<br />
"h_room":"",<br />
"h_scheduled_retire_date":"",<br />
"h_supplier_id":"",<br />
"h_supported_by":"",<br />
"h_used_by":"[usedById]",<br />
"h_version":"",<br />
"h_warranty_expires":"",<br />
"h_warranty_start":""<br />
},<br />
"AssetTypeFieldMapping":{<br />
"h_name":"[assetTag]",<br />
"h_mac_address":"[macAddress]",<br />
"h_net_ip_address":"[netIpAddress]",<br />
"h_net_computer_name":"[netComputerName]",<br />
"h_net_win_domain":"[netWinDomRole]",<br />
"h_model":"[model]",<br />
"h_manufacturer":"[manufacturer]",<br />
"h_cpu_info":"[ProcessorName]",<br />
"h_description":"[assetTag] ([model])",<br />
"h_last_logged_on":"",<br />
"h_last_logged_on_user":"[lastLoggedOnUser]",<br />
"h_memory_info":"[memoryInfo]",<br />
"h_net_win_dom_role":"",<br />
"h_optical_drive":"",<br />
"h_os_description":"[osDescription]",<br />
"h_os_registered_to":"",<br />
"h_os_serial_number":"",<br />
"h_os_service_pack":"[osServicePack]",<br />
"h_os_type":"[osType]",<br />
"h_os_version":"[osVersion]",<br />
"h_physical_disk_size":"[physicalDiskSize]",<br />
"h_serial_number":"[serialNumber]",<br />
"h_cpu_clock_speed":"[cpuClockSpeed]",<br />
"h_physical_cpus":"[physicalCpus]",<br />
"h_logical_cpus":"[logicalCpus]",<br />
"h_bios_name":"[biosName]",<br />
"h_bios_manufacturer":"[biosManufacturer]",<br />
"h_bios_serial_number":"",<br />
"h_bios_release_date":"",<br />
"h_bios_version":"",<br />
"h_max_memory_capacity":"",<br />
"h_number_memory_slots":"",<br />
"h_net_name":"",<br />
"h_subnet_mask":""<br />
}<br />
</code><br />
<br />
===InstanceConfig===<br />
* "APIKey" - a Hornbill API key for a user account with the correct permissions to carry out all of the required API calls<br />
* "InstanceId" - the name of your Hornbill instance and can be found within the URL you use to navigate to it: live.hornbill.com/[instance name]/. E.g. if the URL you use to access your instance is live.hornbill.com/arescomputing/, then your instance id would be "arescomputing". '''This value is case sensitive'''. <br />
* "AssetIdentifier" - The Hornbill asset attribute that holds the unique asset identifier (so that the code can work out which asset records are to be inserted or updated)<br />
* "CSVAssetIdentifier" - The CSV column name that holds the unique asset identifier (so that the code can work out which asset records are to be inserted or updated)<br />
* "CSVCommaCharacter" - The field separator (single) character - if left out, the default character will be a comma.<br />
* "CSVLazyQuotes" - The ability to give the CSV reader a hint that the csv file might be using lazy quotes. Defaults to false.<br />
* "CSVFieldsPerRecord" - The ability to give the CSV reader a hint about the number of fields in each record. Defaults to 0, leaving the CSV reader to do the heavy lifting.<br />
* "CSVCarriageReturnRemoval" - Certain CSV exporting systems will add extra carriage returns as a record delimiter. This is expected not to be common, hence the setting is left out of the configuration files (it is added to conf_computerSystem.json only for completeness sake). IF not set, then the default value is false and no carriages returns will be stripped from the data. IF set to true, then all carriage returns (possibly even intended ones) will be stripped.<br />
* "LogSizeBytes" - The maximum size that the generated Log Files should be, in bytes. Setting this value to 0 will cause the tool to create one log file only and not split the results between multiple logs.<br />
<br />
===AssetTypes===<br />
* This is a list of Hornbill-specific asset types, and the CSV file that holds asset records of this type.<br />
* The left element contains the Asset Type Name, and the right contains the path and filename of the CSV file that holds the asset row data. Note: the Asset Type Name needs to match a correct Asset Type Name in your Hornbill Instance.<br />
<br />
===AssetGenericFieldMapping===<br />
* Maps data into the generic Asset record<br />
* Any value wrapped with [] will be populated with the corresponding column value from the CSV row<br />
* Any Other Value is treated literally as the written example:<br />
** "h_name":"[assetTag]", - the value of the assetTag column is taken from the CSV output and populated within this field<br />
** "h_description":"This is a description", - the value of "h_description" would be populated with "This is a description" for ALL imported assets<br />
** "h_site":"[site]", - When a string is passed to the h_site field, the script attempts to resolve the given site name against the Site entity, and populates this (and h_site_id) with the correct site information. If the site cannot be resolved, the site details are not populated for the Asset record being imported.<br />
** "h_owned_by":"[ownedById]" - when a valid Hornbill User ID (for a Full or Basic User) is passed to this field, the user is verified on your Hornbill instance, and the tool will complete the h_owned_by and h_owned_by_name columns appropriately.<br />
** "h_used_by":"[usedById]" - when a valid Hornbill User ID (for a Full or Basic User) is passed to this field, the user is verified on your Hornbill instance, and the tool will complete the h_used_by and h_used_by_name columns appropriately.<br />
** "h_company_name":"[CompanyName]" - when a valid Hornbill Company group name is passed to this field, the company is verified on your Hornbill instance, and the tool will complete the h_company_id and h_company_name columns appropriately.<br />
<br />
===AssetTypeFieldMapping===<br />
* Maps data in to the type-specific Asset record, so the same rules as AssetGenericFieldMapping<br />
<br />
==Command Line Parameters==<br />
<br />
* file - Defaults to `conf.json` - Name of the Configuration file to load<br />
* dryrun - Defaults to `false` - Set to True and the XMLMC for the creation and update of assets will not be called, and instead the generated XML for each asset will be dumped to the log file. This is to aid in debugging the initial connection information.<br />
* concurrent - defaults to 1, with a maximum of 10. Allows you to change the number of concurrent threads used to process the import. This can improve performance on slow imports, but using too many threads can have an effect on the performance of your Hornbill instance.<br />
<br />
==Testing Overview==<br />
<br />
If you run the application with the argument -dryrun=true then no assets will be created or updated - the XML used to create or update will be saved in the log file so you can ensure the CSV to Hornbill Asset Entity mappings are correct before running the import.<br />
<code><br />
goCSVAssetImport_x64.exe -dryrun=true -file=conf_computerSystem.json<br />
</code><br />
<br />
==Logging Overview==<br />
<br />
All logging output is saved in the log directory, in the same directory as the executable. The file name contains the date and time the import was run '''''Asset_Import_2015-11-06T14-26-13Z.log'''''<br />
<br />
==Trouble Shooting==<br />
<br />
===Common Error Messages===<br />
<br />
Below are some common errors that you may encounter in the log file and what they mean:<br />
* '' '''[ERROR] Error Decoding Configuration File:.....''' '' - this will be typically due to a missing quote (") or comma (,) somewhere in the configuration file. This is where an online JSON viewer/validator can come in handy rather than trawling the conf file looking for that proverbial needle in a haystack.<br />
<br />
=== Error Codes ===<br />
* '''100''' - Unable to create log File<br />
* '''101''' - Unable to create log folder<br />
* '''102''' - Unable to Load Configuration File<br />
<br />
== HTTP Proxies ==<br />
<br />
If you use a proxy for all of your internet traffic, the HTTP_PROXY Environment variable needs to be set. The https_proxy environment variable holds the hostname or IP address of your proxy server. It is a standard environment variable and like any such variable, the specific steps you use to set it depends on your operating system.<br />
<br />
For windows machines, it can be set from the command line using the following:<br />
<br><br />
<code><br />
set HTTP_PROXY=HOST:PORT<br />
</code><br />
<br><br />
Where "HOST" is the IP address or host name of your Proxy Server and "PORT" is the specific port number.<br />
<br />
==Scheduling Overview==<br />
<br />
===Windows===<br />
You can schedule the executable to run with any optional command line argument from Windows Task Scheduler.<br />
<br />
* Ensure the user account running the task has rights to goCSVAssetImport_x64.exe and the containing folder.<br />
* Make sure the Start In parameter contains the folder where goCSVAssetImport_x64.exe resides in otherwise it will not be able to pick up the correct path.<br />
<br />
<br />
[[Category:Integration]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Document_Import_Tool&diff=26203Document Import Tool2021-01-21T10:14:11Z<p>Victors: /* Command Line Parameters */</p>
<hr />
<div>=About the Hornbill Document Manager Document Import Tool=<br />
<br />
The utility provides a simple, safe and secure way to bulk-import documents into Hornbill Document Manager. The tool is designed to facilitate the initial upload of content to Hornbill Document Manager cater for the initial upload and therefore does not perform updates to existing Document Manager documents.<br />
<br />
The tool is designed to run behind your corporate firewall and connects to your Hornbill instance in the cloud over HTTPS/SSL. So as long as you have standard internet access then you should be able to use the tool without the need to make any firewall configuration changes.<br />
<br />
==Open Source==<br />
<br />
The Hornbill Document Import Tool is provided open source under the [https://wiki.hornbill.com/index.php/The_Hornbill_Community_License_(HCL) Hornbill Community Licence] and can be found [https://github.com/hornbill/goHornbillDocumentImport on GitHub]<br />
<br />
==Installation Overview==<br />
<br />
* Download the OS and architecture-specific [https://github.com/hornbill/goHornbillDocumentImport/releases/latest ZIP archive]<br />
* Extract zip into a folder you would like the application to run from e.g. '''C:\docimport\'''<br />
* Open the CSV files and add in the necessary configuration<br />
* Open a Command Line Prompt as Administrator<br />
* Change Directory to the folder containing the utility '''C:\docimport\'''<br />
* Run the command relevant to the OS of the machine you are running this on:<br />
<br />
Windows:<br /><br />
<code><br />
goHornbillDocumentImport.exe -instanceid=yourinstanceid -apikey=yourapikey -csvd=docs_main.csv -csvc=docs_collections.csv -csvs=docs_shares.csv -csvt=docs_tags.csv -dryrun=true <br />
</code><br />
<br />
==Command Line Parameters==<br />
<br />
* <code>apikey</code>: API Key to use as Authentication when connecting to Hornbill Instance<br />
* <code>apitimeout</code>: Number of Seconds to Timeout an API Connection (default 60)<br />
* <code>csvc</code>: Name of the CSV file containing document collection data<br />
* <code>csvd</code>: Name of the CSV file containing main document data<br />
* <code>csvs</code>: Name of the CSV file containing document sharing data<br />
* <code>csvt</code>: Name of the CSV file containing document tag data<br />
* <code>debug</code>: true/false, defaults to false - Log extended debug information<br />
* <code>dryrun</code>: true/false, defaults to false - Allow the Import to run without Creating Documents<br />
* <code>instanceid:</code>: This is the name of your Hornbill instance and can be found within the URL you use to navigate to it: live.hornbill.com/[instance name]/. E.g. if the URL you use to access your instance is live.hornbill.com/arescomputing/, then your instance id would be "arescomputing". This value is case sensitive.<br />
* <code>version</code>: Output the tools version number, and exit<br />
<br />
==CSV Files Overview==<br />
<br />
This tool uses one or more CSV files to import documents into Document Manager. These CSV files contain metadata required to perform the imports. Demonstration CSV files are provided within the package.<br />
<br />
===csvd===<br />
<br />
The CSV file name provided for this command line argument (-csvd) is the main template and is used to create the documents in Hornbill. It contains the main details of the files being imported. An example csv template is provided in the download package and must always contain the 6 columns listed below. If you don't wish to use the columns, just leave the rows blank but make sure the column name always exists in the csv file, in the order listed:<br />
<br />
* <code>Filepath</code>: MANDATORY - The full filepath of the file being imported into a document <br />
* <code>Title</code>: Optional - The title of the new document. If an empty string is provided, then the name of the source file (minus the extension) will be used as the document title<br />
* <code>Status</code>: MANDATORY - The status of the new document. Can be active, draft or retired<br />
* <code>Description</code>: Optional - The description of the new document<br />
* <code>ReviewDate</code>: Optional - The next review date for the new document (must be in the format "'''YYYY-mm-dd HH:mm:ss'''")<br />
* <code>VersioningEnabled</code>: MANDATORY - true/false, should versioning be enabled for the new document<br />
<br />
===csvc===<br />
<br />
The CSV file name provided by the csvc argument contains the Collections that the files being imported should be added to. The CSV should contain 2 columns, and a header row. The columns should be, and in this order:<br />
<br />
* <code>Filepath</code>: MANDATORY - The full filepath of the file being imported into a document - this should match Filepath values from the csvd file <br />
* <code>Collection</code>: MANDATORY - The Primary Key ID of the Collection that the new document should be added to<br />
<br />
===csvs===<br />
<br />
The CSV file name provided by the csvs argument contains the share data that the files being imported should create. The CSV should contain 5 columns, and a header row. The columns should be, and in this order:<br />
<br />
* <code>Filepath</code>: MANDATORY - The full filepath of the file being imported into a document - this should match Filepath values from the csvd file <br />
* <code>URN</code>: MANDATORY - The URN of the Library or User to create the share against<br />
* <code>Read</code>: MANDATORY - true/false, should the share allow Read permissions<br />
* <code>ModifyContent</code>: MANDATORY - true/false, should the share allow Modify Content permissions<br />
* <code>ModifyMetaData</code>: MANDATORY - true/false, should the share allow Modify Meta Data permissions<br />
<br />
===csvt===<br />
<br />
The CSV file name provided by the csvt argument contains the Tags that should be associated to the files being imported. The CSV should contain 2 columns, and a header row. The columns should be, and in this order:<br />
<br />
* <code>Filepath</code>: MANDATORY - The full filepath of the file being imported into a document - this should match Filepath values from the csvd file <br />
* <code>Tag</code>: MANDATORY - The Tag that the new document should be added to<br />
<br />
== HTTP Proxies ==<br />
<br />
If you use a proxy for all of your internet traffic, the HTTP_PROXY Environment variable needs to be set. The https_proxy environment variable holds the hostname or IP address of your proxy server. It is a standard environment variable and like any such variable, the specific steps you use to set it depends on your operating system.<br />
<br />
For windows machines, it can be set from the command line using the following:<br />
<br><br />
<code><br />
set HTTP_PROXY=HOST:PORT<br />
</code><br />
<br><br />
Where "HOST" is the IP address or host name of your Proxy Server and "PORT" is the specific port number.<br />
<br />
==Testing Overview==<br />
<br />
If you run the application with the argument -dryrun=true then no documents will be imported - the XML used to make the API calls will be saved in the log file so you can ensure the values are correct before running the import.<br />
<br />
<code><br />
goHornbillDocumentImport.exe -dryrun=true<br />
</code><br />
<br />
==Logging Overview==<br />
<br />
All logging output is saved in the log directory, in the same directory as the executable. The file name contains the date and time the import was run '''''docimport_201511061426130000.log'''''<br />
<br />
==Change Log==<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:600px"><br />
Click "Read More" to view the Change Log.<br />
<div class="mw-collapsible-content" style="width:1050px"><br />
<br />
====v1.0.0 - 11/04/2019====<br />
<br />
Initial Release<br />
</div><br />
</div><br />
<br />
[[Category:Integration]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Document_Import_Tool&diff=26202Document Import Tool2021-01-21T10:13:45Z<p>Victors: /* Command Line Parameters */</p>
<hr />
<div>=About the Hornbill Document Manager Document Import Tool=<br />
<br />
The utility provides a simple, safe and secure way to bulk-import documents into Hornbill Document Manager. The tool is designed to facilitate the initial upload of content to Hornbill Document Manager cater for the initial upload and therefore does not perform updates to existing Document Manager documents.<br />
<br />
The tool is designed to run behind your corporate firewall and connects to your Hornbill instance in the cloud over HTTPS/SSL. So as long as you have standard internet access then you should be able to use the tool without the need to make any firewall configuration changes.<br />
<br />
==Open Source==<br />
<br />
The Hornbill Document Import Tool is provided open source under the [https://wiki.hornbill.com/index.php/The_Hornbill_Community_License_(HCL) Hornbill Community Licence] and can be found [https://github.com/hornbill/goHornbillDocumentImport on GitHub]<br />
<br />
==Installation Overview==<br />
<br />
* Download the OS and architecture-specific [https://github.com/hornbill/goHornbillDocumentImport/releases/latest ZIP archive]<br />
* Extract zip into a folder you would like the application to run from e.g. '''C:\docimport\'''<br />
* Open the CSV files and add in the necessary configuration<br />
* Open a Command Line Prompt as Administrator<br />
* Change Directory to the folder containing the utility '''C:\docimport\'''<br />
* Run the command relevant to the OS of the machine you are running this on:<br />
<br />
Windows:<br /><br />
<code><br />
goHornbillDocumentImport.exe -instanceid=yourinstanceid -apikey=yourapikey -csvd=docs_main.csv -csvc=docs_collections.csv -csvs=docs_shares.csv -csvt=docs_tags.csv -dryrun=true <br />
</code><br />
<br />
==Command Line Parameters==<br />
<br />
* <code>apikey</code>: API Key to use as Authentication when connecting to Hornbill Instance<br />
* <code>apitimeout</code>: Number of Seconds to Timeout an API Connection (default 60)<br />
* <code>csvc</code>: Name of the CSV file containing document collection data<br />
* <code>csvd</code>: Name of the CSV file containing main document data<br />
* <code>csvs</code>: Name of the CSV file containing document sharing data<br />
* <code>csvt</code>: Name of the CSV file containing document tag data<br />
* <code>debug</code>: true/false, defaults to false - Log extended debug information<br />
* <code>dryrun</code>: true/false, defaults to false - Allow the Import to run without Creating Documents<br />
* <code>instanceid:</code>: This is the name of your Hornbill instance and can be found within the URL you use to navigate to it: live.hornbill.com/[instance name]/. E.g. if the URL you use to access your instance is live.hornbill.com/arescomputing/, then your instance id would be "arescomputing". Remember, this value is case sensitive.<br />
* <code>version</code>: Output the tools version number, and exit<br />
<br />
==CSV Files Overview==<br />
<br />
This tool uses one or more CSV files to import documents into Document Manager. These CSV files contain metadata required to perform the imports. Demonstration CSV files are provided within the package.<br />
<br />
===csvd===<br />
<br />
The CSV file name provided for this command line argument (-csvd) is the main template and is used to create the documents in Hornbill. It contains the main details of the files being imported. An example csv template is provided in the download package and must always contain the 6 columns listed below. If you don't wish to use the columns, just leave the rows blank but make sure the column name always exists in the csv file, in the order listed:<br />
<br />
* <code>Filepath</code>: MANDATORY - The full filepath of the file being imported into a document <br />
* <code>Title</code>: Optional - The title of the new document. If an empty string is provided, then the name of the source file (minus the extension) will be used as the document title<br />
* <code>Status</code>: MANDATORY - The status of the new document. Can be active, draft or retired<br />
* <code>Description</code>: Optional - The description of the new document<br />
* <code>ReviewDate</code>: Optional - The next review date for the new document (must be in the format "'''YYYY-mm-dd HH:mm:ss'''")<br />
* <code>VersioningEnabled</code>: MANDATORY - true/false, should versioning be enabled for the new document<br />
<br />
===csvc===<br />
<br />
The CSV file name provided by the csvc argument contains the Collections that the files being imported should be added to. The CSV should contain 2 columns, and a header row. The columns should be, and in this order:<br />
<br />
* <code>Filepath</code>: MANDATORY - The full filepath of the file being imported into a document - this should match Filepath values from the csvd file <br />
* <code>Collection</code>: MANDATORY - The Primary Key ID of the Collection that the new document should be added to<br />
<br />
===csvs===<br />
<br />
The CSV file name provided by the csvs argument contains the share data that the files being imported should create. The CSV should contain 5 columns, and a header row. The columns should be, and in this order:<br />
<br />
* <code>Filepath</code>: MANDATORY - The full filepath of the file being imported into a document - this should match Filepath values from the csvd file <br />
* <code>URN</code>: MANDATORY - The URN of the Library or User to create the share against<br />
* <code>Read</code>: MANDATORY - true/false, should the share allow Read permissions<br />
* <code>ModifyContent</code>: MANDATORY - true/false, should the share allow Modify Content permissions<br />
* <code>ModifyMetaData</code>: MANDATORY - true/false, should the share allow Modify Meta Data permissions<br />
<br />
===csvt===<br />
<br />
The CSV file name provided by the csvt argument contains the Tags that should be associated to the files being imported. The CSV should contain 2 columns, and a header row. The columns should be, and in this order:<br />
<br />
* <code>Filepath</code>: MANDATORY - The full filepath of the file being imported into a document - this should match Filepath values from the csvd file <br />
* <code>Tag</code>: MANDATORY - The Tag that the new document should be added to<br />
<br />
== HTTP Proxies ==<br />
<br />
If you use a proxy for all of your internet traffic, the HTTP_PROXY Environment variable needs to be set. The https_proxy environment variable holds the hostname or IP address of your proxy server. It is a standard environment variable and like any such variable, the specific steps you use to set it depends on your operating system.<br />
<br />
For windows machines, it can be set from the command line using the following:<br />
<br><br />
<code><br />
set HTTP_PROXY=HOST:PORT<br />
</code><br />
<br><br />
Where "HOST" is the IP address or host name of your Proxy Server and "PORT" is the specific port number.<br />
<br />
==Testing Overview==<br />
<br />
If you run the application with the argument -dryrun=true then no documents will be imported - the XML used to make the API calls will be saved in the log file so you can ensure the values are correct before running the import.<br />
<br />
<code><br />
goHornbillDocumentImport.exe -dryrun=true<br />
</code><br />
<br />
==Logging Overview==<br />
<br />
All logging output is saved in the log directory, in the same directory as the executable. The file name contains the date and time the import was run '''''docimport_201511061426130000.log'''''<br />
<br />
==Change Log==<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:600px"><br />
Click "Read More" to view the Change Log.<br />
<div class="mw-collapsible-content" style="width:1050px"><br />
<br />
====v1.0.0 - 11/04/2019====<br />
<br />
Initial Release<br />
</div><br />
</div><br />
<br />
[[Category:Integration]]</div>Victorshttps://wiki.hornbill.com/index.php?title=SQL_Contact_Import&diff=26201SQL Contact Import2021-01-21T10:13:05Z<p>Victors: /* Completing the conf.json file */</p>
<hr />
<div>== About the Hornbill SQL Contact Import Utility ==<br />
The utility provides a simple, safe and secure way to create contacts on the Hornbill platform by synchronizing with data held in your Database. The tool is designed to run behind your corporate firewall, connect to your database, query the required contact information, transform and load into the Hornbill instance. The tool connects to the Hornbill instance in the cloud over HTTPS/SSL so as long as you have standard internet access then you should be able to use tool without the need to make any firewall configuration changes. The tool supports both the initial bulk import as well as incremental adds and updates. You can schedule the tool to run periodically to perform the import/update tasks as required.<br />
<br />
== Open Source ==<br />
<br />
The SQL Contact Import Utility is provided open source under the [https://wiki.hornbill.com/index.php/The_Hornbill_Community_License_(HCL) Hornbill Community Licence] and can be found [https://github.com/hornbill/goDb2HcontactImport here] on GitHub<br />
<br />
== Installation Overview ==<br />
<br />
=== Windows Installation ===<br />
* Download the OS and architecture specific [https://github.com/hornbill/goDb2HcontactImport/releases/latest latest package] from GitHub <br />
* Extract zip into a folder you would like the application to run from e.g. '''C:\Hornbill_Import\'''<br />
* Open '''conf.json''' and add in the necessary configuration<br />
* Open Command Line Prompt as Administrator<br />
* Change Directory to the folder with goHornbillContactImport.exe '''C:\Hornbill_Import\'''<br />
* Run the command goHornbillContactImport.exe -dryrun=true<br />
<br />
== Configuration Overview ==<br />
The following section will detail how to prepare the conf.json file to successfully import your Contact records.<br />
<br />
===Prerequisites===<br />
Before importing any contact records into your Hornbill instance, the Organisation records must be created first. This then allows the contact import utility to associate each contact record to an Organisation record based on what is specified in the "Company" field. Details on how to create a Hornbill Organisation record can be found here: [[Organizations|'''external organization records''']]<br />
<br />
Prior to configuring the .json file, it is advisable to read the following wiki page regarding [[Contacts|'''Hornbill Contact records''']] as it will provide some context to what this import will create.<br />
<br />
To create a 64-bit ODBC connector you would need the Microsoft Access Database Engine which can be found as a 2010 Redistributable (https://www.microsoft.com/en-us/download/details.aspx?id=13255) or as an optional part of the Microsoft Office Suite<br />
<br><br />
<br><br />
<br />
===Completing the conf.json file===<br />
A default configuration file is provided conf.json, if a configuration file is not specified as a command-line argument then conf.json must exist.<br />
<br />
{<br />
"APIKey": "", /* this is the API-key which is associated to a user in the Hornbill instance [1] */<br />
"InstanceId": "", /* your Hornbill instance name : not likely to change. Please note this value is case sensitive. */<br />
"ContactAction": "Create", /* options : Create/Update/Both ; on what action to assign roles to a user */<br />
"AttachCustomerPortal": true, /* options : true/false ; whether contact is allowed to enter the customer portal */<br />
"CustomerPortalOrgView": true, /* options : true/false ; whether contact is allowed to view orgaisation calls in the customer portal */<br />
"CustomerPortalOrgViewRevoke": false, /* options : true/false ; whether the contact visibility to organisation calls in the customer portal is to be revoked */<br />
"UpdateContactStatus": false,<br />
"SQLConf": {<br />
"Driver": "csv",<br />
"Server": "localhost",<br />
"Database": "CSV64",<br />
"UserName": "root",<br />
"Password": "",<br />
"Port": 5002,<br />
"ContactID": "FIELD1", /* FieldID is the Hornbill field against which the record */<br />
"FieldID": "h_logon_id", /* (identified by the data contained in the ContactID field) is searched */<br />
"Encrypt": false,<br />
"Query": "SELECT * FROM adbc.csv"<br />
},<br />
"ContactMapping":{<br />
"logon_id":"&#123;&#123;.FIELD1&#125;&#125;",<br />
"firstname":"&#123;&#123;.FIELD2&#125;&#125;",<br />
"lastname":"&#123;&#123;.FIELD3&#125;&#125;",<br />
"company":"&#123;&#123;.FIELD1&#125;&#125;",<br />
"email_1":"&#123;&#123;.FIELD2&#125;&#125;",<br />
"email_2":"",<br />
"tel_1":"&#123;&#123;.FIELD4&#125;&#125;",<br />
"tel_2":"",<br />
"jobtitle":"",<br />
"description":"",<br />
"notes":"",<br />
"country":"",<br />
"language":"",<br />
"private":"0",<br />
"rights":"0",<br />
"contact_status":"0"<br />
}<br />
}<br />
# An API key is set up against a user within Hornbill (https://wiki.hornbill.com/index.php/API_keys). For example, if admin user is doing the import, enter the API Key for the admin user.<br />
<br />
===Configuring the ODBC Connector for CSV===<br />
<br />
[[File:ODBC CSV Settings 20170406.png]]<br />
<br />
== Command Line Parameters ==<br />
<br />
* file - Defaults to '''''conf.json''''' - Name of the Configuration file to load<br />
* dryrun - Defaults to '''''false''''' - Set to True and the XMLMC for Create and Update users will not be called and instead the XML will be dumped to the log file, this is to aid in debugging the initial connection information.<br />
* concurrent - Defaults to `1` - Allows you to change the number of worker threads used to process the import, this can improve performance on slow import but using too many workers have a detriment to performance of your Hornbill instance.<br />
* logprefix - add prefix to the log file<br />
* version - outputs the tool version<br />
* matchlike - defaults to '''''false''''' - Set to True if you want to mimick the post v1.0.3 behaviour which searches with LIKE instead of an exact match (eg "abc" would find "abc1" as the record to update between v1.0.3 and v1.4.0)<br />
* nocol - defaults to '''''false''''' - Set to True for all CLI outputs to be in the default colours of the terminal/command line session running the tool<br />
<br />
== Testing Overview ==<br />
If you run the application with the argument dryrun=true then no users will be created or updated, the XML used to create or update will be saved in the log file so you can ensure the LDAP mappings are correct before running the import.<br />
<br />
<code><br />
goHornbillContactImport.exe -dryrun=true<br />
</code><br />
<br />
To actually do the import, use this:<br />
<br />
<code><br />
goHornbillContactImport.exe<br />
</code><br />
<br />
== Example ==<br />
<br />
The following is an example of a successful import.<br />
The CSV file can contain the contacts you wish to import<br />
* Ensure the order is as shown in the example otherwise the data may populate incorrect fields<br />
eg:<br />
<br />
[[File:exampleCSV.JPG]]<br />
<br />
Populate the API key with the Hornbill user's API Key, enter the instance id and username and password. <br />
* This is an example of what the Schema.ini file would look like<br />
eg:<br />
<br />
[[File:exampleSchema.JPG]]<br />
<br />
* The example JSON file below shows the fields that match the CSV file<br />
<br />
eg:<br />
<br />
[[File:JSON.JPG]]<br />
<br />
* This is an example of the actual run using the command prompt AS ADMIN user<br />
eg:<br />
<br />
[[File:exampleImport.JPG]]<br />
<br />
== Logging Overview ==<br />
<br />
All Logging output is saved in the "log" directory which can be found in the same location as the executable. The file name contains the date and time the import was run '''''SQL_Contact_Import_2015-11-06T14-26-13Z.log'''''<br />
<br />
==Trouble Shooting==<br />
<br />
===Common Error Messages===<br />
<br />
Below are some common errors that you may encounter in the log file and what they mean:<br />
* ''' ''[ERROR] Error Decoding Configuration File:.....'' ''' - this will be typically due to a missing quote (") or comma (,) somewhere in the configuration file. This is where an online JSON viewer/validator can come in handy rather than trawling the conf file looking for that proverbial needle in a haystack.<br />
* ''' ''[ERROR] Get https://api.github.com/repos/hornbill/goDb2HcontactImport/tags: dial tcp xx.xx.xx.xx:xxx: ........'' ''' - this most likely indicates that you have a HTTP proxy server on your network between the host running the executable and your Hornbill API endpoint. Ensure the http_proxy environment variable is set (See the section on "HTTP Proxies" for more information) and that the proxy is configured to allow this communication.<br />
* ''' ''[ERROR] Unable to Create User: Invalid value for parameter '[parameter name]': The text size provided (31 characters) is greater than the maximum allowable size of 20 characters for column [column name]'' ''' - the contents of your directory attribute exceed the maximum number of characters that can be placed in the Hornbill database column.<br />
* ''' ''panic: runtime error: invalid memory address or nil pointer deference [recovered]...'' ''' - this error is suggesting an incorrectly specified attribute in the conf file. Where information is being obtained from a directory attribute, the attribute must be in the following format: ''<nowiki>{{.directoryAttributeName}}</nowiki>''<br />
* ''' ''[ERROR] Unable to Create User: The value in element <userId> did not meet the required input pattern constraints. at location '/methodCall/params/userId' '' ''' - the user id contains characters that are not allowed. The User Id should be made up of alphanumeric characters. Full stops (.) and underscores (_) are also supported.<br />
* ''' ''[ERROR] Unable to Update User: Invalid value for parameter '[parameter name]': Error setting value for column '[column name]'. bad lexical cast: source type value could not be interpreted as target'' ''' - this error is indicating that the contents of your directory attribute are in a format that is not compatible with the type of the Hornbill database column. For example, you will get this when trying to place text into a database field that is of type "INT" (accepts integer values only).<br />
* ''' ''[ERROR] Unable to Load LDAP Attribute: '[LDAP attribute name]' For Input Param: '[Hornbill Parameter name]' '' ''' - When the import utility is unable to load a particular LDAP attribute, this means that the attribute field in your directory does not contain a value. This error will not prevent the user account from being created or updated in Hornbill and can be considered more as a warning rather than an outright failure or problem.<br />
<br />
=== Error Codes ===<br />
* '''100''' - Unable to create log File<br />
* '''101''' - Unable to create log folder<br />
* '''102''' - Unable to Load Configuration File<br />
<br />
== HTTP Proxies ==<br />
<br />
If you use a proxy for all of your internet traffic, the HTTP_PROXY Environment variable needs to be set. The https_proxy environment variable holds the hostname or IP address of your proxy server. It is a standard environment variable and like any such variable, the specific steps you use to set it depends on your operating system.<br />
<br />
For Windows machines, it can be set from the command line using the following:<br />
<br><br />
<code><br />
set HTTP_PROXY=HOST:PORT<br />
</code><br />
<br><br />
Where "HOST" is the IP address or hostname of your Proxy Server and "PORT" is the specific port number.<br />
<br />
== Scheduling Overview ==<br />
<br />
=== Windows ===<br />
You can schedule .exe to run with any optional command-line argument from Windows Task Scheduler.<br />
* Ensure the user account running the task has rights to ldap_import.exe and the containing folder.<br />
* Make sure the Start In parameter contains the folder where the executable resides in, otherwise it will not be able to pick up the correct path. eg:<br />
<br />
[[File:Ldap_import_schedule.png]]<br />
<br />
[[Category:Integration]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Azure_User_Import&diff=26200Azure User Import2021-01-21T10:12:19Z<p>Victors: /* Configuration Overview */</p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
{| style="width:100%"<br />
|[[Main_Page|Home]] > [[Integration]] > [[Hornbill Open Integration Tools]] > Azure User Import<br />
|style="text-align:right;"|<br />
|}<br />
</div><br />
== About the Hornbill Azure User Import Utility ==<br />
The utility provides a simple, safe and secure way to create user accounts on the Hornbill platform by synchronizing with accounts held in your Azure AD. The tool is designed to run behind your corporate firewall, connect to your Azure instance, query the required account information, transform and load into the Hornbill instance. The tool connects to the Hornbill and Azure instances in the cloud over HTTPS/SSL so as long as you have standard internet access then you should be able to use tool without the need to make any firewall configuration changes. The tool supports both the initial bulk import as well as incremental adds and updates. You can schedule the tool to run periodically to perform the import/update tasks as required.<br />
<br />
The utility employs the Azure Graph API to query the contents of Azure AD. If you would like to know more about this API and it's capabilities, please refer to the relevant Microsoft documentation: [https://docs.microsoft.com/en-gb/azure/active-directory/develop/active-directory-graph-api '''Azure Graph API Information''']<br />
<br />
The last utility using the Azure Graph API is version 1.4.4 [https://github.com/hornbill/goAzure2HUserImport/tree/v1.4.4 (download from GitHub)]<br />
<br />
As of '''v2.0.0''' the utility uses the Microsoft Graph API instead. Please refer to [https://docs.microsoft.com/en-gb/graph/ '''Microsoft Graph API Information''']. Please note that you will likely need to set a different set of permissions AND generate a new ClientSecret for the changes to take effect.<br />
<br />
Prior to '''v2.3.0''' the documentation is different and [[Special:Permalink/20877|can be found here]]<br />
<br />
=== Open Source ===<br />
<br />
The Azure User Import Utility is provided open source under the [https://wiki.hornbill.com/index.php/The_Hornbill_Community_License_(HCL) Hornbill Community Licence] and can be found [https://github.com/hornbill/goAzure2HUserImport here] on GitHub<br />
<br />
== Installation Overview ==<br />
<br />
=== Windows Installation ===<br />
* Download the architecture specific [https://github.com/hornbill/goAzure2HUserImport/releases/latest latest package] from GitHub <br />
* Extract zip into a folder you would like the application to run from e.g. '''C:\Hornbill_Import\'''<br />
* Open '''conf.json''' and add in the necessary configration<br />
* Open Command Line Prompt as Administrator<br />
* Change Directory to the folder with azure_user_import.exe '''C:\Hornbill_Import\'''<br />
* Run the command azure_user_import.exe -dryrun=true<br />
<br />
== HTTP Proxies ==<br />
<br />
If you use a proxy for all of your internet traffic, the HTTP_PROXY Environment variable needs to be set. The https_proxy environment variable holds the hostname or IP address of your proxy server. It is a standard environment variable and like any such variable, the specific steps you use to set it depends on your operating system.<br />
<br />
For windows machines, it can be set from the command line using the following:<br />
<br><br />
<code><br />
set HTTP_PROXY=HOST:PORT<br />
</code><br />
<br><br />
Where "HOST" is the IP address or host name of your Proxy Server and "PORT" is the specific port number.<br />
<br />
=== URLs to White List ===<br />
<br />
Occasionally on top of setting the HTTP_PROXY variable the following URLs need to be white listed to allow access out to our network<br />
<br />
* https://files.hornbill.com/instances/INSTANCENAME/zoneinfo - Allows access to lookup your Instance API Endpoint<br />
* https://files.hornbill.co/instances/INSTANCENAME/zoneinfo - Backup URL for when files.hornbill.com is unavailable<br />
* https://eurapi.hornbill.com/INSTANCENAME/xmlmc/ - This is your Instance API Endpoint, eurapi can change so you should use the endpoint defined in the previous URL<br />
* https://api.github.com/repos/hornbill/goAzure2HUserImport/tags - '''Optional''' Allows access to check for the latest version of the Import Tool<br />
<br />
== Configuration Overview ==<br />
Prior to configuring the .json file, it is advisable to read the following wiki page regarding [[users|'''Hornbill User Accounts''']] as it will provide some context to the content on this page.<br />
<br><br />
<br><br />
A default configuration file is provided conf.json, if a configuration file is not specified as a command line argument then conf.json must exist.<br />
<br />
{<br />
"APIKey": "", /* this is the API-key which is associated to a user in the Hornbill instance [1] */<br />
"InstanceId": "", /* your Hornbill instance name : not likely to change. Please note this value is case sensitive. */<br />
"AzureConf": {<br />
"Tenant": "",<br />
"ClientID": "", /* [2] */<br />
"ClientSecret": "",<br />
"UserFilter": "startswith(displayName,'Dave')",<br />
"UserProperties": [<br />
"employeeId",<br />
"mailNickname",<br />
"department"<br />
],<br />
"UserID": "mail",<br />
"Debug": false,<br />
"APIVersion":"v1.0",<br />
"Search":"groups",<br />
"UsersByGroupID":[<br />
{<br />
"ObjectID":"Group Object ID",<br />
"Name":"Group Object Name"<br />
},<br />
{<br />
"ObjectID":"Second Group Object ID",<br />
"Name":"Second Group Object Name"<br />
}<br />
]<br />
},<br />
"User": {<br />
"Operation":"Both", /* options : Create/Update/Both ; import actions to perform on the discovered user records */<br />
"UserDN": "&#123;&#123;.keysearch&#125;&#125;",<br />
"AccountMapping":{ /* mapping of fields in the format: "Field in Hornbill": "data to insert" [4] */<br />
"UserID":"&#123;&#123;.mail&#125;&#125;",<br />
"LoginID":"&#123;&#123;.mail&#125;&#125;",<br />
"EmployeeID":"&#123;&#123;.mail&#125;&#125;",<br />
"UserType":"basic", /* (basic vs user) */<br />
"Name":"&#123;&#123;.givenName&#125;&#125; &#123;&#123;.surname&#125;&#125;",<br />
"Password":"", /* if left blank a random password will be generated [7] */<br />
"FirstName":"&#123;&#123;.givenName&#125;&#125;",<br />
"LastName":"&#123;&#123;.surname&#125;&#125;",<br />
"JobTitle":"",<br />
"Site":"1", /* if set, see also comments below on SiteLookup [8] */<br />
"Phone":"&#123;&#123;.telephoneNumber&#125;&#125;",<br />
"Email":"&#123;&#123;.mail&#125;&#125;",<br />
"Mobile":"",<br />
"AbsenceMessage":"",<br />
"TimeZone":"", /* see [[User Import TimeZone Fields Options]] */<br />
"Language":"", /* ISO 629 in combination with ISO 3166 as per [https://en.wikipedia.org/wiki/Language_localisation this wikipedia entry] */<br />
"DateTimeFormat":"", /* see [[User Import DateTime Format Options]] */<br />
"DateFormat":"",<br />
"TimeFormat":"",<br />
"CurrencySymbol":"", /* any character */<br />
"CountryCode":"" /* expects ISO 3166 Alpha 2 two Character Country Code [https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes (see here)] */<br />
},<br />
"Type":{<br />
"Action":"Create" /* options : Create/Update/Both ; setting to Basic User (as opposed to Full User) */<br />
},<br />
"Status":{<br />
"Action":"Both", /* options : Create/Update/Both ; on what action to change the User Account Status */<br />
"Value":"active" /* options : active/suspended/archived */<br />
},<br />
"Role":{<br />
"Action":"Both" /* options : Create/Update/Both ; on what action to change the User Role */<br />
, "Roles":[ /* list of Roles assigned to the users being imported */<br />
"Basic User Role"<br />
]<br />
},<br />
"ProfileMapping":{ /* further fields [5] */<br />
"MiddleName":"",<br />
"JobDescription":"",<br />
"Manager":"&#123;&#123;.manager&#125;&#125;", /* full name of manager. If set, see also comments below on UserManagerMapping */<br />
"WorkPhone":"",<br />
"Qualifications":"",<br />
"Interests":"",<br />
"Expertise":"",<br />
"Gender":"",<br />
"Dob":"",<br />
"Nationality":"",<br />
"Religion":"",<br />
"HomeTelephone":"&#123;&#123;.telephoneNumber&#125;&#125;",<br />
"SocialNetworkA":"",<br />
"SocialNetworkB":"",<br />
"SocialNetworkC":"",<br />
"SocialNetworkD":"",<br />
"SocialNetworkE":"",<br />
"SocialNetworkF":"",<br />
"SocialNetworkG":"",<br />
"SocialNetworkH":"",<br />
"PersonalInterests":"",<br />
"homeAddress":"",<br />
"PersonalBlog":"",<br />
"Attrib1":"1",<br />
"Attrib2":"2",<br />
"Attrib3":"3",<br />
"Attrib4":"4",<br />
"Attrib5":"5",<br />
"Attrib6":"6",<br />
"Attrib7":"7",<br />
"Attrib8":"8"<br />
},<br />
"Manager":{<br />
"Action": "Both" /* options : Create/Update/Both ; on what action to change the User's Manager */<br />
"Value": "&#123;&#123;.mgrfirstname&#125;&#125; &#123;&#123;.mgrlastname&#125;&#125;" /* full name of manager. If set, see also comments below on User Manager Mapping */<br />
, "Options": {<br />
"GetStringFromValue": {<br />
"Regex" : ""<br />
, "Reverse": false<br />
}<br />
, "MatchAgainstDistinguishedName": false<br />
, "Search": {<br />
"Enable": true /* options : true/false ; turn this on or off */<br />
, "SearchField": ""<br />
}<br />
}<br />
}<br />
, "Image":{<br />
"Action":"Both" /* options : Create/Update/Both ; on what action to change the Image */<br />
, "UploadType": "AZURE" /* options : URI/URL/AZURE ; local (network) drive or HTTP(S) served image */<br />
, "InsecureSkipVerify": false<br />
, "ImageType": "jpg" /* options : jpg/png */<br />
, "URI": "&#123;&#123;.userPrincipalName&#125;&#125;"<br />
}<br />
, "Site":{<br />
"Action":"Both" /* options : Create/Update/Both ; on what action to change the User's Site */<br />
, "Value": "&#123;&#123;.physicalDeliveryOfficeName&#125;&#125;"<br />
}<br />
, "Org":[ /* Organisational Units to associate the imported user with [6] */<br />
{<br />
"Action":"Both" /* options : Create/Update/Both ; on what action to add to the organisational structure */<br />
, "value":"&#123;&#123;.department&#125;&#125;" /* name of organisational unit */<br />
, "MemberOf":""<br />
, "Options": {<br />
"Type":2, /* options : 0,...,5 ; type of organisational unit, respectively: general/team/department/costcenter/division/company */<br />
"Membership":"member", /* options : member/teamLeader/manager */<br />
"TasksView":false, /* options : true/false ; If set true, then the user can view tasks assigned to this group */<br />
"TasksAction":false, /* options : true/false ; If set true, then the user can action tasks assigned to this group */<br />
"OnlyOneGroupAssignment":false<br />
}<br />
}<br />
, {<br />
"Action":"Both"<br />
, "value":"Great Company"<br />
, "MemberOf":""<br />
, "Options": {<br />
"Type":5,<br />
"Membership":"member",<br />
"TasksView":false,<br />
"TasksAction":false,<br />
"OnlyOneGroupAssignment":false /* options: true/false ; if set to true, then a user can only be associated to a single group at any one time */<br />
}<br />
}<br />
]<br />
}<br />
}<br />
<br />
<br />
# An API key is set up against a user within Hornbill (accessed through: Administration > System > Organisationl Data > Users).<br />
# There are instructions on-line on how to obtain the ClientID and ClientSecret from within Azure. We have found that the following permissions need to be granted within Azure, though these could differ for yourselves, so please rely on your own expertise. Application permissions on: ''Group.Read.All, GroupMember.Read.All, Team.ReadBasic.All, TeamMember.Read.All, User.Read.All''. Delegated permission on ''User.Read''. The permission settings need confirming.<br />
# The fields are quite self-explanatory and part of the "Details"-section (as opposed to the "About"-section [5]), most can be left as-is. The mapping is done with some templating of the format &#123;&#123;fieldname&#125;&#125;. One can be a little adventurous, for instance "&#123;&#123;.mgrfirstname&#125;&#125; - &#123;&#123;.mgrlastname&#125;&#125;" puts a space, hyphen and space between the person's manager's first and last name. One can use this to prefix or suffix the values coming from the database or indeed to set a static value (as done for example with userType and Attribute under OrgLookup for the company (Type:5)).<br />
# The same holds here as for [4], this is regarding the "About"-section of the user's details.<br />
# this is a non-ordered list of the organisation structure - it allows one to associate the imported user to one or more levels within the organisation. The delivered configuration file will associate each imported user with EACH of the three discernable levels (company, department and division) - depending on your requirements regarding the availability of services and such, you will likely want to manipulate this section and perhaps only leave behind the "department" level (Type: 2) with the TasksView and TasksAction set accordingly. Please note that this import only adds and not REMOVES any association.<br />
# The password field should be left empty as the utility generates a secure password that adheres to the User Password Policy as specified on your Hornbill instance. This password will only be temporary as the user should use the "Forgot Password" link available on the Hornbill Login Screen to reset their password the first time they navigate to your Hornbill instance.<br />
# "Site" - Recognises a corresponding Hornbill site ID. E.g. "Site":"1" - The value of Site should be numeric. As an alternative, the import configuration provides a "Site Lookup" section (outlined in a later section) which can make a site association based on the contents of a directory attribute.<br />
<br><br />
<br><br />
=== Filtering ===<br />
There are two methods of filtering users that you can configure with this tool. They are both defined in the '''AzureConf''' section of the configuration.<br />
<br />
To import all direct User objects within one or more Azure Groups:<br />
* AzureConf > Search : set the value of this parameter to '''groups'''<br />
* AzureConf > UsersByGroupID : this is a JSON array of Groups to return Users from:<br />
** ObjectID : the Object ID of the Group you want to return direct member Users from;<br />
** Name : The Name of the Group<br />
<br />
Using an Azure AD filter to find Users to import:<br />
* AzureConf > Search : set the value of this parameter to '''users'''<br />
* AzureConf > UserFilter : define an Azure filter to search for User objects. If not defined, then all User objects from your Azure AD will be returned.<br />
<br />
=== Fields ===<br />
These fields are those which Azure AD recognise as part of an account (eg givenName) they match LDAP variables quite nicely. However, please keep in mind that although for instance multiple email addresses can be set in Azure, only the main one in ''mail'' can be used (unless one makes amendments to the script)<br />
<br />
====Associating a Site to Hornbill User Accounts====<br />
The DB Import utility has the ability to associate a Hornbill Site record to a user account based on the contents of a field. This is achieved through a "Look-up". The Look up mechanism is quite simple and works in the following manner. <br />
# The import reads the fields (template rules work) that is specified in the "value" field. In the example shown, the '''site''' field is used.<br />
# It takes the content and tries to identify if there is an existing site record in Hornbill with a name that matches the value of the site. e.g. if the site field contained "Brussels", the import would look for a Hornbill Site record with the name "Brussels".<br />
# If a match is found, the import will associate the user to the site.<br />
# If no site record is found, the import will move onto the next user.<br />
i.e. The name of the Site record in Hornbill must match the value of the directory attribute specified. More on Hornbill Sites can be found here: [[Sites|'''Sites''']]<br />
<br><br />
<br><br />
====Associating a Group to Hornbill User Accounts====<br />
The DB Import has the ability to associate a Hornbill Group to a user account based on the contents of a fieldname. This is achieved through a "Look-up". The Look up mechanism is quite simple and works in the following manner. <br />
# The utility reads the attribute that is specified in the orgLookup section. In the example shown, the '''department''' field is used.<br />
# It takes the content and tries to identify if there is a Hornbill Group that exists with a name that matches the value of the field name. e.g. if the '''department''' field contained "Accounting", the utility would look for a Hornbill Group called "Accounting".<br />
# If a match is found, the import will associate the user to the group.<br />
# If no Hornbill organisation is found, the import will move onto the next user.<br />
i.e. The name of the Organization(Group) in Hornbill must match the value of the database field. More on Hornbill Organisational Groups can be found here: [[Organisation|'''Organisation Structure<br />
<br><br />
<br><br />
====User Manager Mapping in Hornbill====<br />
Hornbill can store a manager relationship between two users in Hornbill. The manager look up mechanism works as follows:<br />
# The import reads the contents of the value attribute which will contain the some text identifying the manager eg "''mgrfirstname mgrlastname''"<br />
# IF a regex it given, then this first will be applied to the data obtained above.<br />
# The import is hard-coded to remove any slash and comma in the result.<br />
# With the "Reverse" option enabled, the above string would be reversed to give: "''mgrlastname mgrfirstname''"<br />
# The import tries to match this value against an existing Hornbill user by looking up the "Handle" field i.e. h_name.<br />
<br />
== Preparing to Run the Import ==<br />
Ultimately, the executable will be scheduled in Windows task scheduler (see later) but to test, gain confidence, and perform the initial upload of users the utility can be executed from a command prompt window on an ad-hoc basis. The command used to execute the import can contain a number of command line parameters.<br />
* dryrun - Defaults to '''''false''''' - Set to True and the XMLMC for Create and Update users will not be called and instead the XML will be dumped to the log file, this is to aid in debugging the initial connection information.<br />
* file - Defaults to '''''conf.json''''' - Name of the Configuration file to load<br />
* zone - Defaults to '''''eur''''' - Allows you to change the ZONE used for creating the XMLMC EndPoint URL: <nowiki>https://{ZONE}api.hornbill.com/{INSTANCE}/</nowiki><br />
* workers - Defaults to `3` - Allows you to change the number of worker threads used to process the import, this can improve performance on slow import but using too many workers have a detriment to performance of your Hornbill instance.<br />
* debug - Defaults to '''''false''''' - outputs extra information to the log to help with debugging issues.<br />
<br />
== Testing Overview ==<br />
There is no substitute for hands-on experience when becoming familiar with the Hornbill import utilities. <br />
<br><br />
The Azure User import accepts and understands a number of "Command Line Parameters" that can be used when running the utility from the command line. The most important one for testing is the '''-dryrun=true''' command. When this is specified, no information will be written to Hornbill and it allows you to confirm that the configuration is correct and that a connection to your directory server can be established. A dryrun still outputs a log file which provides you with an opportunity to review and understand any error messages that may occur.<br />
<br><br />
Below are some high level steps to help you build confidence in your configuration:<br />
<br><br />
<br><br />
# In the configuration, specify an "UserFilter" to target a single user object. (Its good practice to initially test on a single, or small set of, user objects as this allows the dryruns to complete quicker and there is less log content to sift through).<br />
# Perform a dryrun (by executing the utility along with the -dryrun=true command line parameter).<br />
# Review cmd output and log file for errors<br />
# Check against "Common Error Messages" listed on the wiki and take action to rectify where necessary.<br />
# Continue with dryrun tests until you are happy that all the errors are accounted for.<br />
# Perform a live import with this single user object still specified i.e. set -dryrun=false<br />
# Review user account in Hornbill and check all user properties are as expected i.e. email contains an email address etc.<br />
# Adjust conf file user property mappings as necessary<br />
# Loop through steps 6 - 8 as many times as is necessary until you are happy with the information being transported into the Hornbill user account properties.<br />
# Amend the "UserFilter" and/or the scope of the "Search" variable to target the user objects required for a full import.<br />
# Perform a dryrun<br />
# Review cmd output and log file for errors<br />
# Check against "Common Error Messages" listed on the wiki and take action to rectify where necessary.<br />
# Continue with dryrun tests until you are happy that all the errors are accounted for.<br />
<br><br />
Example command line:<br />
<code><br />
azure_user_import.exe -dryrun=true<br />
</code><br />
<br />
<br />
=== What Hornbill Roles are needed for the Import to Complete Successfully? ===<br />
A default role is delivered with Hornbill that is designed to be used in conjunction with our range of user import utilities. The security role is called '''User Import''' and has all the necessary rights to import / update user properties. <br />
<br />
As you may now be aware, every action within Hornbill must be performed in the context of a user account. As well as the chosen user account possessing the "user Import" role which facilitates the importing of the user accounts and updating of the user properties, this user account must posses the roles that you are associating to imported user accounts via the import utility.<br />
The above comment about roles is referring to Hornbill's security model when it comes to associating roles to user accounts, which is: ''Hornbill is designed to only allow the association of roles if the User who is performing the assignment of a particular role already possess the same system/application rights among the roles that they themselves possess.'' This security measure prevents you inflating your own rights or giving a user more rights than you have yourself. <br />
<br />
i.e. in addition to the "User Import" role, any roles you try and assign to the user accounts being imported must be assigned to the user account logging in and running the import.<br />
<br />
<br />
==Trouble Shooting==<br />
=== Logging Overview ===<br />
<br />
All Logging output is saved in the "log" directory which can be found in the same location as the executable. The file name contains the date and time the import was run '''''Azure_User_Import_2015-11-06T14-26-13Z.log'''''<br />
===Common Error Messages===<br />
<br />
Below are some common errors that you may encounter in the log file and what they mean:<br />
* ''' ''[ERROR] Error Decoding Configuration File:.....'' ''' - this will be typically due to a missing quote (") or comma (,) somewhere in the configuration file. This is where an online JSON viewer/validator can come in handy rather than trawling the conf file looking for that proverbial needle in a haystack.<br />
* ''' ''[ERROR] Get https://api.github.com/repos/hornbill/goAzure2HUserImport/tags: dial tcp xx.xx.xx.xx:xxx: ........'' ''' - this most likely indicates that you have a HTTP proxy server on your network between the host running the executable and your Hornbill API endpoint. Ensure the http_proxy environment variable is set (See the section on "HTTP Proxies" for more information) and that the proxy is configured to allow this communication.<br />
* ''' ''panic: runtime error: invalid memory address or nil pointer deference [recovered]...'' ''' - this error is suggesting an incorrectly specified attribute in the conf file. Where information is being obtained from a directory attribute, the attribute must be in the following format: ''<nowiki>{{.directoryAttributeName}}</nowiki>''<br />
* ''' ''[ERROR] Unable to Create User: Invalid value for parameter '[parameter name]': The text size provided (31 characters) is greater than the maximum allowable size of 20 characters for column [column name]'' ''' - the contents of your directory attribute exceed the maximum number of characters that can be placed in the Hornbill database column.<br />
* ''' ''[ERROR] Unable to Create User: The value in element <userId> did not meet the required input pattern constraints. at location '/methodCall/params/userId' '' ''' - the user id contains characters that are not allowed. The User Id should be made up of alphanumeric characters. Full stops (.) and underscores (_) are also supported.<br />
* ''' ''[ERROR] Unable to Create User: [usedID] Error: The specified handle [Display Name] is already in use'' ''' - By default, the "Handle" (Hornbill Display Name) must be unique. This error suggests a user account already exists in Hornbill which is using this handle. The duplicate-handle validation can be disabled via a setting found in Hornbill Adminsitration under "''Home > System > Advanced Settings''" and filtering for "''api.xmlmc.uniqueUserHandle.enable''"<br />
* ''' ''[ERROR] Unable to Update User: Invalid value for parameter '[parameter name]': Error setting value for column '[column name]'. bad lexical cast: source type value could not be interpreted as target'' ''' - this error is indicating that the contents of your directory attribute are in a format that is not compatible with the type of the Hornbill database column. For example, you will get this when trying to place text into a database field that is of type "INT" (accepts integer values only).<br />
* ''' ''[ERROR] Unable to Load LDAP Attribute: '[LDAP attribute name]' For Input Param: '[Hornbill Parameter name]' '' ''' - When the import utility is unable to load a particular LDAP attribute, this means that the attribute field in your directory does not contain a value. This error will not prevent the user account being created or updated in Hornbill and can be considered more as a warning rather than an outright failure or problem.<br />
* ''' ''[ERROR] Unable to Set User Status [status name]: You have reached your user subscription limit of [xx], you will need to expand your subscription level if you wish to add more users'' ''' - The utility is trying to update the user status of an existing user account from an inactive status (i.e. "archived" or "suspended") to "active" however in order for this to be successful you must have some subscriptions available.<br />
<br />
=== Error Codes ===<br />
* '''100''' - Unable to create log File<br />
* '''101''' - Unable to create log folder<br />
* '''102''' - Unable to Load Configuration File<br />
<br />
== Scheduling Overview ==<br />
<br />
=== Windows ===<br />
You can schedule .exe to run with any optional command line argument from Windows Task Scheduler.<br />
* Ensure the user account running the task has rights to Azure2UserImport.exe and the containing folder.<br />
* Make sure the Start In parameter contains the folder where the executable resides in, otherwise it will not be able to pick up the correct path. eg:<br />
<br />
[[File:Ldap_import_schedule.png]]</div>Victorshttps://wiki.hornbill.com/index.php?title=SQL_User_Import&diff=26199SQL User Import2021-01-21T10:11:19Z<p>Victors: /* Configuration Overview */</p>
<hr />
<div>== About the Hornbill SQL User Import Utility ==<br />
The utility provides a simple, safe and secure way to create user accounts on the Hornbill platform by synchronizing with accounts held in your Database. The tool is designed to run behind your corporate firewall, connect to your database, query the required account information, transform and load into the Hornbill instance. The tool connects to the Hornbill instance in the cloud over HTTPS/SSL so as long as you have standard internet access then you should be able to use tool without the need to make any firewall configuration changes. The tool supports both the initial bulk import as well as incremental adds and updates. You can schedule the tool to run periodically to perform the import/update tasks as required.<br />
<br />
==== Previous Versions ====<br />
Documentation to [[Special:Permalink/16449|Version 1.2.3]]<br />
<br />
== Open Source ==<br />
<br />
The SQL User Import Utility is provided open source under the [https://wiki.hornbill.com/index.php/The_Hornbill_Community_License_(HCL) Hornbill Community Licence] and can be found [https://github.com/hornbill/goDb2HUserImport here] on GitHub<br />
<br />
== Installation Overview ==<br />
<br />
=== Windows Installation ===<br />
* Download the [https://github.com/hornbill/goDb2HUserImport/releases/latest latest package] for your specific architecture and OS from GitHub <br />
* Extract zip into a folder you would like the application to run from e.g. '''C:\Hornbill_Import\'''<br />
* Open '''conf.json''' and add in the necessary configration<br />
* Open Command Line Prompt as Administrator<br />
* Change Directory to the folder with goDb2HUserImport.exe '''C:\Hornbill_Import\'''<br />
* Run the command goDb2HUserImport.exe -dryrun=true<br />
<br />
== Configuration Overview ==<br />
Prior to configuring the .json file, it is advisable to read the following wiki page regarding [[users|'''Hornbill User Accounts''']] as it will provide some context to the content on this page.<br />
<br><br />
<br><br />
A default configuration file is provided conf.json, if a configuration file is not specified as a command line argument then conf.json must exist.<br />
<br />
{<br />
"APIKey": "", /* this is the API-key which is associated to a user in the Hornbill instance [1] */<br />
"InstanceId": "", /* your Hornbill instance name : not likely to change. Please note this value is case sensitive */<br />
"SQLConf": { /* db configuration : unlikely to change */<br />
"Driver": "mssql", /* options: mssql/mysql/swsql/mysql320/csv/excel ; what DB to connect to */<br />
"Server": "10.123.123.123", /* DB Server address */<br />
"Database": "HB", /* DB Name */<br />
"UserName": "Hornbill", /* DB Username */<br />
"Password": "password", /* DB Password */<br />
"Port": 1433, /* DB Server Port */<br />
"UserID": "winaccount", /* the FIELD name */<br />
"Encrypt": false, /* options : true/false ; [2] */<br />
"Query": "SELECT department, division, emailaddress, ext, forenames, jobtitle, mgrstaffid, mgrfirstname, mgrlastname, portrait_url, staffid, subdivision, surname, winaccount FROM whatever_table" /* SQL Query to run [3] */<br />
},<br />
"User": {<br />
"UserDN": "&#123;&#123;.keysearch&#125;&#125;"<br />
,"AccountMapping":{ /* mapping of fields in the format: "Field in Hornbill": "data to insert" [4] */<br />
"UserID":"&#123;&#123;.keysearch&#125;&#125;",<br />
"LoginID":"&#123;&#123;.keysearch&#125;&#125;",<br />
"EmployeeID":"&#123;&#123;.keysearch&#125;&#125;",<br />
"UserType":"basic", /* (basic vs user) */<br />
"Name":"&#123;&#123;.forenames&#125;&#125; &#123;&#123;.surname&#125;&#125;",<br />
"Password":"", /* if left blank a random password will be generated [7] */<br />
"FirstName":"&#123;&#123;.forenames&#125;&#125;",<br />
"LastName":"&#123;&#123;.surname&#125;&#125;",<br />
"JobTitle":"",<br />
"Site":"1", /* if set, see also comments below on SiteLookup [8] */<br />
"Phone":"&#123;&#123;.ext&#125;&#125;",<br />
"Email":"&#123;&#123;.emailaddress&#125;&#125;",<br />
"Mobile":"",<br />
"AbsenceMessage":"",<br />
"TimeZone":"", /* see [[User Import TimeZone Fields Options]] */<br />
"Language":"", /* ISO 629 in combination with ISO 3166 as per [https://en.wikipedia.org/wiki/Language_localisation this wikipedia entry] */<br />
"DateTimeFormat":"", /* see [[User Import DateTime Format Options]] */<br />
"DateFormat":"",<br />
"TimeFormat":"",<br />
"CurrencySymbol":"", /* any character */<br />
"CountryCode":"" /* expects ISO 3166 Alpha 2 two Character Country Code [https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes (see here)] */<br />
},<br />
"Type":{<br />
"Action":"Create" /* options : Create/Update/Both ; setting to Basic User (as opposed to Full User) */<br />
},<br />
"Status":{<br />
"Action":"Both", /* options : Create/Update/Both ; on what action to change the User Account Status */<br />
"Value":"active" /* options : active/suspended/archived */<br />
},<br />
"Role":{<br />
"Action":"Both" /* options : Create/Update/Both ; on what action to change the User Role */<br />
, "Roles":[ /* list of Roles assigned to the users being imported */<br />
"Basic User Role"<br />
]<br />
},<br />
"ProfileMapping":{ /* further fields [5] */<br />
"MiddleName":"",<br />
"JobDescription":"",<br />
"Manager":"&#123;&#123;.manager&#125;&#125;", /* full name of manager. If set, see also comments below on UserManagerMapping */<br />
"WorkPhone":"",<br />
"Qualifications":"",<br />
"Interests":"",<br />
"Expertise":"",<br />
"Gender":"",<br />
"Dob":"",<br />
"Nationality":"",<br />
"Religion":"",<br />
"HomeTelephone":"&#123;&#123;.telext&#125;&#125;",<br />
"SocialNetworkA":"",<br />
"SocialNetworkB":"",<br />
"SocialNetworkC":"",<br />
"SocialNetworkD":"",<br />
"SocialNetworkE":"",<br />
"SocialNetworkF":"",<br />
"SocialNetworkG":"",<br />
"SocialNetworkH":"",<br />
"PersonalInterests":"",<br />
"homeAddress":"",<br />
"PersonalBlog":"",<br />
"Attrib1":"1",<br />
"Attrib2":"2",<br />
"Attrib3":"3",<br />
"Attrib4":"4",<br />
"Attrib5":"5",<br />
"Attrib6":"6",<br />
"Attrib7":"7",<br />
"Attrib8":"8"<br />
}<br />
, "Manager":{<br />
"Action": "Both" /* options : Create/Update/Both ; on what action to change the User's Manager */<br />
, "Value": "&#123;&#123;.mgrfirstname&#125;&#125; &#123;&#123;.mgrlastname&#125;&#125;" /* full name of manager. If set, see also comments below on User Manager Mapping */<br />
, "Options": {<br />
"GetStringFromValue": {<br />
"Regex" : ""<br />
, "Reverse": false<br />
}<br />
, "MatchAgainstDistinguishedName": false<br />
, "Search": {<br />
"Enable": true /* options : true/false ; turn this on or off */<br />
, "SearchField": ""<br />
}<br />
}<br />
}<br />
, "Image":{<br />
"Action":"Both" /* options : Create/Update/Both ; on what action to change the Image */<br />
, "UploadType": "URL" /* options : URI/URL ; local (network) drive or HTTP(S) served image */<br />
, "InsecureSkipVerify": false<br />
, "ImageType": "jpg" /* options : jpg/png */<br />
, "URI": "&#123;&#123;.portrait_url&#125;&#125;"<br />
}<br />
, "Site":{<br />
"Action":"Both" /* options : Create/Update/Both ; on what action to change the User's Site */<br />
, "Value": "&#123;&#123;.site&#125;&#125;"<br />
}<br />
, "Org":[ /* Organisational Units to associate the imported user with [6] */<br />
{<br />
"Action":"Both" /* options : Create/Update/Both ; on what action to add to the organisational structure */<br />
, "value":"&#123;&#123;.department&#125;&#125;" /* name of organisational unit */<br />
, "MemberOf":""<br />
, "Options": {<br />
"Type":2, /* options : 0,...,5 ; type of organisational unit, respectively: general/team/department/costcenter/division/company */<br />
"Membership":"member", /* options : member/teamLeader/manager */<br />
"TasksView":false, /* options : true/false ; If set true, then the user can view tasks assigned to this group */<br />
"TasksAction":false, /* options : true/false ; If set true, then the user can action tasks assigned to this group */<br />
"OnlyOneGroupAssignment":false<br />
}<br />
}<br />
, {<br />
"Action":"Both"<br />
, "value":"Great Company"<br />
, "MemberOf":""<br />
, "Options": {<br />
"Type":5,<br />
"Membership":"member",<br />
"TasksView":false,<br />
"TasksAction":false,<br />
"OnlyOneGroupAssignment":false /* options: true/false ; if set to true, then a user can only be associated to a single group at any one time */<br />
}<br />
}<br />
, {<br />
"Action":"Both"<br />
, "value":"&#123;&#123;.division&#125;&#125;"<br />
, "MemberOf":""<br />
, "Options": {<br />
"Type":4,<br />
"Membership":"member",<br />
"TasksView":false,<br />
"TasksAction":false,<br />
"OnlyOneGroupAssignment":false<br />
}<br />
}<br />
]<br />
}<br />
}<br />
<br />
<br />
# An API key is set up against a user within Hornbill (accessed through: Administration > System > Organisationl Data > Users).<br />
# specify whether the connection between the script and the database should be encrypted. NOTE: There is a bug in SQL Server 2008 and below that causes the connection to fail if the connection is encrypted. Only set this to true if your SQL Server has been patched accordingly<br />
# please note that all field names are specificied as lowercase - this is to ensure smooth running for the mapped fields (as they are case-sensitive). Also, by specifying each field in use, one is following SQL best practice as it prevents unnecessary/unused data to be stored and processed (longvarchar and blob fields, for instance, take up a lot of memory). '''For CSV''' please use UPPERCASE for all field names and, also, do NOT use spaces in the headers (fieldnames).<br />
# The fields are quite self-explanatory and part of the "Details"-section (as opposed to the "About"-section [5]), most can be left as-is. The mapping is done with some templating of the format &#123;&#123;fieldname&#125;&#125;. One can be a little adventurous, for instance "&#123;&#123;.mgrfirstname&#125;&#125; - &#123;&#123;.mgrlastname&#125;&#125;" puts a space, hyphen and space between the person's manager's first and last name. One can use this to prefix or suffix the values coming from the database or indeed to set a static value (as done for example with userType and Attribute under OrgLookup for the company (Type:5)).<br />
# The same holds here as for [4], this is regarding the "About"-section of the user's details.<br />
# this is a non-ordered list of the organisation structure - it allows one to associate the imported user to one or more levels within the organisation. The delivered configuration file will associate each imported user with EACH of the three discernable levels (company, department and division) - depending on your requirements regarding the availability of services and such, you will likely want to manipulate this section and perhaps only leave behind the "department" level (Type: 2) with the TasksView and TasksAction set accordingly. Please note that this import only adds and not REMOVES any association.<br />
# The password field should be left empty as the utility generates a secure password that adheres to the User Password Policy as specified on your Hornbill instance. This password will only be temporary as the user should use the "Forgot Password" link available on the Hornbill Login Screen to reset their password the first time they navigate to your Hornbill instance.<br />
# "Site" - Recognises a corresponding Hornbill site ID. E.g. "Site":"1" - The value of Site should be numeric. As an alternative, the import configuration provides a "Site Lookup" section (outlined in a later section) which can make a site association based on the contents of a directory attribute.<br />
<br><br />
<br><br />
====Associating a Site to Hornbill User Accounts====<br />
The DB Import utility has the ability to associate a Hornbill Site record to a user account based on the contents of a field. This is achieved through a "Look-up". The Look up mechanism is quite simple and works in the following manner. <br />
# The import reads the fields (template rules work) that is specified in the "value" field. In the example shown, the '''site''' field is used.<br />
# It takes the content and tries to identify if there is an existing site record in Hornbill with a name that matches the value of the site. e.g. if the site field contained "Brussels", the import would look for a Hornbill Site record with the name "Brussels".<br />
# If a match is found, the import will associate the user to the site.<br />
# If no site record is found, the import will move onto the next user.<br />
i.e. The name of the Site record in Hornbill must match the value of the directory attribute specified. More on Hornbill Sites can be found here: [[Sites|'''Sites''']]<br />
<br><br />
<br><br />
====Associating a Group to Hornbill User Accounts====<br />
The DB Import has the ability to associate a Hornbill Group to a user account based on the contents of a fieldname. This is achieved through a "Look-up". The Look up mechanism is quite simple and works in the following manner. <br />
# The utility reads the attribute that is specified in the orgLookup section. In the example shown, the '''department''' field is used.<br />
# It takes the content and tries to identify if there is a Hornbill Group that exists with a name that matches the value of the field name. e.g. if the '''department''' field contained "Accounting", the utility would look for a Hornbill Group called "Accounting".<br />
# If a match is found, the import will associate the user to the group.<br />
# If no Hornbill organisation is found, the import will move onto the next user.<br />
i.e. The name of the Organization(Group) in Hornbill must match the value of the database field. More on Hornbill Organisational Groups can be found here: [[Organisation|'''Organisation Structure<br />
<br><br />
<br><br />
====User Manager Mapping in Hornbill====<br />
Hornbill can store a manager relationship between two users in Hornbill. The manager look up mechanism works as follows:<br />
# The import reads the contents of the value attribute which will contain the some text identifying the manager eg "''mgrfirstname mgrlastname''"<br />
# IF a regex it given, then this first will be applied to the data obtained above.<br />
# The import is hard-coded to remove any slash and comma in the result.<br />
# With the "Reverse" option enabled, the above string would be reversed to give: "''mgrlastname mgrfirstname''"<br />
# The import tries to match this value against an existing Hornbill user by looking up the "Handle" field i.e. h_name.<br />
<br />
== Command Line Parameters ==<br />
<br />
* file - Defaults to '''''conf.json''''' - Name of the Configuration file to load<br />
* dryrun - Defaults to '''''false''''' - Set to True and the XMLMC for Create and Update users will not be called and instead the XML will be dumped to the log file, this is to aid in debugging the initial connection information.<br />
* zone - Defaults to '''''eur''''' - Allows you to change the ZONE used for creating the XMLMC EndPoint URL https://{ZONE}api.hornbill.com/{INSTANCE}/<br />
* workers - Defaults to `3` - Allows you to change the number of worker threads used to process the import, this can improve performance on slow import but using too many workers have a detriment to performance of your Hornbill instance.<br />
<br />
== Testing Overview ==<br />
If you run the application with the argument dryrun=true then no users will be created or updated, the XML used to create or update will be saved in the log file so you can ensure the LDAP mappings are correct before running the import.<br />
<br />
<code><br />
goDb2HUserImport.exe -dryrun=true<br />
</code><br />
<br />
== Logging Overview ==<br />
<br />
All Logging output is saved in the "log" directory which can be found in the same location as the executable. The file name contains the date and time the import was run '''''SQL_User_Import_2015-11-06T14-26-13Z.log'''''<br />
<br />
==Trouble Shooting==<br />
<br />
===Common Error Messages===<br />
<br />
Below are some common errors that you may encounter in the log file and what they mean:<br />
* ''' ''[ERROR] Error Decoding Configuration File:.....'' ''' - this will be typically due to a missing quote (") or comma (,) somewhere in the configuration file. This is where an online JSON viewer/validator can come in handy rather than trawling the conf file looking for that proverbial needle in a haystack.<br />
* ''' ''[ERROR] Get https://api.github.com/repos/hornbill/goSQL2HUserImport/tags: dial tcp xx.xx.xx.xx:xxx: ........'' ''' - this most likely indicates that you have a HTTP proxy server on your network between the host running the executable and your Hornbill API endpoint. Ensure the http_proxy environment variable is set (See the section on "HTTP Proxies" for more information) and that the proxy is configured to allow this communication.<br />
* ''' ''[ERROR] Unable to Create User: Invalid value for parameter '[parameter name]': The text size provided (31 characters) is greater than the maximum allowable size of 20 characters for column [column name]'' ''' - the contents of your directory attribute exceed the maximum number of characters that can be placed in the Hornbill database column.<br />
* ''' ''[ERROR] Unable to Create User: The value in element <userId> did not meet the required input pattern constraints. at location '/methodCall/params/userId' '' ''' - the user id contains characters that are not allowed. The User Id should be made up of alphanumeric characters. Full stops (.) and underscores (_) are also supported.<br />
* ''' ''[ERROR] Unable to Update User: Invalid value for parameter '[parameter name]': Error setting value for column '[column name]'. bad lexical cast: source type value could not be interpreted as target'' ''' - this error is indicating that the contents of your directory attribute are in a format that is not compatible with the type of the Hornbill database column. For example, you will get this when trying to place text into a database field that is of type "INT" (accepts integer values only).<br />
* ''' ''[ERROR] Unable to Load LDAP Attribute: '[LDAP attribute name]' For Input Param: '[Hornbill Parameter name]' '' ''' - When the import utility is unable to load a particular LDAP attribute, this means that the attribute field in your directory does not contain a value. This error will not prevent the user account being created or updated in Hornbill and can be considered more as a warning rather than an outright failure or problem.<br />
<br />
=== Error Codes ===<br />
* '''100''' - Unable to create log File<br />
* '''101''' - Unable to create log folder<br />
* '''102''' - Unable to Load Configuration File<br />
<br />
== HTTP Proxies ==<br />
<br />
If you use a proxy for all of your internet traffic, the HTTP_PROXY Environment variable needs to be set. The https_proxy environment variable holds the hostname or IP address of your proxy server. It is a standard environment variable and like any such variable, the specific steps you use to set it depends on your operating system.<br />
<br />
For windows machines, it can be set from the command line using the following:<br />
<br><br />
<code><br />
set HTTP_PROXY=HOST:PORT<br />
</code><br />
<br><br />
Where "HOST" is the IP address or host name of your Proxy Server and "PORT" is the specific port number.<br />
<br />
=== URLs to White List ===<br />
<br />
Occasionally on top of setting the HTTP_PROXY variable the following URLs need to be white listed to allow access out to our network<br />
<br />
* https://files.hornbill.com/instances/INSTANCENAME/zoneinfo - Allows access to lookup your Instance API Endpoint<br />
* https://files.hornbill.co/instances/INSTANCENAME/zoneinfo - Backup URL for when files.hornbill.com is unavailable<br />
* https://eurapi.hornbill.com/INSTANCENAME/xmlmc/ - This is your Instance API Endpoint, eurapi can change so you should use the endpoint defined in the previous URL<br />
* https://api.github.com/repos/hornbill/goLDAPUserImport/tags - '''Optional''' Allows access to check for the latest version of the Import Tool<br />
<br><br />
<br />
== Scheduling Overview ==<br />
<br />
=== Windows ===<br />
You can schedule .exe to run with any optional command line argument from Windows Task Scheduler.<br />
* Ensure the user account running the task has rights to ldap_import.exe and the containing folder.<br />
* Make sure the Start In parameter contains the folder where the executable resides in, otherwise it will not be able to pick up the correct path. eg:<br />
<br />
[[File:Ldap_import_schedule.png]]<br />
<br />
<br />
== Required Permissions ==<br />
<br />
=== Default Role ===<br />
As of Server Release 2494 a default role '''User Import''' is delivered which has all the necessary rights to import / update users. The exception to this is any roles you try and assign to users being imported must be assigned to the user account logging in and running the import, this is due to a security measure that prevents you inflating your own rights or giving a user more rights than you have yourself. <br />
<br />
<br />
<br />
The following rights are required by any user account being used to run the User Import tool.<br />
<br />
=== System Rights ===<br />
'''Group A (Accounts)'''<br />
* Manage Users<br />
* Create Users<br />
* Update Users<br />
[[File:Screen_Shot_2016-02-26_at_07.59.50.png]]<br />
=== Table Rights ===<br />
'''h_sys_accounts'''<br />
* Browse<br />
* Add<br />
* Update<br />
[[File:Screen_Shot_2016-02-26_at_08.00.02.png]]<br />
<br />
'''h_sys_sites'''<br />
* Browse<br />
[[File:Screen_Shot_2016-02-26_at_08.00.24.png]]<br />
<br />
'''h_sys_roles'''<br />
* Browse<br />
[[File:Screen_Shot_2016-03-01_at_14.48.42.png]]<br />
<br />
'''h_sys_accounts_roles'''<br />
* Browse<br />
* Add<br />
[[File:Screen_Shot_2016-03-02_at_10.00.30.png]]</div>Victorshttps://wiki.hornbill.com/index.php?title=CSV_Asset_Import&diff=26198CSV Asset Import2021-01-21T10:09:12Z<p>Victors: </p>
<hr />
<div>=About the Hornbill CSV Asset Import Utility=<br />
<br />
The utility provides a simple, safe and secure way to create and update asset records on the Hornbill platform, by reading asset records from CSV files. The tool is designed to run behind your corporate firewall, read your asset data from CSV files accessible to the user account running this tool, then transform and load the records into your Hornbill instance. The tool connects to your Hornbill instance in the cloud over HTTPS/SSL, so as long as you have standard internet access then you should be able to use the tool without the need to make any firewall configuration changes. The tool supports both the initial bulk import as well as incremental adds and updates. You can schedule the tool to run periodically to perform the import/update tasks as required.<br />
<br />
==Open Source==<br />
<br />
The Asset Import Utility is provided open source under the [https://wiki.hornbill.com/index.php/The_Hornbill_Community_License_(HCL) Hornbill Community Licence] and can be found [https://github.com/hornbill/goCSVAssetImport Here] on GitHub<br />
<br />
==Installation Overview==<br />
<br />
===Windows Installation===<br />
<br />
* Download the [https://github.com/hornbill/goCSVAssetImport/releases/latest latest package] from GitHub<br />
* Extract zip into a folder you would like the application to run from e.g. `C:\asset_import\`<br />
* Populate a CSV file with asset data, and store in a folder or network location accessible to the user account running this tool<br />
* Open the configuration file of your choice ('''conf_computerSystem.json''') and add in the necessary configration<br />
* Open Command Line Prompt as Administrator<br />
* Change Directory to the folder with goCSVAssetImport_*.exe `C:\asset_import\`<br />
* Run the command:<br />
For Windows 32bit Systems: <br />
<code><br />
goCSVAssetImport_x86.exe -dryrun=true -file=conf_computerSystem.json<br />
</code><br />
<br />
For Windows 64bit Systems: <br />
<code><br />
goCSVAssetImport_x64.exe -dryrun=true -file=conf_computerSystem.json<br />
</code><br />
<br />
==Configuration Overview==<br />
<br />
Bundled with the release of this tool on Github is a configuration file named conf_computerSystem_demomapping.json. This should help in setting up your first import from CSV, and demonstrates how the CSV to Hornbill mappings work.<br />
<br />
The following configuration file overview contains the configuration elements required when importing Asset Types that belong to the AssetsComputer entity:<br />
<br />
<code><br />
"APIKey": "your_api_key_here",<br />
"InstanceId": "your_instance_name",<br />
"AssetIdentifier":"h_name",<br />
"CSVAssetIdentifier":"assetTag",<br />
"CSVCommaCharacter": ",",<br />
"CSVLazyQuotes": false,<br />
"CSVFieldsPerRecord": 0,<br />
"CSVCarriageReturnRemoval": false,<br />
"LogSizeBytes":1000000,<br />
"AssetTypes": {<br />
"Desktop": "\\\\path\\to\\csv\\assetcomputer_desktops.csv"<br />
},<br />
"AssetGenericFieldMapping":{<br />
"h_name":"[assetTag]",<br />
"h_site":"[site]",<br />
"h_asset_tag":"[assetTag]",<br />
"h_acq_method":"",<br />
"h_actual_retired_date":"",<br />
"h_beneficiary":"",<br />
"h_building":"[building]",<br />
"h_company_name:"[companyName]",<br />
"h_cost":"",<br />
"h_cost_center":"",<br />
"h_country":"",<br />
"h_created_date":"",<br />
"h_deprec_method":"",<br />
"h_deprec_start":"",<br />
"h_description":"[description]",<br />
"h_disposal_price":"",<br />
"h_disposal_reason":"",<br />
"h_floor":"[floor]",<br />
"h_geo_location":"",<br />
"h_invoice_number":"",<br />
"h_location":"",<br />
"h_location_type":"",<br />
"h_maintenance_cost":"",<br />
"h_maintenance_ref":"",<br />
"h_notes":"[notes]",<br />
"h_operational_state":"",<br />
"h_order_date":"",<br />
"h_order_number":"",<br />
"h_owned_by":"[ownedById]",<br />
"h_product_id":"",<br />
"h_received_date":"",<br />
"h_residual_value":"",<br />
"h_room":"",<br />
"h_scheduled_retire_date":"",<br />
"h_supplier_id":"",<br />
"h_supported_by":"",<br />
"h_used_by":"[usedById]",<br />
"h_version":"",<br />
"h_warranty_expires":"",<br />
"h_warranty_start":""<br />
},<br />
"AssetTypeFieldMapping":{<br />
"h_name":"[assetTag]",<br />
"h_mac_address":"[macAddress]",<br />
"h_net_ip_address":"[netIpAddress]",<br />
"h_net_computer_name":"[netComputerName]",<br />
"h_net_win_domain":"[netWinDomRole]",<br />
"h_model":"[model]",<br />
"h_manufacturer":"[manufacturer]",<br />
"h_cpu_info":"[ProcessorName]",<br />
"h_description":"[assetTag] ([model])",<br />
"h_last_logged_on":"",<br />
"h_last_logged_on_user":"[lastLoggedOnUser]",<br />
"h_memory_info":"[memoryInfo]",<br />
"h_net_win_dom_role":"",<br />
"h_optical_drive":"",<br />
"h_os_description":"[osDescription]",<br />
"h_os_registered_to":"",<br />
"h_os_serial_number":"",<br />
"h_os_service_pack":"[osServicePack]",<br />
"h_os_type":"[osType]",<br />
"h_os_version":"[osVersion]",<br />
"h_physical_disk_size":"[physicalDiskSize]",<br />
"h_serial_number":"[serialNumber]",<br />
"h_cpu_clock_speed":"[cpuClockSpeed]",<br />
"h_physical_cpus":"[physicalCpus]",<br />
"h_logical_cpus":"[logicalCpus]",<br />
"h_bios_name":"[biosName]",<br />
"h_bios_manufacturer":"[biosManufacturer]",<br />
"h_bios_serial_number":"",<br />
"h_bios_release_date":"",<br />
"h_bios_version":"",<br />
"h_max_memory_capacity":"",<br />
"h_number_memory_slots":"",<br />
"h_net_name":"",<br />
"h_subnet_mask":""<br />
}<br />
</code><br />
<br />
===InstanceConfig===<br />
* "APIKey" - a Hornbill API key for a user account with the correct permissions to carry out all of the required API calls<br />
* "InstanceId" - the name of your Hornbill instance and can be found within the URL you use to navigate to it: live.hornbill.com/[instance name]/. E.g. if the URL you use to access your instance is live.hornbill.com/arescomputing/, then your instance id would be "arescomputing". Remember, '''this value is case sensitive'''. <br />
* "AssetIdentifier" - The Hornbill asset attribute that holds the unique asset identifier (so that the code can work out which asset records are to be inserted or updated)<br />
* "CSVAssetIdentifier" - The CSV column name that holds the unique asset identifier (so that the code can work out which asset records are to be inserted or updated)<br />
* "CSVCommaCharacter" - The field separator (single) character - if left out, the default character will be a comma.<br />
* "CSVLazyQuotes" - The ability to give the CSV reader a hint that the csv file might be using lazy quotes. Defaults to false.<br />
* "CSVFieldsPerRecord" - The ability to give the CSV reader a hint about the number of fields in each record. Defaults to 0, leaving the CSV reader to do the heavy lifting.<br />
* "CSVCarriageReturnRemoval" - Certain CSV exporting systems will add extra carriage returns as a record delimiter. This is expected not to be common, hence the setting is left out of the configuration files (it is added to conf_computerSystem.json only for completeness sake). IF not set, then the default value is false and no carriages returns will be stripped from the data. IF set to true, then all carriage returns (possibly even intended ones) will be stripped.<br />
* "LogSizeBytes" - The maximum size that the generated Log Files should be, in bytes. Setting this value to 0 will cause the tool to create one log file only and not split the results between multiple logs.<br />
<br />
===AssetTypes===<br />
* This is a list of Hornbill-specific asset types, and the CSV file that holds asset records of this type.<br />
* The left element contains the Asset Type Name, and the right contains the path and filename of the CSV file that holds the asset row data. Note: the Asset Type Name needs to match a correct Asset Type Name in your Hornbill Instance.<br />
<br />
===AssetGenericFieldMapping===<br />
* Maps data into the generic Asset record<br />
* Any value wrapped with [] will be populated with the corresponding column value from the CSV row<br />
* Any Other Value is treated literally as the written example:<br />
** "h_name":"[assetTag]", - the value of the assetTag column is taken from the CSV output and populated within this field<br />
** "h_description":"This is a description", - the value of "h_description" would be populated with "This is a description" for ALL imported assets<br />
** "h_site":"[site]", - When a string is passed to the h_site field, the script attempts to resolve the given site name against the Site entity, and populates this (and h_site_id) with the correct site information. If the site cannot be resolved, the site details are not populated for the Asset record being imported.<br />
** "h_owned_by":"[ownedById]" - when a valid Hornbill User ID (for a Full or Basic User) is passed to this field, the user is verified on your Hornbill instance, and the tool will complete the h_owned_by and h_owned_by_name columns appropriately.<br />
** "h_used_by":"[usedById]" - when a valid Hornbill User ID (for a Full or Basic User) is passed to this field, the user is verified on your Hornbill instance, and the tool will complete the h_used_by and h_used_by_name columns appropriately.<br />
** "h_company_name":"[CompanyName]" - when a valid Hornbill Company group name is passed to this field, the company is verified on your Hornbill instance, and the tool will complete the h_company_id and h_company_name columns appropriately.<br />
<br />
===AssetTypeFieldMapping===<br />
* Maps data in to the type-specific Asset record, so the same rules as AssetGenericFieldMapping<br />
<br />
==Command Line Parameters==<br />
<br />
* file - Defaults to `conf.json` - Name of the Configuration file to load<br />
* dryrun - Defaults to `false` - Set to True and the XMLMC for the creation and update of assets will not be called, and instead the generated XML for each asset will be dumped to the log file. This is to aid in debugging the initial connection information.<br />
* concurrent - defaults to 1, with a maximum of 10. Allows you to change the number of concurrent threads used to process the import. This can improve performance on slow imports, but using too many threads can have an effect on the performance of your Hornbill instance.<br />
<br />
==Testing Overview==<br />
<br />
If you run the application with the argument -dryrun=true then no assets will be created or updated - the XML used to create or update will be saved in the log file so you can ensure the CSV to Hornbill Asset Entity mappings are correct before running the import.<br />
<code><br />
goCSVAssetImport_x64.exe -dryrun=true -file=conf_computerSystem.json<br />
</code><br />
<br />
==Logging Overview==<br />
<br />
All logging output is saved in the log directory, in the same directory as the executable. The file name contains the date and time the import was run '''''Asset_Import_2015-11-06T14-26-13Z.log'''''<br />
<br />
==Trouble Shooting==<br />
<br />
===Common Error Messages===<br />
<br />
Below are some common errors that you may encounter in the log file and what they mean:<br />
* '' '''[ERROR] Error Decoding Configuration File:.....''' '' - this will be typically due to a missing quote (") or comma (,) somewhere in the configuration file. This is where an online JSON viewer/validator can come in handy rather than trawling the conf file looking for that proverbial needle in a haystack.<br />
<br />
=== Error Codes ===<br />
* '''100''' - Unable to create log File<br />
* '''101''' - Unable to create log folder<br />
* '''102''' - Unable to Load Configuration File<br />
<br />
== HTTP Proxies ==<br />
<br />
If you use a proxy for all of your internet traffic, the HTTP_PROXY Environment variable needs to be set. The https_proxy environment variable holds the hostname or IP address of your proxy server. It is a standard environment variable and like any such variable, the specific steps you use to set it depends on your operating system.<br />
<br />
For windows machines, it can be set from the command line using the following:<br />
<br><br />
<code><br />
set HTTP_PROXY=HOST:PORT<br />
</code><br />
<br><br />
Where "HOST" is the IP address or host name of your Proxy Server and "PORT" is the specific port number.<br />
<br />
==Scheduling Overview==<br />
<br />
===Windows===<br />
You can schedule the executable to run with any optional command line argument from Windows Task Scheduler.<br />
<br />
* Ensure the user account running the task has rights to goCSVAssetImport_x64.exe and the containing folder.<br />
* Make sure the Start In parameter contains the folder where goCSVAssetImport_x64.exe resides in otherwise it will not be able to pick up the correct path.<br />
<br />
<br />
[[Category:Integration]]</div>Victorshttps://wiki.hornbill.com/index.php?title=CSV_Asset_Import&diff=26197CSV Asset Import2021-01-21T10:08:30Z<p>Victors: /* InstanceConfig */</p>
<hr />
<div>=About the Hornbill CSV Asset Import Utility=<br />
<br />
The utility provides a simple, safe and secure way to create and update asset records on the Hornbill platform, by reading asset records from CSV files. The tool is designed to run behind your corporate firewall, read your asset data from CSV files accessible to the user account running this tool, then transform and load the records into your Hornbill instance. The tool connects to your Hornbill instance in the cloud over HTTPS/SSL, so as long as you have standard internet access then you should be able to use the tool without the need to make any firewall configuration changes. The tool supports both the initial bulk import as well as incremental adds and updates. You can schedule the tool to run periodically to perform the import/update tasks as required.<br />
<br />
==Open Source==<br />
<br />
The Asset Import Utility is provided open source under the [https://wiki.hornbill.com/index.php/The_Hornbill_Community_License_(HCL) Hornbill Community Licence] and can be found [https://github.com/hornbill/goCSVAssetImport Here] on GitHub<br />
<br />
==Installation Overview==<br />
<br />
===Windows Installation===<br />
<br />
* Download the [https://github.com/hornbill/goCSVAssetImport/releases/latest latest package] from GitHub<br />
* Extract zip into a folder you would like the application to run from e.g. `C:\asset_import\`<br />
* Populate a CSV file with asset data, and store in a folder or network location accessible to the user account running this tool<br />
* Open the configuration file of your choice ('''conf_computerSystem.json''') and add in the necessary configration<br />
* Open Command Line Prompt as Administrator<br />
* Change Directory to the folder with goCSVAssetImport_*.exe `C:\asset_import\`<br />
* Run the command:<br />
For Windows 32bit Systems: <br />
<code><br />
goCSVAssetImport_x86.exe -dryrun=true -file=conf_computerSystem.json<br />
</code><br />
<br />
For Windows 64bit Systems: <br />
<code><br />
goCSVAssetImport_x64.exe -dryrun=true -file=conf_computerSystem.json<br />
</code><br />
<br />
==Configuration Overview==<br />
<br />
Bundled with the release of this tool on Github is a configuration file named conf_computerSystem_demomapping.json. This should help in setting up your first import from CSV, and demonstrates how the CSV to Hornbill mappings work.<br />
<br />
The following configuration file overview contains the configuration elements required when importing Asset Types that belong to the AssetsComputer entity:<br />
<br />
<code><br />
"APIKey": "your_api_key_here",<br />
"InstanceId": "your_instance_name",<br />
"AssetIdentifier":"h_name",<br />
"CSVAssetIdentifier":"assetTag",<br />
"CSVCommaCharacter": ",",<br />
"CSVLazyQuotes": false,<br />
"CSVFieldsPerRecord": 0,<br />
"CSVCarriageReturnRemoval": false,<br />
"LogSizeBytes":1000000,<br />
"AssetTypes": {<br />
"Desktop": "\\\\path\\to\\csv\\assetcomputer_desktops.csv"<br />
},<br />
"AssetGenericFieldMapping":{<br />
"h_name":"[assetTag]",<br />
"h_site":"[site]",<br />
"h_asset_tag":"[assetTag]",<br />
"h_acq_method":"",<br />
"h_actual_retired_date":"",<br />
"h_beneficiary":"",<br />
"h_building":"[building]",<br />
"h_company_name:"[companyName]",<br />
"h_cost":"",<br />
"h_cost_center":"",<br />
"h_country":"",<br />
"h_created_date":"",<br />
"h_deprec_method":"",<br />
"h_deprec_start":"",<br />
"h_description":"[description]",<br />
"h_disposal_price":"",<br />
"h_disposal_reason":"",<br />
"h_floor":"[floor]",<br />
"h_geo_location":"",<br />
"h_invoice_number":"",<br />
"h_location":"",<br />
"h_location_type":"",<br />
"h_maintenance_cost":"",<br />
"h_maintenance_ref":"",<br />
"h_notes":"[notes]",<br />
"h_operational_state":"",<br />
"h_order_date":"",<br />
"h_order_number":"",<br />
"h_owned_by":"[ownedById]",<br />
"h_product_id":"",<br />
"h_received_date":"",<br />
"h_residual_value":"",<br />
"h_room":"",<br />
"h_scheduled_retire_date":"",<br />
"h_supplier_id":"",<br />
"h_supported_by":"",<br />
"h_used_by":"[usedById]",<br />
"h_version":"",<br />
"h_warranty_expires":"",<br />
"h_warranty_start":""<br />
},<br />
"AssetTypeFieldMapping":{<br />
"h_name":"[assetTag]",<br />
"h_mac_address":"[macAddress]",<br />
"h_net_ip_address":"[netIpAddress]",<br />
"h_net_computer_name":"[netComputerName]",<br />
"h_net_win_domain":"[netWinDomRole]",<br />
"h_model":"[model]",<br />
"h_manufacturer":"[manufacturer]",<br />
"h_cpu_info":"[ProcessorName]",<br />
"h_description":"[assetTag] ([model])",<br />
"h_last_logged_on":"",<br />
"h_last_logged_on_user":"[lastLoggedOnUser]",<br />
"h_memory_info":"[memoryInfo]",<br />
"h_net_win_dom_role":"",<br />
"h_optical_drive":"",<br />
"h_os_description":"[osDescription]",<br />
"h_os_registered_to":"",<br />
"h_os_serial_number":"",<br />
"h_os_service_pack":"[osServicePack]",<br />
"h_os_type":"[osType]",<br />
"h_os_version":"[osVersion]",<br />
"h_physical_disk_size":"[physicalDiskSize]",<br />
"h_serial_number":"[serialNumber]",<br />
"h_cpu_clock_speed":"[cpuClockSpeed]",<br />
"h_physical_cpus":"[physicalCpus]",<br />
"h_logical_cpus":"[logicalCpus]",<br />
"h_bios_name":"[biosName]",<br />
"h_bios_manufacturer":"[biosManufacturer]",<br />
"h_bios_serial_number":"",<br />
"h_bios_release_date":"",<br />
"h_bios_version":"",<br />
"h_max_memory_capacity":"",<br />
"h_number_memory_slots":"",<br />
"h_net_name":"",<br />
"h_subnet_mask":""<br />
}<br />
</code><br />
<br />
===InstanceConfig===<br />
* "APIKey" - a Hornbill API key for a user account with the correct permissions to carry out all of the required API calls<br />
* "InstanceId" - This is the name of your Hornbill instance and can be found within the URL you use to navigate to it: live.hornbill.com/[instance name]/. E.g. if the URL you use to access your instance is live.hornbill.com/arescomputing/, then your instance id would be "arescomputing". Remember, '''this value is case sensitive'''. <br />
* "AssetIdentifier" - The Hornbill asset attribute that holds the unique asset identifier (so that the code can work out which asset records are to be inserted or updated)<br />
* "CSVAssetIdentifier" - The CSV column name that holds the unique asset identifier (so that the code can work out which asset records are to be inserted or updated)<br />
* "CSVCommaCharacter" - The field separator (single) character - if left out, the default character will be a comma.<br />
* "CSVLazyQuotes" - The ability to give the CSV reader a hint that the csv file might be using lazy quotes. Defaults to false.<br />
* "CSVFieldsPerRecord" - The ability to give the CSV reader a hint about the amount of fields in each record. Defaults to 0, leaving the CSV reader to do the heavy lifting.<br />
* "CSVCarriageReturnRemoval" - Certain CSV exporting systems will add extra carriage returns as a record delimiter. This is expected not to be common, hence the setting is left out of the configuration files (it is added to conf_computerSystem.json only for completeness sake). IF not set, then the default value is false and no carriages returns will be stripped from the data. IF set to true, then all carriage returns (possibly even intended ones) will be stripped.<br />
* "LogSizeBytes" - The maximum size that the generated Log Files should be, in bytes. Setting this value to 0 will cause the tool to create one log file only and not split the results between multiple logs.<br />
<br />
===AssetTypes===<br />
* This is a list of Hornbill-specific asset types, and the CSV file that holds asset records of this type.<br />
* The left element contains the Asset Type Name, and the right contains the path and filename of the CSV file that holds the asset row data. Note: the Asset Type Name needs to match a correct Asset Type Name in your Hornbill Instance.<br />
<br />
===AssetGenericFieldMapping===<br />
* Maps data into the generic Asset record<br />
* Any value wrapped with [] will be populated with the corresponding column value from the CSV row<br />
* Any Other Value is treated literally as the written example:<br />
** "h_name":"[assetTag]", - the value of the assetTag column is taken from the CSV output and populated within this field<br />
** "h_description":"This is a description", - the value of "h_description" would be populated with "This is a description" for ALL imported assets<br />
** "h_site":"[site]", - When a string is passed to the h_site field, the script attempts to resolve the given site name against the Site entity, and populates this (and h_site_id) with the correct site information. If the site cannot be resolved, the site details are not populated for the Asset record being imported.<br />
** "h_owned_by":"[ownedById]" - when a valid Hornbill User ID (for a Full or Basic User) is passed to this field, the user is verified on your Hornbill instance, and the tool will complete the h_owned_by and h_owned_by_name columns appropriately.<br />
** "h_used_by":"[usedById]" - when a valid Hornbill User ID (for a Full or Basic User) is passed to this field, the user is verified on your Hornbill instance, and the tool will complete the h_used_by and h_used_by_name columns appropriately.<br />
** "h_company_name":"[CompanyName]" - when a valid Hornbill Company group name is passed to this field, the company is verified on your Hornbill instance, and the tool will complete the h_company_id and h_company_name columns appropriately.<br />
<br />
===AssetTypeFieldMapping===<br />
* Maps data in to the type-specific Asset record, so the same rules as AssetGenericFieldMapping<br />
<br />
==Command Line Parameters==<br />
<br />
* file - Defaults to `conf.json` - Name of the Configuration file to load<br />
* dryrun - Defaults to `false` - Set to True and the XMLMC for the creation and update of assets will not be called, and instead the generated XML for each asset will be dumped to the log file. This is to aid in debugging the initial connection information.<br />
* concurrent - defaults to 1, with a maximum of 10. Allows you to change the number of concurrent threads used to process the import. This can improve performance on slow imports, but using too many threads can have an effect on the performance of your Hornbill instance.<br />
<br />
==Testing Overview==<br />
<br />
If you run the application with the argument -dryrun=true then no assets will be created or updated - the XML used to create or update will be saved in the log file so you can ensure the CSV to Hornbill Asset Entity mappings are correct before running the import.<br />
<code><br />
goCSVAssetImport_x64.exe -dryrun=true -file=conf_computerSystem.json<br />
</code><br />
<br />
==Logging Overview==<br />
<br />
All logging output is saved in the log directory, in the same directory as the executable. The file name contains the date and time the import was run '''''Asset_Import_2015-11-06T14-26-13Z.log'''''<br />
<br />
==Trouble Shooting==<br />
<br />
===Common Error Messages===<br />
<br />
Below are some common errors that you may encounter in the log file and what they mean:<br />
* '' '''[ERROR] Error Decoding Configuration File:.....''' '' - this will be typically due to a missing quote (") or comma (,) somewhere in the configuration file. This is where an online JSON viewer/validator can come in handy rather than trawling the conf file looking for that proverbial needle in a haystack.<br />
<br />
=== Error Codes ===<br />
* '''100''' - Unable to create log File<br />
* '''101''' - Unable to create log folder<br />
* '''102''' - Unable to Load Configuration File<br />
<br />
== HTTP Proxies ==<br />
<br />
If you use a proxy for all of your internet traffic, the HTTP_PROXY Environment variable needs to be set. The https_proxy environment variable holds the hostname or IP address of your proxy server. It is a standard environment variable and like any such variable, the specific steps you use to set it depends on your operating system.<br />
<br />
For windows machines, it can be set from the command line using the following:<br />
<br><br />
<code><br />
set HTTP_PROXY=HOST:PORT<br />
</code><br />
<br><br />
Where "HOST" is the IP address or host name of your Proxy Server and "PORT" is the specific port number.<br />
<br />
==Scheduling Overview==<br />
<br />
===Windows===<br />
You can schedule the executable to run with any optional command line argument from Windows Task Scheduler.<br />
<br />
* Ensure the user account running the task has rights to goCSVAssetImport_x64.exe and the containing folder.<br />
* Make sure the Start In parameter contains the folder where goCSVAssetImport_x64.exe resides in otherwise it will not be able to pick up the correct path.<br />
<br />
<br />
[[Category:Integration]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Auto_Tasks&diff=25198Auto Tasks2020-10-22T15:35:17Z<p>Victors: </p>
<hr />
<div>{{bluebanner|[[Main Page|Home]] > [[Integration]] > [[Business Process Automation & Orchestration]] > Auto Tasks|[[:Category:Integration|Index]]}}<br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
==Introduction==<br />
Auto Tasks provide the ability to execute processes from [[Custom Buttons]] on different entity views in apps on the Hornbill platform. Auto tasks are similar to business processes, however differ in that they do not contain stages, can't be paused, don't use tasks or approvals, or have options for the process to be suspended. When executed the Auto Task processes will simply start > Execute > End. An Auto Task process can contain many process nodes and can execute many actions from a single custom button. Auto Task processes can be configured using the [[Auto Task Designer]]<br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
* [[Auto Task Designer]]<br />
* [[Custom Buttons]]<br />
* [[Service_Manager_Request_Types|Requests]]<br />
* [[Manage_Assets|Assets]]<br />
* [[Documents]]<br />
|}<br />
<br />
<br />
==Configuration==<br />
{{#ev:youtube|878alZjEWLA|350|right}}<br />
<br />
* Auto Tasks if enabled by an app on the Hornbill platform, will be accessible to configure via the admin console > Applications > [App] > Auto Tasks.<br />
<br />
* Auto Tasks processes can be configured against different entities in each different app. Ensure you choose the appropriate entity you wish to create the Auto Task process against from the drop down.<br />
<br />
* Auto Tasks can be configured to be invoked from [[Custom Buttons]] on entity views in the different line of business applications.<br />
:* Auto Task processes will only be visible to invoke if the process is validated and marked as active.<br />
:* Auto Task processes will only be visible to invoke if the process is created for the relevant entity (see "Apps & Entities" section). <br />
<br />
<br />
<br />
==Roles==<br />
<br />
* '''Business Process Manager''' - This role will enable a user to configure Auto Tasks against entities in an application from the admin console.<br />
* '''Form Designer''' - This role will enable a user to configure a custom button to invoke an Auto Task from a custom button on an entity view.<br />
:* Visibility of the custom buttons, from which an Auto Task process can be invoked is configurable per custom button on each entity view.<br />
<br />
'''Please note''' in order to add auto task processes to a custom button you will need to create a new custom security role, level of '''user''' and assign it rights to the following database table - '''h_sys_custombutton_config'''. Any user who is required to configure custom buttons to add auto task processes will need to be assigned this custom role. This custom role will become redundant in a future Hornbill update.<br />
<br />
==Apps & Entities==<br />
<br />
Auto Task processes can be configured, and invoked via custom buttons on the following apps and entity views.<br />
<br />
* Service Manager<br />
:* Requests<br />
:* Assets<br />
<br />
* Document Manager<br />
:* Documents <br />
<br />
'''Note:''' on creation, the default entity for an Auto Task process is set to "Global". This value needs to be changed to a relevant entity for the process to be available for selection when designing custom buttons.<br />
<br />
<br />
[[Category:Integration]][[Category:Videos]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Auto_Tasks&diff=25197Auto Tasks2020-10-22T15:30:49Z<p>Victors: </p>
<hr />
<div>{{bluebanner|[[Main Page|Home]] > [[Integration]] > [[Business Process Automation & Orchestration]] > Auto Tasks|[[:Category:Integration|Index]]}}<br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
==Introduction==<br />
Auto Tasks provide the ability to execute processes from [[Custom Buttons]] on different entity views in apps on the Hornbill platform. Auto tasks are similar to business processes, however differ in that they do not contain stages, can't be paused, don't use tasks or approvals, or have options for the process to be suspended. When executed the Auto Task processes will simply start > Execute > End. An Auto Task process can contain many process nodes and can execute many actions from a single custom button. Auto Task processes can be configured using the [[Auto Task Designer]]<br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
* [[Auto Task Designer]]<br />
* [[Custom Buttons]]<br />
* [[Service_Manager_Request_Types|Requests]]<br />
* [[Manage_Assets|Assets]]<br />
* [[Documents]]<br />
|}<br />
<br />
<br />
==Configuration==<br />
{{#ev:youtube|878alZjEWLA|350|right}}<br />
<br />
* Auto Tasks if enabled by an app on the Hornbill platform, will be accessible to configure via the admin console > Applications > [App] > Auto Tasks.<br />
<br />
* Auto Tasks processes can be configured against different entities in each different app. Ensure you choose the appropriate entity you wish to create the Auto Task process against from the drop down.<br />
<br />
* Auto Tasks can be configured to be invoked from [[Custom Buttons]] on entity views in the different line of business applications.<br />
:* Auto Task processes will only be visible to invoke if the process is validated and marked as active.<br />
:* Auto Task processes will only be visible to invoke if the process is created against the relevant entity (see "Apps & Entities" section).<br />
<br />
<br />
<br />
==Roles==<br />
<br />
* '''Business Process Manager''' - This role will enable a user to configure Auto Tasks against entities in an application from the admin console.<br />
* '''Form Designer''' - This role will enable a user to configure a custom button to invoke an Auto Task from a custom button on an entity view.<br />
:* Visibility of the custom buttons, from which an Auto Task process can be invoked is configurable per custom button on each entity view.<br />
<br />
'''Please note''' in order to add auto task processes to a custom button you will need to create a new custom security role, level of '''user''' and assign it rights to the following database table - '''h_sys_custombutton_config'''. Any user who is required to configure custom buttons to add auto task processes will need to be assigned this custom role. This custom role will become redundant in a future Hornbill update.<br />
<br />
==Apps & Entities==<br />
<br />
Auto Task processes can be configured, and invoked via custom buttons on the following apps and entity views.<br />
<br />
* Service Manager<br />
:* Requests<br />
:* Assets<br />
<br />
* Document Manager<br />
:* Documents <br />
<br />
<br />
<br />
<br />
[[Category:Integration]][[Category:Videos]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Azure_User_Import&diff=24257Azure User Import2020-06-10T14:43:59Z<p>Victors: /* Configuration Overview */</p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
{| style="width:100%"<br />
|[[Main_Page|Home]] > [[Integration]] > [[Hornbill Open Integration Tools]] > Azure User Import<br />
|style="text-align:right;"|<br />
|}<br />
</div><br />
== About the Hornbill Azure User Import Utility ==<br />
The utility provides a simple, safe and secure way to create user accounts on the Hornbill platform by synchronizing with accounts held in your Azure AD. The tool is designed to run behind your corporate firewall, connect to your Azure instance, query the required account information, transform and load into the Hornbill instance. The tool connects to the Hornbill and Azure instances in the cloud over HTTPS/SSL so as long as you have standard internet access then you should be able to use tool without the need to make any firewall configuration changes. The tool supports both the initial bulk import as well as incremental adds and updates. You can schedule the tool to run periodically to perform the import/update tasks as required.<br />
<br />
The utility employs the Azure Graph API to query the contents of Azure AD. If you would like to know more about this API and it's capabilities, please refer to the relevant Microsoft documentation: [https://docs.microsoft.com/en-gb/azure/active-directory/develop/active-directory-graph-api '''Azure Graph API Information''']<br />
<br />
The last utility using the Azure Graph API is version 1.4.4 [https://github.com/hornbill/goAzure2HUserImport/tree/v1.4.4 (download from GitHub)]<br />
<br />
As of '''v2.0.0''' the utility uses the Microsoft Graph API instead. Please refer to [https://docs.microsoft.com/en-gb/graph/ '''Microsoft Graph API Information''']. Please note that you will likely need to set a different set of permissions AND generate a new ClientSecret for the changes to take effect.<br />
<br />
Prior to '''v2.3.0''' the documentation is different and [[Special:Permalink/20877|can be found here]]<br />
<br />
=== Open Source ===<br />
<br />
The Azure User Import Utility is provided open source under the [https://wiki.hornbill.com/index.php/The_Hornbill_Community_License_(HCL) Hornbill Community Licence] and can be found [https://github.com/hornbill/goAzure2HUserImport here] on GitHub<br />
<br />
== Installation Overview ==<br />
<br />
=== Windows Installation ===<br />
* Download the architecture specific [https://github.com/hornbill/goAzure2HUserImport/releases/latest latest package] from GitHub <br />
* Extract zip into a folder you would like the application to run from e.g. '''C:\Hornbill_Import\'''<br />
* Open '''conf.json''' and add in the necessary configration<br />
* Open Command Line Prompt as Administrator<br />
* Change Directory to the folder with azure_user_import.exe '''C:\Hornbill_Import\'''<br />
* Run the command azure_user_import.exe -dryrun=true<br />
<br />
== HTTP Proxies ==<br />
<br />
If you use a proxy for all of your internet traffic, the HTTP_PROXY Environment variable needs to be set. The https_proxy environment variable holds the hostname or IP address of your proxy server. It is a standard environment variable and like any such variable, the specific steps you use to set it depends on your operating system.<br />
<br />
For windows machines, it can be set from the command line using the following:<br />
<br><br />
<code><br />
set HTTP_PROXY=HOST:PORT<br />
</code><br />
<br><br />
Where "HOST" is the IP address or host name of your Proxy Server and "PORT" is the specific port number.<br />
<br />
=== URLs to White List ===<br />
<br />
Occasionally on top of setting the HTTP_PROXY variable the following URLs need to be white listed to allow access out to our network<br />
<br />
* https://files.hornbill.com/instances/INSTANCENAME/zoneinfo - Allows access to lookup your Instance API Endpoint<br />
* https://files.hornbill.co/instances/INSTANCENAME/zoneinfo - Backup URL for when files.hornbill.com is unavailable<br />
* https://eurapi.hornbill.com/INSTANCENAME/xmlmc/ - This is your Instance API Endpoint, eurapi can change so you should use the endpoint defined in the previous URL<br />
* https://api.github.com/repos/hornbill/goAzure2HUserImport/tags - '''Optional''' Allows access to check for the latest version of the Import Tool<br />
<br />
== Configuration Overview ==<br />
Prior to configuring the .json file, it is advisable to read the following wiki page regarding [[users|'''Hornbill User Accounts''']] as it will provide some context to the content on this page.<br />
<br><br />
<br><br />
A default configuration file is provided conf.json, if a configuration file is not specified as a command line argument then conf.json must exist.<br />
<br />
{<br />
"APIKey": "", /* this is the API-key which is associated to a user in the Hornbill instance [1] */<br />
"InstanceId": "", /* your Hornbill instance name : not likely to change */<br />
"AzureConf": {<br />
"Tenant": "",<br />
"ClientID": "", /* [2] */<br />
"ClientSecret": "",<br />
"UserFilter": "startswith(displayName,'Dave')",<br />
"UserProperties": [<br />
"employeeId",<br />
"mailNickname",<br />
"department"<br />
],<br />
"UserID": "mail",<br />
"Debug": false,<br />
"APIVersion":"v1.0",<br />
"Search":"groups",<br />
"UsersByGroupID":[<br />
{<br />
"ObjectID":"Group Object ID",<br />
"Name":"Group Object Name"<br />
},<br />
{<br />
"ObjectID":"Second Group Object ID",<br />
"Name":"Second Group Object Name"<br />
}<br />
]<br />
},<br />
"User": {<br />
"UserDN": "&#123;&#123;.keysearch&#125;&#125;"<br />
,"AccountMapping":{ /* mapping of fields in the format: "Field in Hornbill": "data to insert" [4] */<br />
"UserID":"&#123;&#123;.mail&#125;&#125;",<br />
"LoginID":"&#123;&#123;.mail&#125;&#125;",<br />
"EmployeeID":"&#123;&#123;.mail&#125;&#125;",<br />
"UserType":"basic", /* (basic vs user) */<br />
"Name":"&#123;&#123;.givenName&#125;&#125; &#123;&#123;.surname&#125;&#125;",<br />
"Password":"", /* if left blank a random password will be generated [7] */<br />
"FirstName":"&#123;&#123;.givenName&#125;&#125;",<br />
"LastName":"&#123;&#123;.surname&#125;&#125;",<br />
"JobTitle":"",<br />
"Site":"1", /* if set, see also comments below on SiteLookup [8] */<br />
"Phone":"&#123;&#123;.telephoneNumber&#125;&#125;",<br />
"Email":"&#123;&#123;.mail&#125;&#125;",<br />
"Mobile":"",<br />
"AbsenceMessage":"",<br />
"TimeZone":"",<br />
"Language":"",<br />
"DateTimeFormat":"",<br />
"DateFormat":"",<br />
"TimeFormat":"",<br />
"CurrencySymbol":"",<br />
"CountryCode":"" /* expects ISO 3166 Alpha 2 two Character Country Code */<br />
},<br />
"Type":{<br />
"Action":"Create" /* options : Create/Update/Both ; setting to Basic User (as opposed to Full User) */<br />
},<br />
"Status":{<br />
"Action":"Both", /* options : Create/Update/Both ; on what action to change the User Account Status */<br />
"Value":"active" /* options : active/suspended/archived */<br />
},<br />
"Role":{<br />
"Action":"Both" /* options : Create/Update/Both ; on what action to change the User Role */<br />
, "Roles":[ /* list of Roles assigned to the users being imported */<br />
"Basic User Role"<br />
]<br />
},<br />
"ProfileMapping":{ /* further fields [5] */<br />
"MiddleName":"",<br />
"JobDescription":"",<br />
"Manager":"&#123;&#123;.manager&#125;&#125;", /* full name of manager. If set, see also comments below on UserManagerMapping */<br />
"WorkPhone":"",<br />
"Qualifications":"",<br />
"Interests":"",<br />
"Expertise":"",<br />
"Gender":"",<br />
"Dob":"",<br />
"Nationality":"",<br />
"Religion":"",<br />
"HomeTelephone":"&#123;&#123;.telephoneNumber&#125;&#125;",<br />
"SocialNetworkA":"",<br />
"SocialNetworkB":"",<br />
"SocialNetworkC":"",<br />
"SocialNetworkD":"",<br />
"SocialNetworkE":"",<br />
"SocialNetworkF":"",<br />
"SocialNetworkG":"",<br />
"SocialNetworkH":"",<br />
"PersonalInterests":"",<br />
"homeAddress":"",<br />
"PersonalBlog":"",<br />
"Attrib1":"1",<br />
"Attrib2":"2",<br />
"Attrib3":"3",<br />
"Attrib4":"4",<br />
"Attrib5":"5",<br />
"Attrib6":"6",<br />
"Attrib7":"7",<br />
"Attrib8":"8"<br />
}<br />
, "Manager":{<br />
"Action": "Both" /* options : Create/Update/Both ; on what action to change the User's Manager */<br />
, "Value": "&#123;&#123;.mgrfirstname&#125;&#125; &#123;&#123;.mgrlastname&#125;&#125;" /* full name of manager. If set, see also comments below on User Manager Mapping */<br />
, "Options": {<br />
"GetStringFromValue": {<br />
"Regex" : ""<br />
, "Reverse": false<br />
}<br />
, "MatchAgainstDistinguishedName": false<br />
, "Search": {<br />
"Enable": true /* options : true/false ; turn this on or off */<br />
, "SearchField": ""<br />
}<br />
}<br />
}<br />
, "Image":{<br />
"Action":"Both" /* options : Create/Update/Both ; on what action to change the Image */<br />
, "UploadType": "AZURE" /* options : URI/URL/AZURE ; local (network) drive or HTTP(S) served image */<br />
, "InsecureSkipVerify": false<br />
, "ImageType": "jpg" /* options : jpg/png */<br />
, "URI": "&#123;&#123;.userPrincipalName&#125;&#125;"<br />
}<br />
, "Site":{<br />
"Action":"Both" /* options : Create/Update/Both ; on what action to change the User's Site */<br />
, "Value": "&#123;&#123;.physicalDeliverOfficeName&#125;&#125;"<br />
}<br />
, "Org":[ /* Organisational Units to associate the imported user with [6] */<br />
{<br />
"Action":"Both" /* options : Create/Update/Both ; on what action to add to the organisational structure */<br />
, "value":"&#123;&#123;.department&#125;&#125;" /* name of organisational unit */<br />
, "MemberOf":""<br />
, "Options": {<br />
"Type":2, /* options : 0,...,5 ; type of organisational unit, respectively: general/team/department/costcenter/division/company */<br />
"Membership":"member", /* options : member/teamLeader/manager */<br />
"TasksView":false, /* options : true/false ; If set true, then the user can view tasks assigned to this group */<br />
"TasksAction":false, /* options : true/false ; If set true, then the user can action tasks assigned to this group */<br />
"OnlyOneGroupAssignment":false<br />
}<br />
}<br />
, {<br />
"Action":"Both"<br />
, "value":"Great Company"<br />
, "MemberOf":""<br />
, "Options": {<br />
"Type":5,<br />
"Membership":"member",<br />
"TasksView":false,<br />
"TasksAction":false,<br />
"OnlyOneGroupAssignment":false /* options: true/false ; if set to true, then a user can only be associated to a single group at any one time */<br />
}<br />
}<br />
]<br />
}<br />
}<br />
<br />
<br />
# An API key is set up against a user within Hornbill (accessed through: Administration > System > Organisationl Data > Users).<br />
# There are instructions on-line on how to obtain the ClientID and ClientSecret<br />
# The fields are quite self-explanatory and part of the "Details"-section (as opposed to the "About"-section [5]), most can be left as-is. The mapping is done with some templating of the format &#123;&#123;fieldname&#125;&#125;. One can be a little adventurous, for instance "&#123;&#123;.mgrfirstname&#125;&#125; - &#123;&#123;.mgrlastname&#125;&#125;" puts a space, hyphen and space between the person's manager's first and last name. One can use this to prefix or suffix the values coming from the database or indeed to set a static value (as done for example with userType and Attribute under OrgLookup for the company (Type:5)).<br />
# The same holds here as for [4], this is regarding the "About"-section of the user's details.<br />
# this is a non-ordered list of the organisation structure - it allows one to associate the imported user to one or more levels within the organisation. The delivered configuration file will associate each imported user with EACH of the three discernable levels (company, department and division) - depending on your requirements regarding the availability of services and such, you will likely want to manipulate this section and perhaps only leave behind the "department" level (Type: 2) with the TasksView and TasksAction set accordingly. Please note that this import only adds and not REMOVES any association.<br />
# The password field should be left empty as the utility generates a secure password that adheres to the User Password Policy as specified on your Hornbill instance. This password will only be temporary as the user should use the "Forgot Password" link available on the Hornbill Login Screen to reset their password the first time they navigate to your Hornbill instance.<br />
# "Site" - Recognises a corresponding Hornbill site ID. E.g. "Site":"1" - The value of Site should be numeric. As an alternative, the import configuration provides a "Site Lookup" section (outlined in a later section) which can make a site association based on the contents of a directory attribute.<br />
<br><br />
<br><br />
=== Filtering ===<br />
There are two methods of filtering users that you can configure with this tool. They are both defined in the '''AzureConf''' section of the configuration.<br />
<br />
To import all direct User objects within one or more Azure Groups:<br />
* AzureConf > Search : set the value of this parameter to '''groups'''<br />
* AzureConf > UsersByGroupID : this is a JSON array of Groups to return Users from:<br />
** ObjectID : the Object ID of the Group you want to return direct member Users from;<br />
** Name : The Name of the Group<br />
<br />
Using an Azure AD filter to find Users to import:<br />
* AzureConf > Search : set the value of this parameter to '''users'''<br />
* AzureConf > UserFilter : define an Azure filter to search for User objects. If not defined, then all User objects from your Azure AD will be returned.<br />
<br />
=== Fields ===<br />
These fields are those which Azure AD recognise as part of an account (eg givenName) they match LDAP variables quite nicely. However, please keep in mind that although for instance multiple email addresses can be set in Azure, only the main one in ''mail'' can be used (unless one makes amendments to the script)<br />
<br />
====Associating a Site to Hornbill User Accounts====<br />
The DB Import utility has the ability to associate a Hornbill Site record to a user account based on the contents of a field. This is achieved through a "Look-up". The Look up mechanism is quite simple and works in the following manner. <br />
# The import reads the fields (template rules work) that is specified in the "value" field. In the example shown, the '''site''' field is used.<br />
# It takes the content and tries to identify if there is an existing site record in Hornbill with a name that matches the value of the site. e.g. if the site field contained "Brussels", the import would look for a Hornbill Site record with the name "Brussels".<br />
# If a match is found, the import will associate the user to the site.<br />
# If no site record is found, the import will move onto the next user.<br />
i.e. The name of the Site record in Hornbill must match the value of the directory attribute specified. More on Hornbill Sites can be found here: [[Sites|'''Sites''']]<br />
<br><br />
<br><br />
====Associating a Group to Hornbill User Accounts====<br />
The DB Import has the ability to associate a Hornbill Group to a user account based on the contents of a fieldname. This is achieved through a "Look-up". The Look up mechanism is quite simple and works in the following manner. <br />
# The utility reads the attribute that is specified in the orgLookup section. In the example shown, the '''department''' field is used.<br />
# It takes the content and tries to identify if there is a Hornbill Group that exists with a name that matches the value of the field name. e.g. if the '''department''' field contained "Accounting", the utility would look for a Hornbill Group called "Accounting".<br />
# If a match is found, the import will associate the user to the group.<br />
# If no Hornbill organisation is found, the import will move onto the next user.<br />
i.e. The name of the Organization(Group) in Hornbill must match the value of the database field. More on Hornbill Organisational Groups can be found here: [[Organisation|'''Organisation Structure<br />
<br><br />
<br><br />
====User Manager Mapping in Hornbill====<br />
Hornbill can store a manager relationship between two users in Hornbill. The manager look up mechanism works as follows:<br />
# The import reads the contents of the value attribute which will contain the some text identifying the manager eg "''mgrfirstname mgrlastname''"<br />
# IF a regex it given, then this first will be applied to the data obtained above.<br />
# The import is hard-coded to remove any slash and comma in the result.<br />
# With the "Reverse" option enabled, the above string would be reversed to give: "''mgrlastname mgrfirstname''"<br />
# The import tries to match this value against an existing Hornbill user by looking up the "Handle" field i.e. h_name.<br />
<br />
== Preparing to Run the Import ==<br />
Ultimately, the executable will be scheduled in Windows task scheduler (see later) but to test, gain confidence, and perform the initial upload of users the utility can be executed from a command prompt window on an ad-hoc basis. The command used to execute the import can contain a number of command line parameters.<br />
* dryrun - Defaults to '''''false''''' - Set to True and the XMLMC for Create and Update users will not be called and instead the XML will be dumped to the log file, this is to aid in debugging the initial connection information.<br />
* file - Defaults to '''''conf.json''''' - Name of the Configuration file to load<br />
* zone - Defaults to '''''eur''''' - Allows you to change the ZONE used for creating the XMLMC EndPoint URL: <nowiki>https://{ZONE}api.hornbill.com/{INSTANCE}/</nowiki><br />
* workers - Defaults to `3` - Allows you to change the number of worker threads used to process the import, this can improve performance on slow import but using too many workers have a detriment to performance of your Hornbill instance.<br />
* debug - Defaults to '''''false''''' - outputs extra information to the log to help with debugging issues.<br />
<br />
== Testing Overview ==<br />
There is no substitute for hands-on experience when becoming familiar with the Hornbill import utilities. <br />
<br><br />
The Azure User import accepts and understands a number of "Command Line Parameters" that can be used when running the utility from the command line. The most important one for testing is the '''-dryrun=true''' command. When this is specified, no information will be written to Hornbill and it allows you to confirm that the configuration is correct and that a connection to your directory server can be established. A dryrun still outputs a log file which provides you with an opportunity to review and understand any error messages that may occur.<br />
<br><br />
Below are some high level steps to help you build confidence in your configuration:<br />
<br><br />
<br><br />
# In the configuration, specify an "UserFilter" to target a single user object. (Its good practice to initially test on a single, or small set of, user objects as this allows the dryruns to complete quicker and there is less log content to sift through).<br />
# Perform a dryrun (by executing the utility along with the -dryrun=true command line parameter).<br />
# Review cmd output and log file for errors<br />
# Check against "Common Error Messages" listed on the wiki and take action to rectify where necessary.<br />
# Continue with dryrun tests until you are happy that all the errors are accounted for.<br />
# Perform a live import with this single user object still specified i.e. set -dryrun=false<br />
# Review user account in Hornbill and check all user properties are as expected i.e. email contains an email address etc.<br />
# Adjust conf file user property mappings as necessary<br />
# Loop through steps 6 - 8 as many times as is necessary until you are happy with the information being transported into the Hornbill user account properties.<br />
# Amend the "UserFilter" and/or the scope of the "Search" variable to target the user objects required for a full import.<br />
# Perform a dryrun<br />
# Review cmd output and log file for errors<br />
# Check against "Common Error Messages" listed on the wiki and take action to rectify where necessary.<br />
# Continue with dryrun tests until you are happy that all the errors are accounted for.<br />
<br><br />
Example command line:<br />
<code><br />
azure_user_import.exe -dryrun=true<br />
</code><br />
<br />
<br />
=== What Hornbill Roles are needed for the Import to Complete Successfully? ===<br />
A default role is delivered with Hornbill that is designed to be used in conjunction with our range of user import utilities. The security role is called '''User Import''' and has all the necessary rights to import / update user properties. <br />
<br />
As you may now be aware, every action within Hornbill must be performed in the context of a user account. As well as the chosen user account possessing the "user Import" role which facilitates the importing of the user accounts and updating of the user properties, this user account must posses the roles that you are associating to imported user accounts via the import utility.<br />
The above comment about roles is referring to Hornbill's security model when it comes to associating roles to user accounts, which is: ''Hornbill is designed to only allow the association of roles if the User who is performing the assignment of a particular role already possess the same system/application rights among the roles that they themselves possess.'' This security measure prevents you inflating your own rights or giving a user more rights than you have yourself. <br />
<br />
i.e. in addition to the "User Import" role, any roles you try and assign to the user accounts being imported must be assigned to the user account logging in and running the import.<br />
<br />
<br />
==Trouble Shooting==<br />
=== Logging Overview ===<br />
<br />
All Logging output is saved in the "log" directory which can be found in the same location as the executable. The file name contains the date and time the import was run '''''Azure_User_Import_2015-11-06T14-26-13Z.log'''''<br />
===Common Error Messages===<br />
<br />
Below are some common errors that you may encounter in the log file and what they mean:<br />
* ''' ''[ERROR] Error Decoding Configuration File:.....'' ''' - this will be typically due to a missing quote (") or comma (,) somewhere in the configuration file. This is where an online JSON viewer/validator can come in handy rather than trawling the conf file looking for that proverbial needle in a haystack.<br />
* ''' ''[ERROR] Get https://api.github.com/repos/hornbill/goAzure2HUserImport/tags: dial tcp xx.xx.xx.xx:xxx: ........'' ''' - this most likely indicates that you have a HTTP proxy server on your network between the host running the executable and your Hornbill API endpoint. Ensure the http_proxy environment variable is set (See the section on "HTTP Proxies" for more information) and that the proxy is configured to allow this communication.<br />
* ''' ''panic: runtime error: invalid memory address or nil pointer deference [recovered]...'' ''' - this error is suggesting an incorrectly specified attribute in the conf file. Where information is being obtained from a directory attribute, the attribute must be in the following format: ''<nowiki>{{.directoryAttributeName}}</nowiki>''<br />
* ''' ''[ERROR] Unable to Create User: Invalid value for parameter '[parameter name]': The text size provided (31 characters) is greater than the maximum allowable size of 20 characters for column [column name]'' ''' - the contents of your directory attribute exceed the maximum number of characters that can be placed in the Hornbill database column.<br />
* ''' ''[ERROR] Unable to Create User: The value in element <userId> did not meet the required input pattern constraints. at location '/methodCall/params/userId' '' ''' - the user id contains characters that are not allowed. The User Id should be made up of alphanumeric characters. Full stops (.) and underscores (_) are also supported.<br />
* ''' ''[ERROR] Unable to Create User: [usedID] Error: The specified handle [Display Name] is already in use'' ''' - By default, the "Handle" (Hornbill Display Name) must be unique. This error suggests a user account already exists in Hornbill which is using this handle. The duplicate-handle validation can be disabled via a setting found in Hornbill Adminsitration under "''Home > System > Advanced Settings''" and filtering for "''api.xmlmc.uniqueUserHandle.enable''"<br />
* ''' ''[ERROR] Unable to Update User: Invalid value for parameter '[parameter name]': Error setting value for column '[column name]'. bad lexical cast: source type value could not be interpreted as target'' ''' - this error is indicating that the contents of your directory attribute are in a format that is not compatible with the type of the Hornbill database column. For example, you will get this when trying to place text into a database field that is of type "INT" (accepts integer values only).<br />
* ''' ''[ERROR] Unable to Load LDAP Attribute: '[LDAP attribute name]' For Input Param: '[Hornbill Parameter name]' '' ''' - When the import utility is unable to load a particular LDAP attribute, this means that the attribute field in your directory does not contain a value. This error will not prevent the user account being created or updated in Hornbill and can be considered more as a warning rather than an outright failure or problem.<br />
* ''' ''[ERROR] Unable to Set User Status [status name]: You have reached your user subscription limit of [xx], you will need to expand your subscription level if you wish to add more users'' ''' - The utility is trying to update the user status of an existing user account from an inactive status (i.e. "archived" or "suspended") to "active" however in order for this to be successful you must have some subscriptions available.<br />
<br />
=== Error Codes ===<br />
* '''100''' - Unable to create log File<br />
* '''101''' - Unable to create log folder<br />
* '''102''' - Unable to Load Configuration File<br />
<br />
== Scheduling Overview ==<br />
<br />
=== Windows ===<br />
You can schedule .exe to run with any optional command line argument from Windows Task Scheduler.<br />
* Ensure the user account running the task has rights to Azure2UserImport.exe and the containing folder.<br />
* Make sure the Start In parameter contains the folder where the executable resides in, otherwise it will not be able to pick up the correct path. eg:<br />
<br />
[[File:Ldap_import_schedule.png]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Service_Manager_Notification_Settings&diff=24256Service Manager Notification Settings2020-06-10T11:46:16Z<p>Victors: /* Email Notification Prerequisites */</p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
__NOTOC__[[Main Page|Home]] > [[Administration]] > [[Service Manager]] > [[Service_Manager_Settings|Settings]] > Notification Settings<br />
</div><br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
==Introduction==<br />
<br />
Service Manager provides the ability to compliment the Hornbill Collaboration notifications with application specific notifications for analysts. <br />
<br />
Notification options can be globally controlled and configured in Hornbill administration under '''''Home > Service Manager > Settings''''', or Service Manager analysts can be given the rights to configure their own notification preferences. <br />
<br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
:* [[My_Profile_Settings|User Notification Settings]]<br />
:* [[Service Manager Settings]]<br />
:* [[Email Templates]]<br />
:* [[Email Administration]]<br />
|}<br />
<br />
==User Defined Notification Settings==<br />
By Default global notification settings are applied, and this is detailed in this page below.<br />
<br />
If preferred a Hornbill administrator can enable the '''guest.app.requests.notification.allowUserDefinedNotificationType''' setting, which will disable the global notification settings and each Service Manager analyst will be able to set their preferences from their Profile > Settings > Notification view. <br />
<br />
* When enabling the user defined notifications, the current global notification settings will be applied to all Service Manager subscribers, and users will need to manage their own.<br />
* If email notification options are chosen by users, all existing email templates defined for global notification settings will continue to be used.<br />
<br />
== Email Notification Prerequisites ==<br />
If you plan on including emails as part of your notifications the following settings need to be configured first.<br />
<br />
:* '''guest.app.requests.notification.emailMailbox''' <br />
:: It is necessary to specify the ID of the Hornbill Shared Mailbox (e.g. helpdesk) from which the notifications will originate.<br />
:* '''guest.app.requests.notification.emailDomain''' <br />
:: This application setting must contain the domain from which the notifications will be sent. The domain specified must match an existing outbound mail route that you have configured in Hornbill<br />
:* '''guest.app.requests.notification.emailPrefix''' <br />
:: It is necessary to specify the email prefix to be used when sending application generated email notifications from the instance. Default value is '''noreply'''. This works in conjunction with '''guest.app.requests.notification.emailDomain''' and will represent the email address from which notifications will be sent.<br />
<br><br />
Note: Email notifications for users on customer/service portal updates and approval emails are sent using a direct method, they do not use any mailbox. The originating email address for these emails is '''guest.app.requests.notification.emailPrefix'''@'''guest.app.requests.notification.emailDomain''' meaning the resulting email address must be correct and valid. All other notifications are sent via the mailbox using the one configured on '''guest.app.requests.notification.emailMailbox'''.<br />
<br />
== Notification Types ==<br />
It is possible to choose different types of notification for each of the functional areas listed below.<br />
[[File:SMNotificationOptions.png|right|300px|link=https://wiki.hornbill.com/images/c/c0/SMNotificationOptions.png]]<br />
:* '''Email Only''' <br />
:: Analysts will receive an email notification<br />
:* '''Hornbill Only'''<br />
:: Analysts will receive a Hornbill notification accessible through the web and native mobile interfaces<br />
:* '''Both''' <br />
:: Analysts will receive both an email and Hornbill notification<br />
:* '''None''' <br />
:: No notifications will be used (This is the default setting)<br />
<BR><br />
<br />
== Notification Settings ==<br />
<br />
=== Assignment / Reassignment ===<br />
Use these settings to notify request owners and team members of request assignments<br />
<br />
:* '''Notification Type'''<br />
::* '''''guest.app.requests.notification.notificationType.assignment''''' <br />
::: Notifications will be sent to the individual analyst when a request is assigned to them.<br />
::* '''''guest.app.requests.notification.notificationType.assignmentTeam'''''<br />
::: Notifications will be sent to all members of a team if a request is assigned to their team without an owner<br />
<br />
:* '''Email Template Settings'''<br />
::* '''''guest.app.requests.notification.emailTemplate.analystAssignment'''''<br />
::: Use this setting to specify the email template to use when ''guest.app.requests.notification.notificationType.assignment'' is set to use email notifications<br />
::* '''''guest.app.requests.notification.emailTemplate.groupAssignment'''''<br />
::: Use this setting to specify the email template to use when ''guest.app.requests.notification.notificationType.assignmentTeam'' is set to use email notifications<br />
<br />
=== Cancelled Request ===<br />
Used these settings to notify request owners and team members of a cancelled request<br />
<br />
:* '''Notification Type'''<br />
::* '''''guest.app.requests.notification.notificationType.cancel'''''<br />
::: Notification type for the owner that a cancelled request is assigned to<br />
::* '''''guest.app.requests.notification.notificationType.cancelTeam'''''<br />
::: Notification type for the team that a cancelled request is assigned to, when there is no owner assigned<br />
<br />
=== Customer Feedback ===<br />
Use these settings to notify support staff that the feedback for a request has been submitted by the customer<br />
<br />
:* '''Notification Type'''<br />
::* '''''guest.app.requests.notification.notificationType.feedbackSubmitted'''''<br />
::: Set the notification type that is sent to the owner of the request<br />
::* '''''guest.app.requests.notification.notificationType.feedbackSubmittedTeam'''''<br />
::: Set the notification type that is sent to the team, if there is no owner.<br />
<br />
:* '''Email Template Settings'''<br />
::* '''''guest.app.requests.notification.emailTemplate.analystFeedbackSubmitted'''''<br />
::: Use this setting to specify the email template to use when ''guest.app.requests.notification.notificationType.feedbackSubmitted'' is set to use email notifications<br />
::* '''''guest.app.requests.notification.emailTemplate.teamFeedbackSubmitted'''''<br />
::: Use this setting to specify the email template to use when ''guest.app.requests.notification.notificationType.feedbackSubmittedTeam'' is set to use email notifications<br />
<br />
=== Email Update ===<br />
Used these settings to notify the request owner or team members when a request has been updated by an incoming email, either automatically using the Routing Rules, or manually.<br />
:* '''Notification Type'''<br />
::* '''''guest.app.requests.notification.notificationType.emailUpdate''''' <br />
::: Notifications will be sent to the individual analyst if a request which is assigned to them is updated via email <br />
::* '''''guest.app.requests.notification.notificationType.emailUpdateTeam'''''<br />
::: Notifications will be sent to all members of a team if a request which is assigned to them is updated via email<br />
<br />
=== Linked Request Resolved / Closed ===<br />
Notification settings for request owners and team members when their request has been resolved or closed by a linked request<br />
<br />
:* '''Notification Types'''<br />
::* '''''guest.app.requests.notification.notificationType.analystLinkedRequestResolveAction'''''<br />
::: Notification type for the owner of a resolved or closed linked request<br />
::* '''''guest.app.requests.notification.notificationType.teamLinkedRequestResolveAction'''''<br />
::: Notification type for the team that a resolved or closed linked request belongs to<br />
<br />
=== Members ===<br />
Settings for notifications when using the Members feature on a Request<br />
:* '''Notification Types'''<br />
::* '''''guest.app.requests.notification.notificationType.members'''''<br />
::: Notifications will be sent to the individual analyst if a new member is added to a request which is assigned to them.<br />
::* '''''guest.app.requests.notification.notificationType.membersTeam'''''<br />
::: Notifications will be sent to all members of a team if a new member is added to a request which is assigned to them.<br />
::* '''''guest.app.requests.notification.notificationType.membersRecipient'''''<br />
::: Notifications will be sent to the individual members who are added to a request.<br />
<br />
=== Portal Update ===<br />
These settings will notify the request owner or team members when a customer updates a request using one of the portals<br />
:* '''Notification Types'''<br />
::* '''''guest.app.requests.notification.notificationType.portalUpdate'''''<br />
::: Notifications will be sent to the individual analyst if a customer updates a request via the Customer or Service portals.<br />
::* '''''guest.app.requests.notification.notificationType.portalUpdateTeam'''''<br />
::: Notifications will be sent to all members of a team if a customer updates a request via the Customer or Service portals.<br />
<BR><br />
<br />
==Email Notification Templates==<br />
<br />
If using the Email Only or Both notification options for any of the functional areas, it is possible to configure the email templates which are sent. Default email templates are provided for each of the following functions:<br />
<br />
:* '''Resolve Linked Request Owner''' (ResolutionNotification)<br />
:* '''Close Linked Request Owner''' (ResolutionNotification)<br />
:* '''Resolve Linked Request Team'''' (ResolutionTeamNotification)<br />
:* '''Close Linked Request Team''' (ResolutionTeamNotification)<br />
:* '''Analyst Email Update''' (AnalystEmailUpdateNotification)<br />
:* '''Team Email Update''' (TeamEmailUpdateNotification)<br />
:* '''Analyst Request Member Added''' (AnalystRequestMemberAddedNotification)<br />
:* '''Team Request Member Added''' (TeamRequestMemberAddedNotification)<br />
:* '''Member Added to Request''' (RequestMemberAddedNotification)<br />
<br />
[[File:Notifications_Email.png|center|600px]]<br />
<br />
:* It is possible to change the email template which is used for each different notification type by configuring a different email template for each setting.<br />
::* If there is no email template option for a notification setting visible, then the email template is hard coded for example Cancel notifications.<br />
<br />
::* It is possible to edit the content of the above email templates if required from the administration console under '''Home > System > Email > Templates > Service Manager > Requests'''.<br />
<br />
==Email Escalation Notifications==<br />
<br />
In addition to the notification options described above, it is also possible to configure email notifications for escalation actions against Service Level Targets. The configuration for these is covered in the following section: [[Escalation_Actions|'''Service Level Escalation Notifications''']]<br />
<br />
[[Category:Administration]][[Category:Service Manager]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Mapping_Fields_from_Customised_Forms&diff=24211Mapping Fields from Customised Forms2020-06-04T10:07:27Z<p>Victors: /* Why would I use field mapping? */</p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
__NOTOC__[[Main Page|Home]] > [[Administration]] > [[Progressive Capture Designer]] > Mapping Fields from Customised Forms<br />
</div><br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
== Introduction ==<br />
<br />
Any information captured in customised forms results in the question and answer to be visible on the request form in a '''Questions''' collapsable section. Custom forms also support field mapping which is a mechanism that allows us to write the information to the main request table.<br />
<br />
===Why would I use field mapping?===<br />
<br />
Field mapping is desirable for two reasons:<br />
:# to make the answers to custom questions more accessible for reporting (i.e. Measures, Widgets, Reports).<br />
:# to make the answers to custom questions available in email templates.<br />
<br />
The information gathered in a progressive capture custom form is stored in a table h_itsm_questions and is intended to act as a sort of audit history displaying what information was provided at the point the request was logged. This is why the questions section is not editable.<br />
<br><br />
<br />
The way the data is stored in the table h_itsm_questions does not offer us much flexibility when it comes to reporting and also means is not accessible via the email template variable picker. The exercise of field mapping ensures the data is written to h_itsm_requests (the main request table) which means it is readily available.<br />
<br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
:* [[Customised_Forms|Customised forms]] <br />
:* [[Request_Details_Form_Designer|Request Details Form Designer]]<br />
|}<br />
<br />
== Configuring a Custom Field for Mapping ==<br />
When creating a custom question on a customised form, each question requires a Field ID and it is here that the mapping can be performed. When defining the Field ID, if you use any of the following values, the answer to this question will be mapped to the database column you have specified. <br />
<br />
[[File:Mapping_Custom_Fields.png|400px|thumb|<div align="center">'''Field mapping takes place when a supported database column name is specified as the field id of a custom field.'''</div>]]<br />
<br />
===Which Database Columns Support Field Mapping?===<br />
<br />
To map a custom form answer to one of the supported database columns, the form field ID need to be set using the following format '''h_custom_a''' or appropriate column you would like to map to. The table below lists all the database columns that support field mapping and the type of content that they can hold.<br />
<br><br />
{| class="wikitable" width="70%" style="text-align: left"<br />
<br />
! width = "180px" | Available Columns<br />
! width = "220px" | Data Type/Capacity<br />
! width = "600px%" | Description<br />
<br />
|-<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_summary<br />
| <!-- Data Type/Capacity --> VARCHAR/255 characters<br />
| <!-- Description --> The Summary field of a request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_description<br />
| <!-- Data Type/Capacity --> TEXT/unlimited*<br />
| <!-- Description --> The description field of a request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_site<br />
| <!-- Data Type/Capacity --> VARCHAR/64 characters<br />
| <!-- Description --> The site field for a request<br />
|-<br />
| align = "left" |<!-- Column Name --> h_custom_a - h_custom_o<br />
| <!-- Data Type/Capacity --> VARCHAR/255 characters<br />
| <!-- Description --> ''VARCHAR'' custom fields a - o each suitable for holding up to 255 characters of any type.<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_custom_p - h_custom_t<br />
| <!-- Data Type/Capacity --> TEXT/unlimited*<br />
| <!-- Description --> ''TEXT'' custom fields p - t each suitable for holding large amounts of text characters of any type.<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_custom_21 - h_custom_25<br />
| <!-- Data Type/Capacity --> DATETIME/a single date-time stamp<br />
| <!-- Description --> ''DATETIME'' custom fields 21 - 25 each suitable for holding a single date-time stamp (YYYY-MM-dd HH:mm:ss). These columns should ONLY be used in conjunction with a date-time picker.<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_custom_26 - h_custom_30<br />
| <!-- Data Type/Capacity --> INTEGER/any whole number <br />
| <!-- Description --> ''INTEGER'' custom fields 26 - 30 each suitable for holding whole numbers. When mapping to these columns, ensure the following RegEx is specified in your Custom field settings: ''[0-9]''<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_custom_31 - h_custom_40<br />
| <!-- Data Type/Capacity --> TEXT/unlimited*<br />
| <!-- Description --> ''TEXT'' custom fields 31 - 40 each suitable for holding large amounts of text characters of any type.<br />
<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_backout_plan<br />
| <!-- Data Type/Capacity --> Text/Unlimited*<br />
| <!-- Description --> The Back Out Plan of a Change or Release Request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_support_plan<br />
| <!-- Data Type/Capacity --> Text/Unlimited*<br />
| <!-- Description --> The Support Plan of a Change or Relase Request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_communication_plan<br />
| <!-- Data Type/Capacity --> Text/Unlimited*<br />
| <!-- Description --> The Communication Plan of a Change or Release Request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_test_plan<br />
| <!-- Data Type/Capacity --> Text/Unlimited*<br />
| <!-- Description --> The Test Plan of a Change or Release Request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_implementation_plan<br />
| <!-- Data Type/Capacity --> Text/Unlimited*<br />
| <!-- Description --> The Implementation Plan of a Change or Release Request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_security_implications<br />
| <!-- Data Type/Capacity --> Text/Unlimited*<br />
| <!-- Description --> The Security Implications of a Change or Release Request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_change_justification<br />
| <!-- Data Type/Capacity --> Text/Unlimited*<br />
| <!-- Description --> The Change Justification a Change Request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_release_justification<br />
| <!-- Data Type/Capacity --> Text/Unlimited*<br />
| <!-- Description --> The Change Justification a Release Request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_release_plan<br />
| <!-- Data Type/Capacity --> Text/Unlimited*<br />
| <!-- Description --> The Release Plan for a Release Request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_disruption_level<br />
| <!-- Data Type/Capacity --> VarChar/255 Characters<br />
| <!-- Description --> The Disruption Level of a Change or Release Request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_change_category <br />
| <!-- Data Type/Capacity --> VarChar/100 Characters<br />
| <!-- Description --> The Category of a Change Request<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_release_category <br />
| <!-- Data Type/Capacity --> VarChar/100 Characters<br />
| <!-- Description --> The Category of a Release Request<br />
|-<br />
| align = "left" |<!-- Column Name --> h_proposed_start_time<br />
| <!-- Data Type/Capacity --> DATETIME/a single date-time stamp<br />
| <!-- Description --> The Proposed Start date/time of the a Change or Release Request - (YYYY-MM-dd HH:mm:ss). These columns should ONLY be used in conjunction with a date-time picker<br />
<br />
|-<br />
| align = "left" |<!-- Column Name --> h_proposed_end_time<br />
| <!-- Data Type/Capacity --> DATETIME/a single date-time stamp<br />
| <!-- Description --> The Proposed End date / time of the a Change or Relase Request - (YYYY-MM-dd HH:mm:ss). These columns should ONLY be used in conjunction with a date-time picker<br />
<br />
|}<br />
unlimited* - TEXT fields have a maximum capacity of 65000 characters.<br />
<br><br />
<br><br />
<br />
===Considerations===<br />
<br />
* When specifying the column you wish to map to in your custom form id, '''this value is case sensitive'''. e.g. ''h_summary'' will acheive the desired mapping but ''h_'''S'''ummary'' will fail to pull any values through. Ensure that the mapped value is written in lower case.<br />
* When the option of ''value / display'' is offered (e.g. in a static drop-down list) it is the '''display''' value that will be mapped to the column.<br />
* If the Default '''Request Details''' form is used in your progressive capture flow, and you try to map to h_summary or h_description, the values will not overwrite or be written to the summary or description fields i.e. the standard "Request Details" form takes precedence, but the custom questions and answers will still be written to the '''Questions''' section on the request.<br />
* If the same mapping is used on different custom forms in your progressive capture flow, the first mapping will be written to the specified default field on the request, and any subsequent mapping to the same field will not overwrite this value, but will be written to the '''Questions''' section on the request.<br />
* When custom questions have been mapped, the question and answer are still available in the '''Questions''' section on a request as well as now being available in the mapped field. This restriction can be controlled via the application setting "guest.itsm.progressiveCapture.overwriteCustomFieldValue".<br />
* Once you have configured field mapping in your progressive capture custom forms, you may need to expose the mapped field on the request. See the [[Request_Details_Form_Designer|'''Request Details Form Designer''']] for more information.<br />
* When creating your email template, simply look for the '''custom''' options available from the variables drop down pick list. By selecting the required variable in your email template, this will pass through the answer from your custom question which has been mapped to the corresponding custom field.<br />
<br />
[[Category:Administration]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Service_Manager_Business_Process_Workflow&diff=23778Service Manager Business Process Workflow2020-05-21T08:20:48Z<p>Victors: /* Requests */</p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
__NOTOC__[[Main Page|Home]] > [[Administration]] > [[Service Manager Administration |Service Manager]] > Business Process Workflow<br />
</div><br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
== Introduction ==<br />
The Service Manager Business Process Workflow is used to automate the processing of the requests that have been raised. This page contains information on the Service Manager specific automated tasks that can be used in the [[Business Process Designer]] to build unique and powerful processes for your requests.<br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
:* [[Business Process Designer]]<br />
:* [[Request Variables]]<br />
|}<br />
<br />
==Boards==<br />
Use the Boards nodes to automatically add, move or remove a Request from an existing Board. Requests can be added to one or multiple Boards in Service Manager, and can be moved between Lists on specified Boards automatically.<br />
<br />
<!-- ******************************************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="AddCommentToBoard"></div><br />
* Add Comment To Board<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmaddcommenttoboard.png|thumb|link=https://wiki.hornbill.com/images/9/9e/Bpmaddcommenttoboard.png|Add Comment to a Board]]<br />
==== Add Comment To Board ====<br />
Use this node to manually add a Comment card to a Service Manager Board at the required stage in a process.<br />
==== Options ====<br />
:* '''Board'''<br />
:: The name of the Service Manager Board on which the Comment card will be added<br />
:* ''' List '''<br />
:: The name of the list from the above specified board to which the Comment card will be added<br />
:* '''Comment'''<br />
:: The actual comment, as it will appear on the card on the Board.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="addRequestToBoard"></div><br />
* Add Request to Board<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmaddrequesttoboard.png|thumb|link=https://wiki.hornbill.com/images/9/96/Bpmaddrequesttoboard.png |Add Request to Board]] <br />
==== Add Request to Board ====<br />
This operation will automatically add a request to a selected Service Manager Board or move a request from one list to another. This particularly works well on a Board where users have been given View Access only and the BPM takes control of all the card movements.<br />
==== Options ====<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''Board'''<br />
:: The name of the Service Manager Board on which the Request card will be added<br />
:* '''List'''<br />
:: The name of the list from the above specified board to which the Request card will be added<br />
<br><br />
<br><br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="AddUniqueIdForAnchor"></div><br />
* Remove Request from Board<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmremoverequestfromboard.png|thumb|link=https://wiki.hornbill.com/images/0/07/Bpmremoverequestfromboard.png|Remove Request from Board]] <br />
==== Remove Request from Board ====<br />
Use this option to remove a Request from a Service Manager Board at a specific stage in a process. <br />
==== Options ====<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''Board'''<br />
:: The name of the Service Manager Board from which the Request card will be removed.<br />
<br><br />
<br><br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************END OF OPERATION DOCUMENTATION************************************************** --><br />
<br />
==Change Requests==<br />
Use these nodes at any stage in a process to automate Change Request specific actions.<br />
<br />
<!-- ********************************START OF OPERATION DOCUMENTATION*************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="addToChangeCalendar"></div><br />
* Add to Change Calendar<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmaddtochangecalendar.png|thumb|link=https://wiki.hornbill.com/images/9/9e/Bpmaddtochangecalendar.png|Add to Change Calendar]]<br />
==== Add to Change Calendar ====<br />
Use this node to automatically add a change request to the Change Calendar. Use the configuration settings to set the start and end times for the change based on the time this node is invoked in the process. As an example if this node is the first action in a process, then it will use the log time as the Now time, and the Start and End times you configure will be based off that time. <br />
==== Options ====<br />
:* '''Request ID'''<br />
::This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to Auto<br />
:* '''Start Time From Now'''<br />
:: Set the ''Start Time'' for this change based on years, months, days, hours, or minutes from when this node is reached in the workflow<br />
:* '''End Time From Now'''<br />
:: Set the ''End Time'' for this change based on years, months, days, hours, or minutes from when this node is reached in the workflow<br />
:* '''Start Time (From Variable)<br />
:: Set the ''Start Time'' for this change from a BPM Variable<br />
:* '''End Time (From Variable)<br />
:: Set the ''End Time'' for this change from a BPM Variable<br />
:* '''Enforce Freeze Periods'''<br />
:: Set this to ensure that the Start or End Dates are not set within a Change Freeze Period<br />
:* '''Update Timeline'''<br />
:: Include a Timeline update on the request when this node has completed<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Remove from Change Calendar<br />
<div class="mw-collapsible-content"><br />
::ChangeRequests > Update > Remove from Change Calendar<br />
<br />
Use this node to automatically remove the Change from the Change Calendar. <br />
[[File:Remove_From_Calendar.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Change Type<br />
<div class="mw-collapsible-content"><br />
::ChangeRequests > Update > Change Type<br />
<br />
Use this node to update the Change Type <br />
[[File:Change_Type.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Schedule<br />
<div class="mw-collapsible-content"><br />
::ChangeRequests > Suspend > Wait for Resquest Schedule<br />
<br />
Use this node to pause the process and await the scheduling of the Change Request in the Change Calendar<br />
* Optional use the Action Focus option to focus the request on the '''Schedule''' action on the action bar, when awaiting this action.<br />
<br />
[[File:Suspend_await_schedule.png|600px]]<br />
</div><br />
</div><br />
<br />
==Problem Records==<br />
Use these nodes at any stage in a process to automate Problem Record specific actions.<br />
=== Suspend ===<br />
Use the Suspend Type if you wish to suspend the progress of the process until a defined action is performed manually on the Problem. Once selected, the following available ''Tasks'' can be selected.<br />
<br />
<!-- *******************************START OF OPERATION DOCUMENTATION******************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="waitForProblemWorkaround"></div><br />
* Wait for Workaround<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmwaitforproblemworkaround.png|thumb|link=https://wiki.hornbill.com/images/3/3b/Bpmwaitforproblemworkaround.png|Wait for Workaround]]<br />
<br />
==== Wait for Workaround ====<br />
Use this node to suspend the BPM Workflow and wait for a workaround to be added to the Problem Record.<br />
<br />
==== Options ====<br />
:* '''RequestID'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to Auto.<br />
:* '''Action Focus'''<br />
:: Sets the Action Item on a request that will be in focus when using this suspend node.<br />
:* '''Expire Period'''<br />
:: Set a date and time for which this operation will expire. When this date and time is reached, the BPM will automatically continue. An outcome of ''Expired'' will be provided to allow for a decision node to be place after this operation to determine how the expired operation will be managed.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
==Releases==<br />
Use this node at any stage in a process to automate Release specific actions.<br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Add to Change Calendar<br />
<div class="mw-collapsible-content"><br />
::Releases > Update > Add to Change Calendar<br />
<br />
Use this node to automatically add the Release to the Change Calendar. <br />
* Use the configuration settings to set the start and end times for the release based on the time this node is invoked in the process. As an example if this node is the first action in a process, then it will use the log time as the Now time, and the Start and End times you configure will be based off that time. <br />
<br />
[[File:Release_Add.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Remove from Change Calendar<br />
<div class="mw-collapsible-content"><br />
::Releases > Update Request > Remove from Change Calendar<br />
<br />
Use this node to automatically remove the Release from the Change Calendar. <br />
[[File:Release_Remove.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Release Type<br />
<div class="mw-collapsible-content"><br />
::Releases > Update Request > Release Type<br />
<br />
Use this node to update the Release Type <br />
[[File:Release_type.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Schedule<br />
<div class="mw-collapsible-content"><br />
::Releases> Suspend > Wait for Request Schedule<br />
<br />
Use this node to pause the process and await the scheduling of the Release in the Change Calendar<br />
* Optional use the Action Focus option to focus the request on the '''Schedule''' action on the action bar, when awaiting this action.<br />
<br />
[[File:Release_Schedule.png|600px]]<br />
</div><br />
</div><br />
<br />
==Request Connections==<br />
Use the Request Connections node at any stage in a process to automatically add additional contact's and or co-worker's to a request and define their connection type to the request. Other options include automatically emailing connections of different types, and removing one or all connections at any stage.<br />
<br />
<!-- *************************************** START OF NODE **************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="AddConnection"></div><br />
* Add Connection<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmaddconnection.png|thumb|link=https://wiki.hornbill.com/images/a/ae/Bpmaddconnection.png]]<br />
<br />
====Add Connection====<br />
Use this node to add a connection to a request<br />
:* '''Request ID'''<br />
::This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to Auto<br />
:* '''Connection Type'''<br />
:: By Default this will include interested and Impacted but will also show any custom Connection Types which have been defined in the Simple Lists, and '''requestConnectionType''' option. Use this option to define what relationship the Connection will have to the request.<br />
:* '''Co-worker''' <br />
:: Choose which internal user will be added as a connection to the request <br />
:* '''Contact''' <br />
:: Choose which external user will be added to a connection to the request<br />
:* '''Co-worker(From Variable)''' <br />
:: Use the user id (h_user_id) from the h_sys_accounts table, or from the variable picker and picking the value returned from the user picker in a progressive capture custom form. Be sure to use the ''Raw'' value from the progressive capture outcome and not the ''Display Name''<br />
:* '''Contact(From Variable)'''<br />
:: Use the contact id (h_pk_id) from the h_sys_contacts table or or from the variable picker and picking the value returned from the user picker in a progressive capture custom form. Be sure to use the ''Raw'' value from the progressive capture outcome and not the ''Display Name''<br />
:* '''Update Timeline'''<br />
:: Include a Timeline update on the request when this node has completed<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Email Connections<br />
<div class="mw-collapsible-content"><br />
::RequestConnections> Connections > Email Connections<br />
<br />
Use this node to email connections of the request. <br />
<br />
Configuration options include:<br />
<br />
:* '''Mailbox Name''' - Specify the mailbox from which the email will be sent<br />
:* '''Email Template''' - Specify the email template which will be sent<br />
:* '''Recipients''' - Specify if the email should be sent to '''All''' users, '''Internal''' users only, or '''External''' users only of the following '''Connection Type'''<br />
:* '''Connection Type''' - Specify which connection types should receive the email notification<br />
<br />
[[File:Connections_Email.png|600px]]<br />
<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Remove All Connections<br />
<div class="mw-collapsible-content"><br />
::RequestConnections> Connections > Remove All Connections<br />
<br />
Use this node to remove connections from the request. <br />
<br />
Configuration options include:<br />
<br />
:* '''Recipients''' - Specify if the connections to be removed should be '''All''' users, '''Internal''' users only, or '''External''' users only of the following '''Connection Type'''<br />
:* '''Connection Type''' - Specify which connection types should be removed from the request<br />
<br />
[[File:Connections_Remove_All.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Remove Connection<br />
<div class="mw-collapsible-content"><br />
::RequestConnections> Connections > Remove Connection<br />
<br />
Use this node to remove specific connections from the request. <br />
<br />
Configuration options include:<br />
<br />
:* '''Co-worker''' - Choose which internal user will be removed from the request <br />
:* '''Contact''' - Choose which external user will be removed from the request<br />
<br />
It is possible to remove a single Co-Worker and Contact from a request in a single node, but it is not mandatory to do so. <br />
<br />
[[File:Connections_Remove.png|600px]]<br />
</div><br />
</div><br />
<br />
==Request Members==<br />
<br />
Use the Request Members node at any stage in a process to automatically add or remove another analyst or subject matter expert into a Request.<br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Add Request Member<br />
<div class="mw-collapsible-content"><br />
::Members > Add Request Member<br />
<br />
Use this node to add Service Manager analysts to the request. This option allows you to automatically add additional analysts to the request to assist with the resolution or as interested parties.<br />
<br />
:* Members can be added even if they do not have the rights to view the request type, nor the requests which belong to the team against which the request belongs. The added Member's rights will be elevated just for the specific Request.<br />
:* Members can be notified about being added via Hornbill Notifications, and or email depending on the following Service Manager system setting: '''guest.app.requests.notification.notificationType.members'''<br />
<br />
[[File:at_requestMembers_members_addRequestMember_sept2019.png|600px]]<br />
<br />
:* '''Member''' - This option can contain the Co-worker to be added as a Request member. If supplied, "Member (From Variable)" option will be ignored.<br />
:* '''Member (From Variable)''' - This option can contain the Id of a Co-worker (h_user_id in h_sys_accounts table). This option should only be supplied if "Member" option is not set.<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Remove Request Member<br />
<div class="mw-collapsible-content"><br />
::Members > Remove Request Member<br />
<br />
Use this option to remove members from a request. <br />
<br />
:* Select which member to remove<br />
<br />
[[File:at_requestMembers_members_removeRequestMember_sept2019.png|600px]]<br />
<br />
:* '''Member''' - This option can contain the Co-worker to be removed from the Request members. If supplied, "Member (From Variable)" option will be ignored.<br />
:* '''Member (From Variable)''' - This option can contain the Id of a Co-worker (h_user_id in h_sys_accounts table). This option should only be supplied if "Member" option is not set.<br />
</div><br />
</div><br />
<br />
==Requests==<br />
<br />
==== Access Control ====<br />
<br />
Use the Access Control to lock or unlock the Details section or the Actions on a request. Only users with the appropriate application right (update locked requests) will be able to modify the details or use an Action once locked. This right has been added to the following roles: Incident Management Full Access, Change Management Full Access, Problem Management Full Access, Release Management Full Access, Service Request Full Access, and Service Desk Admin.<br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Lock / Unlock Request Actions<br />
<div class="mw-collapsible-content"><br />
::Requests > Access Control > Lock / Unlock Actions<br />
<br />
Locks or Unlocks the selected Actions on on a request. This includes sections that are associated to the actions<br />
<br />
:* '''Lock Update'''<br />
:: Prevents the manual adding of an update to the Timeline.<br />
:* '''Lock Callback'''<br />
:: Prevents the use of the Phone action<br />
:* '''Lock Attach'''<br />
:: Prevents the use of the Attach Action and the Attachments section of the request<br />
:* '''Lock Link'''<br />
:: Prevents the linking of requests to this request and stops the removal of linked requests in the requests section <br />
:* '''Lock Linked Services'''<br />
:: Prevents the linking of Services to this request and stops the removal of linked Services in the requests section <br />
:* '''Lock Email'''<br />
:: Prevents the sending of email <br />
:* '''Lock Change Customer''' <br />
:: Prevents the changing of the customer<br />
:* '''Lock Assign''' <br />
:: Prevents the request from being manually assigned or re-assigned<br />
:* '''Lock Connections'''<br />
:: Prevents further Connections from being added the removal of existing connections in the Connections section<br />
:* '''Lock Escalate'''<br />
:: Prevents the manual changing of the Priority<br />
:* '''Lock Asset'''<br />
:: Prevents the adding or removing of an asset<br />
:* '''Lock Workaround'''<br />
:: Prevents the accepting of a workaround being added on a Known Error<br />
:* '''Lock Publish'''<br />
:: Prevents the publishing of a Problem or Known Error record to the Self Service Portal<br />
:* '''Lock Board'''<br />
:: Prevents the request from being added to a board<br />
:* '''Lock Schedule'''<br />
:: Prevents the scheduling of a Change Request<br />
:* '''Lock Solution'''<br />
:: Prevents the ability to accept a solution provided to an Incident from a Problem or Known Error<br />
:* '''Lock Resolve'''<br />
:: Prevents a request from manually being resolved<br />
:* '''Lock Cancel'''<br />
:: Prevents a request from being cancelled <br />
:* '''System Timeline Update'''<br />
:: Use the provide System Timeline Update to show that a lock or unlock has taken place<br />
:* '''Manual Timeline Update'''<br />
:: Provide a custom Timeline Update message when a lock or unlock has taken place<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Lock Request Details<br />
<div class="mw-collapsible-content"><br />
::Requests > Access Control > Lock Request Details<br />
<br />
Locks the Details section of a request from this point on in the workflow. Only users that have the '''update locked requests''' application right assigned to one of their roles will be able to update the request details. <br />
<br />
[[File:accesscontrollock.png|600px]]<br />
<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Unlock Request Details<br />
<div class="mw-collapsible-content"><br />
::Requests > Access Control > Unlock Request Details<br />
<br />
Unlocks the Details section of a request from this point on in the workflow. All users that have access to the request will be able to edit the Details section of the request. <br />
<br />
[[File:accesscontrolunlock.png|600px]]<br />
<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
==== Assessment ====<br />
Use the Assessment node to instigate an Impact Assessment on a request<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Impact Assessment<br />
<div class="mw-collapsible-content"><br />
:Using this option will present an Impact Assessment option on the ''Escalate Action'' of a request. When selected a user will be taken through a number of defined questions, and determined by their responses, an impact level will be automatically applied to the request.<br />
<br />
:* '''Assessment'''<br />
:: The name of the assessment that you wish to run on the request<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
====Assignment====<br />
<br />
Use the Assignment node to automatically assign a request to different Service Manager users or teams.<br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Assign to Service Team<br />
<div class="mw-collapsible-content"><br />
::Requests > Assignment > Assign to Service Team<br />
<br />
Assign to Service Team assigns the request to the team that supports the service. If no team supports the service that the request is logged against then the request is not assigned. If more than one team supports the service, the request is assigned to the team that has supported the service the longest. This automated task does not assign the request to an individual within the team(s) supported by the service.<br />
<br />
[[File:Assign_Service_Team.png|600px]]<br />
<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Assign to Team * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="AssignToTeam"></div><br />
* Assign to Team<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmassigntoteam.png|thumb|link=https://wiki.hornbill.com/images/8/8a/Bpmassigntoteam.png|Assign to Team]]<br />
==== Assign to Team ====<br />
Use this option to assign the request to a specified team. <br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Team'''<br />
:: Select a team from the list of available teams that have been defined under the Organizational Data in Administration<br />
:* '''Team (From Variable)'''<br />
:: Assign to a Team based on a variable that has been populated using Progressive Capture or through the Get Information nodes<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' <br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Assign to Owner * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Assign to Owner<br />
<div class="mw-collapsible-content"><br />
::Requests > Assignment > Assign to Owner<br />
<br />
Use this option to assign the request to a specific Service Manager analyst.<br />
<br />
:* Define which team the request will be assigned to<br />
:* Define which analyst within the above team, the request will be assigned to<br />
<br />
[[File:Assign_To_Owner.png|600px]]<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="AssignToOwnerVariable"></div><br />
* Assign to Owner (variable)<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmassigntoteam.png|thumb|link=https://wiki.hornbill.com/index.php/File:Assign_To_Owner_Variable.png|Assign to Owner (variable)]]<br />
==== Assign to Owner (variable) ====<br />
Use this option to assign the request to a specific Service Manager analyst using a dynamic value provided by a runtime variable that has been populated using Progressive Capture or through the Get Information nodes <br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Team'''<br />
:: Select a team from the list of available teams that have been defined under the Organizational Data in Administration. <br />
:: If no team specified and if the designated owner is a member of multiple teams, the team that gets assigned will be the first team in a list of owner teams ordered by team name.<br />
:* '''Owner'''<br />
:: Assign to an analyst based on a variable that has been populated using Progressive Capture or through the Get Information nodes<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' <br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Assign to Request Creator<br />
<div class="mw-collapsible-content"><br />
::Requests > Assignment > Assign to Request Creator<br />
<br />
Use this option to automatically assign the request to the Service Manager analyst who created / raised the request via Progressive Capture<br />
<br />
[[File:Assign_Request_Creator.png|600px]]<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Assign to Most Available Analyst<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:Assign_Most_Available.png|thumb|link=https://wiki.hornbill.com/images/8/83/Assign_Most_Available.png|Assign to Most Available Analyst BPM Operation]]<br />
Using ''Assign to Most Available Analyst'' is a great way to automatically assign out requests to the members of a team. This operation works on the basis of capacity. The system will look through the members of the selected team and will assign the request to the member who has the least amount of open requests. If more than one team member have an equal number of open requests and have the least amount of assigned requests, the system will allocate the request to the team member who has had the greatest amount of time pass since their last assignment.<br />
<br />
The system will take into account the user status which is found on their profile. If the user status is set to anything other than 'Available' that user/analyst/team member will not be considered as a request owner<br />
<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''Team'''<br />
:: Select the team that you would like to participate in the Round Robin Assignment. This is a mandatory setting and must be set to Manual and have a team assigned.<br />
:* '''Include Offline Users'''<br />
:: This takes into account if the user is logged into Hornbill and have an active session. The default behavior (Auto) is to include offline users. Set this option to ''No'' if you don't want requests assigned to users that are not online. If all the team members are off-line, the request will be assigned to just the team.<br />
:* '''System Timeline Update''' <br />
::Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="RoundRobin"></div><br />
* Assign on Round Robin Basis<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmroundrobin.png|thumb|link=https://wiki.hornbill.com/images/4/41/Bpmroundrobin.png|Round Robin BPM Operation]]<br />
Using the ''Assign Round Robin'' is a great way to automatically assign out requests to the members of a team . The system will look through the members of the selected team and will assign the request to the member who has had the greatest amount of time pass since their last assignment. The system will take into account the user's status which is found on their profile. If the user's status is set to anything other than 'Available' that user will not be considered for assignment. This does not take into account the volume of requests assigned to each user.<br />
<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''Team'''<br />
:: Select the team that you would like to participate in the Round Robin Assignment. This is a mandatory setting and must be set to Manual and have a team assigned.<br />
:* '''Include Offline Users'''<br />
:: This takes into account if the user is logged into Hornbill and have an active session. The default behavior (Auto) is to include offline users. Set this option to ''No'' if you don't want requests assigned to users that are not online. In order for Round Robin to work effectively, users must become disciplined in logging off Hornbill via the User menu located to the top right. Simply closing the browser window does not end a users session. <br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' <br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
====Authorisation Decision====<br />
<br />
Use the Authorisation Decision node to mark on a Change or Service Request form if an authorisation decision has been made. <br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Approved<br />
<div class="mw-collapsible-content"><br />
::Requests > Authorisation Decision > Approved<br />
<br />
[[File:Authoirsation_Approved.png|600px]]<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Rejected<br />
<div class="mw-collapsible-content"><br />
::Requests > Authorisation Decision > Rejected<br />
[[File:Authorisation_Rejected.png|600px]]<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
====Collaboration====<br />
<br />
Use the Collaboration node to post an automated update onto a public workspace at any stage in a process. This will be visible to members of the specified workspace, on the timeline of the workspace and their Newsfeeds. <br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Comment on Existing Public Workspace Post<br />
<div class="mw-collapsible-content"><br />
::Requests > Collaboration > Comment on Existing Public Workspace Post<br />
<br />
Use this node should you wish to automate the adding of a comment to an existing Post in a workspace. <br />
* Using this node will always look to add the comment to the '''Most''' recent '''Post''' from the '''Request''' in the workspace.<br />
<br />
An example use case for this node, is to include the Comment Update after key milestones for a request > Logged, In progress, Resolved, Closed or Change Accepted, Scheduled, Implemented, Reviewed. This will allow members of the workspace to stay informed about request progress without the need to monitor lists or queues. <br />
* This node will only be applicable if the '''Post to Public Workspace''' Node has been used and a Post already exists from the request in a Workspace.<br />
<br />
:* Specify the name of the Workspace to post to<br />
:* Define the content for the post<br />
:* Define if the timeline of the Request should be updated<br />
<br />
[[File:Comment_on_a_public_post.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Comment on Request Source Post<br />
<div class="mw-collapsible-content"><br />
: Use this option when the source of the request is from a post in order to post a comment back to this source post.<br />
::Requests > Collaboration > Comment on Request Source Post<br />
<br />
:* Specify the content to be included in the comment<br />
:* Specify if you would like the Request ID and Summary to be included in the comment<br />
:* Define if the timeline of the Request should be updated<br />
<br />
[[File:Comment_on_a_public_post.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Post to Public Workspace<br />
<div class="mw-collapsible-content"><br />
::Requests > Collaboration > Post to Public Workspace<br />
<br />
Use this node should you wish to automate the '''Posting''' to a specific workspace, and to it's members at one or multiple points in your business process. This will allow you to post important information to Collaboration users pertaining to the request against which your business process is running.<br />
<br />
One example of it's use would be during a Change Request, to let interested parties / stakeholders (Workspace Members) know that the Change had been accepted, scheduled and would therefore be being deployed. The member's of the workspace may not be Service Manager subscribed users, but their Collaboration subscription would enable them to be kept informed about Change, Problem, or Major Incident notifications by receiving notifications about the automated '''Posting''' from this node to their workspaces. <br />
<br />
:* Specify the name of the Workspace to post to<br />
:* Define the content for the post<br />
:* Define if the request id will be included in the post<br />
:* Define if the request Summary will be included in the post<br />
:* Define if the post to the Workspace will be appended to the timeline of the request<br />
<br />
[[File:at_requests_collaboration_postToPublicWorkspace.png|600px]]<br />
</div><br />
</div><br />
<br />
====Email Notifications==== <br />
<br />
Use the Email Notification nodes to send email templates to different Request stakeholders. Configuration options include recipient, which email template to use and which mailbox to send the email from.<br />
<br />
<!-- ************************************************************************************************************** --><br />
<!-- * Email Contact * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="EmailContact"></div><br />
* Email Contact<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmemailcontact.png|thumb|link=https://wiki.hornbill.com/images/6/68/Bpmemailcontact.png|Email Contact]]<br />
====Email Contact ====<br />
Use this node to send an email to a contact that has a contact record stored in Hornbill<br />
====Options====<br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Contact'''<br />
:: Select a contact from the searchable pick list. Only contacts that have records stored in Hornbill will be available<br />
:* '''Mailbox Name'''<br />
:: Select the Hornbill Mailbox from which you want this sent. If this is not set, it will use the default mailbox for the Service that the request has been raised under<br />
:* '''Email From'''<br />
:: Select the email address that you want listed as the sender. <br />
:* '''Email Template Entity'''<br />
:: Select the Entity from which you want to use the associated Email Templates. For example select the Change Request Entity to use email templates that contain variables which are specific to this entity. Leave this as ''Auto'' to use the default ''Request'' entity.<br />
:* '''Email Template'''<br />
:: Select the email template that you want to use for this email<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Email Co-worker * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="EmailCo-worker"></div><br />
* Email Co-worker<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmemailcoworker.png|thumb|link=https://wiki.hornbill.com/images/b/b3/Bpmemailcoworker.png|Email Co-worker]]<br />
====Email Co-worker ====<br />
Use this node to send an email to a Co-worker that has a user account in Hornbill<br />
====Options====<br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Co-worker'''<br />
:: Select a Co-worker from the searchable pick list. Only Co-workers that have accounts in Hornbill will be available<br />
:* '''Co-worker (From Variable)<br />
:: Set a Co-worker from a variable<br />
:* '''Mailbox Name'''<br />
:: Select the Hornbill Mailbox from which you want this sent. If this is not set, it will use the default mailbox for the Service that the request has been raised under<br />
:* '''Email From'''<br />
:: Select the email address that you want listed as the sender. <br />
:* '''Email Template Entity'''<br />
:: Select the Entity from which you want to use the associated Email Templates. For example select the Change Request Entity to use email templates that contain variables which are specific to this entity. Leave this as ''Auto'' to use the default ''Request'' entity.<br />
:* '''Email Template'''<br />
:: Select the email template that you want to use for this email<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Email Customer * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="EmailCustomer"></div><br />
* Email Customer<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmemailcustomer.png|thumb|https://wiki.hornbill.com/images/2/23/Bpmemailcustomer.png|Email Customer]]<br />
<br />
====Email Customer ====<br />
Use this node to send an email to the customer that is associated to the request<br />
====Options====<br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Mailbox Name'''<br />
:: Select the Hornbill Mailbox from which you want this sent. If this is not set, it will use the default mailbox for the Service that the request has been raised under<br />
:* '''Email From'''<br />
:: Select the email address that you want listed as the sender. <br />
:* '''Email Template Entity'''<br />
:: Select the Entity from which you want to use the associated Email Templates. For example select the Change Request Entity to use email templates that contain variables which are specific to this entity. Leave this as ''Auto'' to use the default ''Request'' entity. <br />
:* '''Email Template'''<br />
:: Select the email template that you want to use for this email<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Email Customer's Manager * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="EmailCustomerManager"></div><br />
* Email Customer's Manager<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmemailcustomermanager.png|thumb|link=https://wiki.hornbill.com/images/9/9e/Bpmemailcustomermanager.png|Email Customer's Manager]]<br />
====Email Customer's Manager ====<br />
Use this node to send an email to the Manager of the customer that is associated to the request<br />
<br />
====Options====<br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Mailbox Name'''<br />
:: Select the Hornbill Mailbox from which you want this sent. If this is not set, it will use the default mailbox for the Service that the request has been raised under<br />
:* '''Email From'''<br />
:: Select the email address that you want listed as the sender. <br />
:* '''Email Template Entity'''<br />
:: Select the Entity from which you want to use the associated Email Templates. For example select the Change Request Entity to use email templates that contain variables which are specific to this entity. Leave this as ''Auto'' to use the default ''Request'' entity. <br />
:* '''Email Template'''<br />
:: Select the email template that you want to use for this email<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Email External Address * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="EmailExternalAddress"></div><br />
* Email External Address<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmemailexternal.png|thumb|link=https://wiki.hornbill.com/images/4/4a/Bpmemailexternal.png|Email External Address]]<br />
====Email External Address ====<br />
Use this node to send an email to one or more email addresses that are not available within Hornbill<br />
<br />
====Options====<br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''External Addresses'''<br />
:: Add one or more email addresses that are not held within Hornbill. Multiple email address must be separated by a comma<br />
:* '''Mailbox Name'''<br />
:: Select the Hornbill Mailbox from which you want this sent. If this is not set, it will use the default mailbox for the Service that the request has been raised under<br />
:* '''Email From'''<br />
:: Select the email address that you want listed as the sender. <br />
:* '''Email Template Entity'''<br />
:: Select the Entity from which you want to use the associated Email Templates. For example select the Change Request Entity to use email templates that contain variables which are specific to this entity. Leave this as ''Auto'' to use the default ''Request'' entity. <br />
:* '''Email Template'''<br />
:: Select the email template that you want to use for this email<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Email Request Owner * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="EmailOwner"></div><br />
* Email Request Owner<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmemailowner.png|thumb|link=https://wiki.hornbill.com/images/e/ea/Bpmemailowner.png|Email Request Owner]]<br />
<br />
====Email Request Owner ====<br />
Use this node to send an email to the owner of the request<br />
<br />
====Options====<br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Mailbox Name'''<br />
:: Select the Hornbill Mailbox from which you want this sent. If this is not set, it will use the default mailbox for the Service that the request has been raised under<br />
:* '''Email From'''<br />
:: Select the email address that you want listed as the sender. <br />
:* '''Email Template Entity'''<br />
:: Select the Entity from which you want to use the associated Email Templates. For example select the Change Request Entity to use email templates that contain variables which are specific to this entity. Leave this as ''Auto'' to use the default ''Request'' entity. <br />
:* '''Email Template'''<br />
:: Select the email template that you want to use for this email<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Get Request Information * --><br />
<!-- ************************************************************************************************************** --><br />
====Get Request Information====<br />
Use the Get Request Information node at any stage in a process and preceding another process node when you want to make the variables of the Request available. Variables may include Customer, Status, Site, Priority, or any Answers to Customer defined questions from different Progressive capture forms or attributes of the customer or organisation of the request the business process is running against.<br />
<br />
<!-- ******************************************************** Customer Details ********************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Customer Details<br />
<div class="mw-collapsible-content"><br />
::Requests > Get Request Information > Customer Details<br />
<br />
Use this option at the start of a stage or preceding a task / authorisation / decision node to load the Customer's organisations details (variables) into the stage, and to make them available to other node operations where you may wish to specify or refer to '''Variable''' values from the customer of the request.<br />
<br />
:* If you are using the decision node, and want to branch the process based on the Customers department, site, job title or any of the custom fields for the customer, you will need to use the Get Request Information > Customer Details node at the beginning of the stage, or before the decision node in order to see any variable values be available to evaluate against in the Custom Expression builder.<br />
<br />
[[File:Customer_Details.png|600px]]<br />
</div><br />
</div><br />
<br />
<!-- ******************************************************** Source Email Details ********************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Source Email Details<br />
<div class="mw-collapsible-content"><br />
::Requests > Get Request Information > Source Email Details<br />
<br />
When the origin of a Request is an email (i.e. raised via Routing Rules or Email View), this option can be used to retrieve the details of the email message. This includes FROM address, TO address, subject, content, date sent and date received. You can use the Variable Picker or the Expressions Builder to make a decision on the retrieved details.<br />
<br />
[[File:Source_Email_Details.png|600px]]<br />
</div><br />
</div><br />
<br />
<!-- ******************************************************** Organisation Details ********************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Organisation Details<br />
<div class="mw-collapsible-content"><br />
::Requests > Get Request Information > Organisation Details<br />
<br />
Use this option at the start of a stage or preceding a task / authorisation / decision node to load the Customer's Organisations details (variables) into the stage, and to make them available to other node operations where you may wish to specify or refer to '''Variable''' values from the customer's organisation of the request.<br />
<br />
:* If you are using the decision node, and want to branch the process based on the Industry of the Customers Organisations, or their address, or any customer fields for the customers Organisations you will need to use the Get Request Information > Organisation Details node at the beginning of the stage, or before the decision node in order to see any variable values be available to evaluate against in the Custom Expression builder.<br />
<br />
[[File:Org_Details.png|600px]]<br />
</div><br />
</div><br />
<br />
<!-- ******************************************************** Owner Details ********************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="GetRequestInfoOwner"></div><br />
* Owner Details<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:getrequestownerbpm.png|thumb|link=https://wiki.hornbill.com/images/8/8b/Getrequestownerbpm.png|Get Request Owner Details BPM]] Use this operation when you need to use information about the owner of the request for making decisions or to populate other BPM operations with this data. This operation will populate a number of variables that represent the information about the owner of the request. <br />
<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
<br><br />
<br><br />
The Variables that are available after this operation has been used include the following:<br />
<br />
{|<br />
|- valign="top"<br />
|style="width:300px"|<br />
<br />
* First Name<br />
* Last Name<br />
* Job Title<br />
* Site<br />
* Manager<br />
* Primary Email Address<br />
* Primary Phone Number<br />
* Mobile Phone Number<br />
* Interests<br />
* Personal Interests<br />
* Qualifications<br />
* Skills<br />
* Gender<br />
* Religion<br />
* Nationality<br />
* Country<br />
* Language<br />
|style="width:300px"|<br />
* Company<br />
* Company Custom 1<br />
* Company Custom 2<br />
* Company Custom 3<br />
* Company Custom 4<br />
* Company Custom 5<br />
* Company Custom 6<br />
* Division<br />
* Division Custom 1<br />
* Division Custom 2<br />
* Division Custom 3<br />
* Division Custom 4<br />
* Division Custom 5<br />
* Division Custom 6<br />
* Costcenter<br />
* Costcenter Custom 1<br />
* Costcenter Custom 2<br />
* Costcenter Custom 3<br />
|style="width:300px"|<br />
* Costcenter Custom 4<br />
* Costcenter Custom 5<br />
* Costcenter Custom 6<br />
* Department<br />
* Department Custom 1<br />
* Department Custom 2<br />
* Department Custom 3<br />
* Department Custom 4<br />
* Department Custom 5<br />
* Department Custom 6<br />
* Customer Custom 1<br />
* Customer Custom 2<br />
* Customer Custom 3<br />
* Customer Custom 4<br />
* Customer Custom 5<br />
* Customer Custom 6<br />
* Customer Custom 7<br />
* Customer Custom 8<br />
|}<br />
<br />
<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- ******************************************************** Request Details ********************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="GetRequestInfoRequestDetails"></div><br />
* Request Details<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:getrequestdetailsbpm.png|thumb|link=https://wiki.hornbill.com/images/b/bb/Getrequestdetailsbpm.png|Get Request Request Details BPM]] Use this operation when you need to use information held within a request for making decisions or to populate other BPM operations with this data. This operation will populate a number of variables that represent the information held within a request. <br />
<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
<br><br />
<br><br />
The Variables that are available after this operation has been used include the following:<br />
<br />
{|<br />
|- valign="top"<br />
|style="width:300px"|<br />
* Assigned Team<br />
* Assigned Team (For Tasks)<br />
* Authorisation (Approved/Rejected)<br />
* Catalog Item<br />
* Catalog Item Id<br />
* Change Type<br />
* Closure Category<br />
* Created By<br />
* Customer<br />
* Customer Company<br />
* Customer Manager<br />
* Customer Primary Email Address<br />
* Customer Primary Phone Number<br />
* Customer Secondary Email Address<br />
* Customer Secondary Phone Number<br />
* Customer Type (Coworker/Contact)<br />
* Date Logged<br />
* Description<br />
* Fix By Date<br />
|style="width:300px"|<br />
* Impact<br />
* Linked Requests<br />
* Logging Category<br />
* Owner<br />
* Owner (For Tasks)<br />
* Previous Task Owner<br />
* Priority<br />
* Release Type<br />
* Reopen Count<br />
* Resolution<br />
* Respond By Date<br />
* Request Assigned (Yes/No)<br />
* Scheduled End Date<br />
* Scheduled Start Date<br />
* Service<br />
* Service Id<br />
* Service Level<br />
* Service Level Agreement<br />
* Site<br />
* Source (Analyst/Email/Post/Request/Self Service)<br />
* Status<br />
* Sub Status Name<br />
* Summary<br />
|style="width:300px"|<br />
* Time Logged<br />
* Urgency<br />
* Within Fix Time (Yes/No)<br />
* External Reference Number<br />
* Within Response Time (Yes/No)<br />
* Custom Field A<br />
* Custom Field B<br />
* Custom Field C<br />
* Custom Field D<br />
* Custom Field E<br />
* Custom Field F<br />
* Custom Field G<br />
* Custom Field H<br />
* Custom Field I<br />
* Custom Field J<br />
* Custom Field K<br />
* Custom Field L<br />
* Custom Field M<br />
* Custom Field N<br />
* Custom Field O<br />
* Custom Field P<br />
* Custom Field Q<br />
|}<br />
<br />
<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- ****************************************************** Progressive Capture Answers ******************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Progressive Capture Answers<br />
<div class="mw-collapsible-content"><br />
::Requests > Get Request Information > Progressive Capture Answers<br />
<br />
Use this option before a '''Decision''' node, if you want to load into the process the '''Answers''' from Progressive Capture Custom Forms. By selecting this option, you can load and make available the answers to progressive capture custom forms, to then evaluate in following '''Decision''' nodes. <br />
<br />
An example of the use of this node could be if you have created a custom form which asked questions about a new start, and one of these questions was to determine which Department they would be joining, it is feasible in your business process that you may wish to check the answer value, and if it was '''Sales''' then branch in one direction, and if it was '''Accounts''' you may want to branch in another direction. Using the Get Request Information > Progressive Capture Answers will allow these answers to be evaluated in a supporting business process.<br />
[[File:Progressive_Capture_Answers.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Service Details<br />
<div class="mw-collapsible-content"><br />
Use this operation to extract details of the service that is set against a request in order to use the Service Details to use with decision node outcomes within your workflow. The following variables are populated<br />
<br />
:* Custom Fields A - F<br />
:* Feedback Enabled<br />
:* Portal Visibility<br />
:* Portfolio Status<br />
:* Service Category<br />
:* Service Name<br />
:* Service Owner ID<br />
:* Service Owner Name<br />
:* Status<br />
[[File:bp_get_info_service.png|600px]]<br />
</div><br />
</div><br />
<br />
<!-- ******************************************************** Site Details ********************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="GetRequestInfoRequestDetails"></div><br />
* Site Details<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:getrequestsitebpm.png|thumb|Get Request Site Details BPM]] Use this operation when you need to use information held within a request for making decisions or to populate other BPM operations with this site details. This operation will populate a number of variables that represent the site information held within a request. <br />
<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
<br><br />
<br><br />
The Variables that are available after this operation has been used include the following:<br />
<br />
{|<br />
|- valign="top"<br />
|style="width:300px"|<br />
* Building<br />
* Country<br />
* Company ID<br />
* Company Name<br />
* Notes<br />
|style="width:300px"|<br />
* Site Code<br />
* Site ID<br />
* Site Name<br />
* Type<br />
|}<br />
<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- ******************************************************** Team Details ********************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="GetTeamDetails"></div><br />
* Team Details<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:getteamdetails.png|thumb|Get Team Details BPM]] Use this operation when you need to get information about the team that the request is assigned to. This can be used for making decisions or to populate other BPM operations with this team details. Team Manager and Team Lead information can also be returned to help with notifications and assignments for important requests. <br />
<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
<br><br />
<br><br />
The Variables that are available after this operation has been used include the following:<br />
<br />
{|<br />
|- valign="top"<br />
|style="width:300px"|<br />
* Team (For Tasks)<br />
* Name<br />
* Notes<br />
* Manager ID<br />
* Team Leader ID<br />
* Attribute 1<br />
|style="width:300px"|<br />
* Attribute 2<br />
* Attribute 3<br />
* Attribute 4<br />
* Attribute 5<br />
* Attribute 6<br />
|}<br />
<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
====Integration====<br />
<br />
Use the Integration node at any stage of a process, where you wish to invoke specific actions against a 3rd party application from the available list of applications.<br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Create Jira Request <br />
<div class="mw-collapsible-content"><br />
::Requests > Integration > Create Jira Request<br />
[[File:Creat_Jira_Request.png|600px]]<br />
<br />
Create a new request in a specific Jira instance and against a parent project. Using this option will create a new request in Jira, of the required type. <br />
*This will pass the summary and description of the Service Manager request to the newly created request in Jira, and then pass back the Jira request id into the '''External Reference''' field on the Service Manager request if successful, as well as include an update in the request timeline if required, with a hyperlink to the request in Jira. If the request to raise a request fails, this will also be written to the Service Manager Timeline with the reason for the failure to create.<br />
<br />
The following options need to be Configured:<br />
<br />
*'''Request id:''' Leave as Auto to pick up on the Request id against which the process is running.<br />
*'''Use App Settings:''' Set to Yes if you want to use the global values you can define in the system settings for Service Manager (Home > Service Manager > Application), select No if you want to manually set the values to use for this specific node.<br />
<br />
If selecting Yes, the following system settings will need to have been set and will be used:<br />
<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.issueType''': This is the Jira Issue type which will be created - Bug, Improvement, New Feature, Task or custom created on your Jira instance.<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.userName''': The Username of the account in Jira which the new request will be created under.<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.password''': The Password for the user account in Jira which the new request will be created under.<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.projectName''': The Parent Project to which the new request will belong.<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.url''': The full URL for the Jira instance against which the new request will be created.<br />
<br />
If selecting No the following options will need to be manually set<br />
<br />
*'''URL:''' The full URL for the Jira instance against which the new request will be created.<br />
*'''Project Name:''' The Parent Project to which the new request will belong.<br />
*'''Issue Type:''' This is the Jira Issue type which will be created - Bug, Improvement, New Feature, Task or custom created on your Jira instance.<br />
*'''Username:''' The Username of the account in Jira which the new request will be created under.<br />
*'''Password:''' The Password for the user account in Jira which the new request will be created under.<br />
<br />
In either case the following can also be configured manually.<br />
<br />
*'''Update Timeline:''' Leave this as Auto if you want the Service Manager Request Timeline to be updated to record the fact that a Request has been created in Jira, and for the update to contain a hyperlink to the newly created request in Jira (as shown below)<br />
[[File:Jira_Create.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Add Jira Request Comment<br />
<div class="mw-collapsible-content"><br />
::Requests > Integration > Add Jira Request Comment<br />
[[File:Add_Jira_Comment.png|600px]]<br />
<br />
Add a comment to an existing Jira request.<br />
* This option will allow for a predefined comment to be added to a specific Jira Request. The configured comment will be added to the Jira request id, which is held in the '''External Reference''' field of the Service Manager request, against which this node is invoked from it's underlying business process. In most cases this will have been created automatically by using the '''Create Jira Request''' earlier in the same business process, but the Jira Request id can have been added manually to the Service Manager request '''External Reference''' field as well. <br />
<br />
The following options need to be Configured:<br />
<br />
*'''Request id:''' Leave as Auto to pick up on the Request id against which the process is running.<br />
*'''Use App Settings:''' Set to Yes if you want to use the global values you can define in the system settings for Service Manager (Home > Service Manager > Application), select No if you want to manually set the values to use for this specific node.<br />
<br />
If selecting Yes, the following system settings will need to have been set and will be used:<br />
<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.userName''': The Username of the account in Jira which the new comment will be created under.<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.password''': The Password for the user account in Jira which the new comment will be created under.<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.url''': The full URL for the Jira instance against which the new request comment will be added.<br />
<br />
If selecting No the following options will need to be manually set<br />
<br />
*'''URL:''' The full URL for the Jira instance against which the new request will be created.<br />
*'''Username:''' The Username of the account in Jira which the new comment will be created under.<br />
*'''Password:''' The Password for the user account in Jira which the new request comment will be added.<br />
<br />
In either case the following will also need to be configured manually.<br />
<br />
*'''Comment:''' Configure the message content which will be added to the Jira Request<br />
*'''Update Timeline:''' Leave this as Auto if you want the Service Manager Request Timeline to be updated to record the fact that a comment has been added to a request in Jira, and for the timeline update to contain a hyperlink to the newly created comment in the Jira request (as shown below)<br />
[[File:Jira_Comment.png|600px]]<br />
<br />
This will add the Comment into the '''Comments''' tab of the Activity section on the Jira request as shown below.<br />
[[File:Jira_Comment_Jira.png|600px]]<br />
</div><br />
</div><br />
<br />
<!-- ******************************************************** START OF NEW REQUEST ********************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="integrationnewrequest"></div><br />
* Log New Service Request<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmintegrationrequest.png|thumb|link=https://wiki.hornbill.com/images/a/a6/Bpmintegrationrequest.png|Log New Request]]<br />
==== Log New Service Request ====<br />
This node can be used by other Hornbill apps to raise requests within Service Manager. <br />
==== Options ====<br />
:* ''' Summary''' <br />
:: To add a summary to the new request, set to ''Manual'' and provide the required text for the summary<br />
:* ''' Description''' <br />
:: To add a description to the new request, set to ''Manual'' and provide the required text for the description <br />
:* ''' Service '''<br />
:: To add a Service to the new request, set to ''Manual'' and select a Service from the pick list<br />
:* ''' Catalog Item '''<br />
:: To add a Catalog Item to the new request, set to ''Manual'' and provide the name of the Catalog Item<br />
:* ''' Priority '''<br />
:: To add a Priority to the new request, set to ''Manual'' and select a Priority from the pick list<br />
:* ''' Category '''<br />
:: To add a Request Category to the new request, set to ''Manual'' and click on the edit button to open the Category selector.<br />
:* ''' Team '''<br />
:: To add a Team to the new request, set to ''Manual'' and select a team from the pick list <br />
:* ''' Owner '''<br />
:: To add an Owner to the new request, set to ''Manual'' and select start typing the name of the user and then select them from the pick list<br />
:* ''' Site '''<br />
:: To add a Site to the new request, set to ''Manual'' and select a Site from the pick list <br />
:* ''' Status '''<br />
:: To set the status on the new request, set to ''Manual'' and select a status from the pick list <br />
:* '''System Timeline Update'''<br />
:: To include a Timeline entry in the new request to record the raising of the new request, set to ''Manual'' and select ''Yes''<br />
:* ''' Manual Timeline Update '''<br />
:: To provide a unique Timeline Update in the new request, set to ''Manual'' and click on the edit button to open the text window to add your unique timeline entry.<br />
:* ''' Visibility'''<br />
:: Set the Visibility of the Timeline Entry if one is provided.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
====Linked Requests====<br />
Use the Linked Requests node to automatically post updates and resolve linked Requests. Linked requests are those that have been linked using the Link Action Item on a request form. <br />
<br />
<!-- ******************************* START OF RESOLVE LINKED REQUESTS ******************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Resolve Linked Requests<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmresolvelinkedrequest.png|thumb|link=https://wiki.hornbill.com/images/1/19/Bpmresolvelinkedrequest.png|Resolve Linked Requests]]<br />
<br />
==== Resolve Linked Requests ====<br />
This option allows you at specific times in a process to resolve linked requests. The options include defining the update text which will be added to the linked requests, as well as setting granular options to decide which linked request types should be updated. For example you may only want the Incidents from the Problem to receive the update, and not the Change, which the Problem is also linked too. <br />
<br />
==== Options ====<br />
:* '''Request ID'''<br />
:: This value is automatically applied. Leave this setting as ''Auto''<br />
:* '''Request Type'''<br />
:: When set, only the request type that is selected will be resolved. When not set, all linked requests will be resolved<br />
:* '''Status'''<br />
:: Select the status that you wish to set the linked requests to. Either '''Resolve''' or '''Close'''<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
:* '''System Timeline Update'''<br />
::Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
::Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Stop Timers'''<br />
:: If there are Service Level Target Timers (Response or Resolution) on the linked request, these timers will be stopped and the Target marked<br />
:* '''Notify Owner'''<br />
:: Notify the owner of any linked request when resolved. The type of notification will be based on the Service Manager application settings<br />
::: '''guest.app.requests.notification.notificationType.teamLinkedRequestResolveAction'''<br />
::: '''guest.app.requests.notification.notificationType.teamLinkedRequestResolveAction'''<br />
:* '''Email Customer'''<br />
:: Send an email to Customer of the linked requests. Requires that the Mailbox Name and Email Template are selected<br />
:* '''Mailbox Name'''<br />
:: Name of the mailbox from which to send a customer email when the Email Customer option is set to ''Yes''<br />
:* '''Email Template'''<br />
:: Name of the Email Template to use when the Email Customer option is set to ''Yes''<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- **************************************START OF UPDATE LINKED REQUESTS***************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Update Linked Requests<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmupdatelinkedrequests.png|thumb|link=https://wiki.hornbill.com/images/6/64/Bpmupdatelinkedrequests.png|Update Linked Requests]]<br />
<br />
==== Update Linked Requests ====<br />
This option allows you at specific times in a process to update linked requests. The options include defining the update text which will be added to the linked requests, as well as setting granular options to decide which linked request types should be updated. For example you may only want the Incidents from the Problem to receive the update, and not the Change, which the Problem is also linked too. <br />
<br />
==== Options ====<br />
:* '''Request ID'''<br />
:: This value is automatically applied. Leave this setting as ''Auto''<br />
:* '''Content'''<br />
:: Provide the text that you would like to include in the update<br />
:* '''Visibility'''<br />
:* Set the visibility level for the update. Decide if this is only for the team, or if it should be a customer facing update which the customer can view via the timeline of the requests on the portals.<br />
:* '''Request Type'''<br />
:: Select a specific request type where only the linked requests of this type will be updated<br />
:* '''Update Closed Requests'''<br />
:: Set if the update should also be applied to any linked requests which have a closed status.<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' <br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION***************************************************** --><br />
<br />
==== Log Requests ====<br />
Use the Log Request to automatically raise another request at a particular point in the workflow. <br />
<!-- ****************************************************** START OF OPERATION *********************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="LogNewChange"></div><br />
* Log New Change<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmlognewchange.png|thumb|link=https://wiki.hornbill.com/images/d/da/Bpmlognewchange.png|Log New Change]]<br />
:* '''Request ID'''<br />
:: This is an automatic option and should be set to ''Auto''<br />
:* ''' Summary''' <br />
:: To add a summary to the new request, set to ''Manual'' and provide the required text for the summary<br />
:* ''' Description''' <br />
:: To add a description to the new request, set to ''Manual'' and provide the required text for the description <br />
:* ''' Service '''<br />
:: To add a Service to the new request, set to ''Manual'' and select a Service from the pick list. If a Service is specified without a Catalog Item, the BPM workflow set against this request type on the Service Configuration will be used on the new request.<br />
:* ''' Catalog Item '''<br />
:: To add a Catalog Item to the new request, set to ''Manual'' and provide the name of the Catalog Item. If both a Service and Catalog Item are specified, the BPM workflow set against the Catalog item will be used on the new request.<br />
:* ''' Priority '''<br />
:: To add a Priority to the new request, set to ''Manual'' and select a Priority from the pick list<br />
:* ''' Category '''<br />
:: To add a Request Category to the new request, set to ''Manual'' and click on the edit button to open the Category selector.<br />
:* ''' Team '''<br />
:: To add a Team to the new request, set to ''Manual'' and select a team from the pick list <br />
:* ''' Owner '''<br />
:: To add an Owner to the new request, set to ''Manual'' and select start typing the name of the user and then select them from the pick list<br />
:* ''' Site '''<br />
:: To add a Site to the new request, set to ''Manual'' and select a Site from the pick list <br />
:* ''' Status '''<br />
:: To set the status on the new request, set to ''Manual'' and select a status from the pick list <br />
:* ''' Copy Customer? '''<br />
:: To use the same Customer as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Summary? '''<br />
:: To use the same Summary as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Description? '''<br />
:: To use the same Description as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Service? '''<br />
:: To use the same Service as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Priority? '''<br />
:: To use the same Priority as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Category? '''<br />
:: To use the same Category as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Team? '''<br />
:: To use the same Team as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Owner? '''<br />
:: To use the same Owner as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Site? '''<br />
:: To use the same Site as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Status? '''<br />
:: To use the same Status as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' System Timeline Update '''<br />
:: To include a Timeline entry in the new request to record the raising of the new request, set to ''Manual'' and select ''Yes''<br />
:* ''' Manual Timeline Update '''<br />
:: To provide a unique Timeline Update in the new request, set to ''Manual'' and click on the edit button to open the text window to add your unique timeline entry.<br />
:* ''' Visibility'''<br />
:: Set the Visibility of the Timeline Entry if one is provided.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- ****************************************************** START OF OPERATION *********************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="LogNewIncident"></div><br />
* Log New Incident<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:lognewincident.png|thumb|link=https://wiki.hornbill.com/images/6/65/Lognewincident.png|Log New Incident]]<br />
:* '''Request ID'''<br />
:: This is an automatic options and should be set to ''Auto''<br />
:* ''' Summary''' <br />
:: To add a summary to the new request, set to ''Manual'' and provide the required text for the summary<br />
:* ''' Description''' <br />
:: To add a description to the new request, set to ''Manual'' and provide the required text for the description <br />
:* ''' Service '''<br />
:: To add a Service to the new request, set to ''Manual'' and select a Service from the pick list. If a Service is specified without a Catalog Item, the BPM workflow set against this request type on the Service Configuration will be used on the new request.<br />
:* ''' Catalog Item '''<br />
:: To add a Catalog Item to the new request, set to ''Manual'' and provide the name of the Catalog Item. If both a Service and Catalog Item are specified, the BPM workflow set against the Catalog item will be used on the new request.<br />
:* ''' Priority '''<br />
:: To add a Priority to the new request, set to ''Manual'' and select a Priority from the pick list<br />
:* ''' Category '''<br />
:: To add a Request Category to the new request, set to ''Manual'' and click on the edit button to open the Category selector.<br />
:* ''' Team '''<br />
:: To add a Team to the new request, set to ''Manual'' and select a team from the pick list <br />
:* ''' Owner '''<br />
:: To add an Owner to the new request, set to ''Manual'' and select start typing the name of the user and then select them from the pick list<br />
:* ''' Site '''<br />
:: To add a Site to the new request, set to ''Manual'' and select a Site from the pick list <br />
:* ''' Status '''<br />
:: To set the status on the new request, set to ''Manual'' and select a status from the pick list <br />
:* ''' Copy Customer? '''<br />
:: To use the same Customer as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Summary? '''<br />
:: To use the same Summary as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Description? '''<br />
:: To use the same Description as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Service? '''<br />
:: To use the same Service as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Priority? '''<br />
:: To use the same Priority as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Category? '''<br />
:: To use the same Category as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Team? '''<br />
:: To use the same Team as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Owner? '''<br />
:: To use the same Owner as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Site? '''<br />
:: To use the same Site as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Status? '''<br />
:: To use the same Status as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' System Timeline Update '''<br />
:: To include a Timeline entry in the new request to record the raising of the new request, set to ''Manual'' and select ''Yes''<br />
:* ''' Manual Timeline Update '''<br />
:: To provide a unique Timeline Update in the new request, set to ''Manual'' and click on the edit button to open the text window to add your unique timeline entry.<br />
:* ''' Visibility'''<br />
:: Set the Visibility of the Timeline Entry if one is provided.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ****************************************************** START OF OPERATION *********************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="LogNewKnownError"></div><br />
* Log New Known Error<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bmplognewke.png|thumb|link=https://wiki.hornbill.com/images/f/ff/Bmplognewke.png|Log New Known Error]]<br />
:* '''Request ID'''<br />
:: This is an automatic options and should be set to ''Auto''<br />
:* ''' Summary''' <br />
:: To add a summary to the new request, set to ''Manual'' and provide the required text for the summary<br />
:* ''' Description''' <br />
:: To add a description to the new request, set to ''Manual'' and provide the required text for the description <br />
:* ''' Service '''<br />
:: To add a Service to the new request, set to ''Manual'' and select a Service from the pick list. If a Service is specified without a Catalog Item, the BPM workflow set against this request type on the Service Configuration will be used on the new request.<br />
:* ''' Catalog Item '''<br />
:: To add a Catalog Item to the new request, set to ''Manual'' and provide the name of the Catalog Item. If both a Service and Catalog Item are specified, the BPM workflow set against the Catalog item will be used on the new request.<br />
:* ''' Priority '''<br />
:: To add a Priority to the new request, set to ''Manual'' and select a Priority from the pick list<br />
:* ''' Category '''<br />
:: To add a Request Category to the new request, set to ''Manual'' and click on the edit button to open the Category selector.<br />
:* ''' Team '''<br />
:: To add a Team to the new request, set to ''Manual'' and select a team from the pick list <br />
:* ''' Owner '''<br />
:: To add an Owner to the new request, set to ''Manual'' and select start typing the name of the user and then select them from the pick list<br />
:* ''' Site '''<br />
:: To add a Site to the new request, set to ''Manual'' and select a Site from the pick list <br />
:* ''' Status '''<br />
:: To set the status on the new request, set to ''Manual'' and select a status from the pick list <br />
:* ''' Copy Customer? '''<br />
:: To use the same Customer as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Summary? '''<br />
:: To use the same Summary as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Description? '''<br />
:: To use the same Description as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Service? '''<br />
:: To use the same Service as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Priority? '''<br />
:: To use the same Priority as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Category? '''<br />
:: To use the same Category as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Team? '''<br />
:: To use the same Team as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Owner? '''<br />
:: To use the same Owner as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Site? '''<br />
:: To use the same Site as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Status? '''<br />
:: To use the same Status as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' System Timeline Update '''<br />
:: To include a Timeline entry in the new request to record the raising of the new request, set to ''Manual'' and select ''Yes''<br />
:* ''' Manual Timeline Update '''<br />
:: To provide a unique Timeline Update in the new request, set to ''Manual'' and click on the edit button to open the text window to add your unique timeline entry.<br />
:* ''' Visibility'''<br />
:: Set the Visibility of the Timeline Entry if one is provided.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- ****************************************************** START OF OPERATION *********************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="LogNewProblem"></div><br />
* Log New Problem<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bmplognewproblem.png|thumb|link=https://wiki.hornbill.com/images/b/bb/Bmplognewproblem.png|Log New Problem]]<br />
:* '''Request ID'''<br />
:: This is an automatic options and should be set to ''Auto''<br />
:* ''' Summary''' <br />
:: To add a summary to the new request, set to ''Manual'' and provide the required text for the summary<br />
:* ''' Description''' <br />
:: To add a description to the new request, set to ''Manual'' and provide the required text for the description <br />
:* ''' Service '''<br />
:: To add a Service to the new request, set to ''Manual'' and select a Service from the pick list. If a Service is specified without a Catalog Item, the BPM workflow set against this request type on the Service Configuration will be used on the new request.<br />
:* ''' Catalog Item '''<br />
:: To add a Catalog Item to the new request, set to ''Manual'' and provide the name of the Catalog Item. If both a Service and Catalog Item are specified, the BPM workflow set against the Catalog item will be used on the new request.<br />
:* ''' Priority '''<br />
:: To add a Priority to the new request, set to ''Manual'' and select a Priority from the pick list<br />
:* ''' Category '''<br />
:: To add a Request Category to the new request, set to ''Manual'' and click on the edit button to open the Category selector.<br />
:* ''' Team '''<br />
:: To add a Team to the new request, set to ''Manual'' and select a team from the pick list <br />
:* ''' Owner '''<br />
:: To add an Owner to the new request, set to ''Manual'' and select start typing the name of the user and then select them from the pick list<br />
:* ''' Site '''<br />
:: To add a Site to the new request, set to ''Manual'' and select a Site from the pick list <br />
:* ''' Status '''<br />
:: To set the status on the new request, set to ''Manual'' and select a status from the pick list <br />
:* ''' Copy Customer? '''<br />
:: To use the same Customer as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Summary? '''<br />
:: To use the same Summary as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Description? '''<br />
:: To use the same Description as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Service? '''<br />
:: To use the same Service as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Priority? '''<br />
:: To use the same Priority as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Category? '''<br />
:: To use the same Category as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Team? '''<br />
:: To use the same Team as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Owner? '''<br />
:: To use the same Owner as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Site? '''<br />
:: To use the same Site as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Status? '''<br />
:: To use the same Status as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' System Timeline Update '''<br />
:: To include a Timeline entry in the new request to record the raising of the new request, set to ''Manual'' and select ''Yes''<br />
:* ''' Manual Timeline Update '''<br />
:: To provide a unique Timeline Update in the new request, set to ''Manual'' and click on the edit button to open the text window to add your unique timeline entry.<br />
:* ''' Visibility'''<br />
:: Set the Visibility of the Timeline Entry if one is provided.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- ****************************************************** START OF OPERATION *********************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="LogNewRelease"></div><br />
* Log New Release<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bmplognewrelease.png|thumb|link=https://wiki.hornbill.com/images/e/ea/Bmplognewrelease.png|Log New Release]]<br />
:* '''Request ID'''<br />
:: This is an automatic options and should be set to ''Auto''<br />
:* ''' Summary''' <br />
:: To add a summary to the new request, set to ''Manual'' and provide the required text for the summary<br />
:* ''' Description''' <br />
:: To add a description to the new request, set to ''Manual'' and provide the required text for the description <br />
:* ''' Service '''<br />
:: To add a Service to the new request, set to ''Manual'' and select a Service from the pick list. If a Service is specified without a Catalog Item, the BPM workflow set against this request type on the Service Configuration will be used on the new request.<br />
:* ''' Catalog Item '''<br />
:: To add a Catalog Item to the new request, set to ''Manual'' and provide the name of the Catalog Item. If both a Service and Catalog Item are specified, the BPM workflow set against the Catalog item will be used on the new request.<br />
:* ''' Priority '''<br />
:: To add a Priority to the new request, set to ''Manual'' and select a Priority from the pick list<br />
:* ''' Category '''<br />
:: To add a Request Category to the new request, set to ''Manual'' and click on the edit button to open the Category selector.<br />
:* ''' Team '''<br />
:: To add a Team to the new request, set to ''Manual'' and select a team from the pick list <br />
:* ''' Owner '''<br />
:: To add an Owner to the new request, set to ''Manual'' and select start typing the name of the user and then select them from the pick list<br />
:* ''' Site '''<br />
:: To add a Site to the new request, set to ''Manual'' and select a Site from the pick list <br />
:* ''' Status '''<br />
:: To set the status on the new request, set to ''Manual'' and select a status from the pick list <br />
:* ''' Copy Customer? '''<br />
:: To use the same Customer as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Summary? '''<br />
:: To use the same Summary as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Description? '''<br />
:: To use the same Description as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Service? '''<br />
:: To use the same Service as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Priority? '''<br />
:: To use the same Priority as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Category? '''<br />
:: To use the same Category as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Team? '''<br />
:: To use the same Team as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Owner? '''<br />
:: To use the same Owner as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Site? '''<br />
:: To use the same Site as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Status? '''<br />
:: To use the same Status as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' System Timeline Update '''<br />
:: To include a Timeline entry in the new request to record the raising of the new request, set to ''Manual'' and select ''Yes''<br />
:* ''' Manual Timeline Update '''<br />
:: To provide a unique Timeline Update in the new request, set to ''Manual'' and click on the edit button to open the text window to add your unique timeline entry.<br />
:* ''' Visibility'''<br />
:: Set the Visibility of the Timeline Entry if one is provided.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- ****************************************************** START OF OPERATION *********************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="LogNewRequest"></div><br />
* Log New Request<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bmplognewrequest.png|thumb|link=https://wiki.hornbill.com/images/0/05/Bmplognewrequest.png|Log New Request]]<br />
:* '''Request ID'''<br />
:: This is an automatic options and should be set to ''Auto''<br />
:* ''' Summary''' <br />
:: To add a summary to the new request, set to ''Manual'' and provide the required text for the summary<br />
:* ''' Description''' <br />
:: To add a description to the new request, set to ''Manual'' and provide the required text for the description <br />
:* ''' Service '''<br />
:: To add a Service to the new request, set to ''Manual'' and select a Service from the pick list. If a Service is specified without a Catalog Item, the BPM workflow set against this request type will be used on the new request.<br />
:* ''' Catalog Item '''<br />
:: To add a Catalog Item to the new request, set to ''Manual'' and provide the name of the Catalog Item. If both a Service and Catalog Item are specified, the BPM workflow set against the Catalog item will be used on the new request.<br />
:* ''' Priority '''<br />
:: To add a Priority to the new request, set to ''Manual'' and select a Priority from the pick list<br />
:* ''' Category '''<br />
:: To add a Request Category to the new request, set to ''Manual'' and click on the edit button to open the Category selector.<br />
:* ''' Team '''<br />
:: To add a Team to the new request, set to ''Manual'' and select a team from the pick list <br />
:* ''' Owner '''<br />
:: To add an Owner to the new request, set to ''Manual'' and select start typing the name of the user and then select them from the pick list<br />
:* ''' Site '''<br />
:: To add a Site to the new request, set to ''Manual'' and select a Site from the pick list <br />
:* ''' Status '''<br />
:: To set the status on the new request, set to ''Manual'' and select a status from the pick list <br />
:* ''' Copy Customer? '''<br />
:: To use the same Customer as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Summary? '''<br />
:: To use the same Summary as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Description? '''<br />
:: To use the same Description as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Service? '''<br />
:: To use the same Service as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Priority? '''<br />
:: To use the same Priority as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Category? '''<br />
:: To use the same Category as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Team? '''<br />
:: To use the same Team as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Owner? '''<br />
:: To use the same Owner as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Site? '''<br />
:: To use the same Site as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Status? '''<br />
:: To use the same Status as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' System Timeline Update '''<br />
:: To include a Timeline entry in the new request to record the raising of the new request, set to ''Manual'' and select ''Yes''<br />
:* ''' Manual Timeline Update '''<br />
:: To provide a unique Timeline Update in the new request, set to ''Manual'' and click on the edit button to open the text window to add your unique timeline entry.<br />
:* ''' Visibility'''<br />
:: Set the Visibility of the Timeline Entry if one is provided.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<br />
{{infobox|Using these options in your business processes, please be aware of where you are invoking them / placing them in the workflow, and in turn which business processes are going to be invoked against the new Incident or Service Request raised. Please avoid scenario's where one business process may invoke the logging of a new request, where the new request's business process immediately is configured to log a new request which again has a business process which again logs another request immediately creating a loop. The result of which may be a lot of unwanted requests. In the event this occurs, disable the causing business process and resolve the issue.}}<br />
<br />
====Request Service====<br />
<br />
Use the Request Service node, if you wish to automate the availability status setting of the service associated to a request. It can be useful to automate the settings of of a services availability status to both the support community and the subscribed customers of a service, both when a request has been raised and or when it has been resolved, and normal service and availability is resumed.<br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Update Service Status<br />
<div class="mw-collapsible-content"><br />
:* '''Request ID''' - This is an automatic options and should be set to ''Auto''<br />
:* '''Status''' - Select the Status to set the Service's Availability too, or choose No Status if no Status is required to be displayed for the Service. <br />
:* '''Status Message''' - An optional message to be displayed alongside the Status - this will be visible to both analysts supporting the service, and customers subscribed to the service.<br />
[[File:Update_Request_Service_Status.png|centre|600px]]<br />
</div><br />
</div><br />
<br />
===Suspend===<br />
<br />
Use the Suspend node if you wish to suspend the progress of the process until a defined action is performed manually on the Request. This could include waiting for a Priority to be set, a Customer added, Ownership set or the Resolution defined. Configuration options include the ability to specify the context (which Action Bar icon) the Request will appear in whilst waiting for the Suspend (manual action) to be performed. <br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Await Expiry<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Await Expiry<br />
::Use this suspend node to suspend a Request's Business Process until the expire period has been reached.<br />
:* '''Expire Period'''<br />
::This option determines when the node expires. A Duration must be supplied (e.g. 8 Hours). If you wish to use a date/time for expiry, set this option to "ignore" and set the'Expire Date/Time' option below instead. <br />
:* '''Expire Date/Time'''<br />
::This option determines when the node expires. A date/time value must be supplied (e.g. 2040-01-01T12:00:00Z) which can be injected from the Variable Picker. If the "expire period" option has been set, any value in this 'Expire Date/Time' option will be disregarded.<br />
[[File:Suspend_Await_Expiry.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for List of Request Authorisers <br />
<div class="mw-collapsible-content"><br />
::Use this suspend node to present an Authorization Action on a request form that lets you manually assign authorisers at a particular point in the BPM Workflow. Once all authorisers have been submitted, an authorisation task will be sent to all the selected users (''Requests > Suspend > List of Request Authorisers'')<br />
:* '''Action Focus'''<br />
:: Sets the Action Item on a request that will be in focus. When using this suspend node, it is recommended to select the ''Authorisation'' action item.<br />
:* '''Authorization Type'''<br />
:: There are three available Authorization Types. ''Individual'' - Only one of the selected authorizers will be required to approve the authorization in order to proceed. ''Majority'' - At least half of the selected authorizers will be required to approve the authorization in order to proceed. ''Unanimous'' - All of the selected authorizers must approve the authorization in order to proceed.<br />
:* '''Service Owner'''<br />
:: Selecting ''Yes'' will automatically include the owner of the service that the requests is raised against, to the list of authorizers<br />
:* '''Linked Service Owners'''<br />
:: Selecting ''Yes'' will automatically include the owners of the services that are linked to the request, to the list of authorizers<br />
:* '''Linked Assets Owners'''<br />
:: Selecting ''Yes'' will automatically include the owners of the assets that are linked to the request, to the list of authorizers<br />
<br />
:[[File:Information.png|14px|text-top|Information]] Once the authorisers have been submited the ''Auto Assign Authorisation'' BPM node is used to distribute the authorisation tasks. The ''Auto Assign Authorisation'' BPM Node must follow the ''Wait for List of Request Authorisors'' BPM Node, either immediately after or later on in the workflow at the point when you want the authorisations to be sent out. <br />
[[File:WaitforlistofApprovers.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Closure <br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Closure<br />
<br />
[[File:Suspend_Wait_Close.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Closure Category<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Closure Category<br />
<br />
[[File:Closure_Category.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Customer<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Customer<br />
<br />
[[File:at_requests_suspend_waitForCustomer.png|600px]]<br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Suspend and Wait for Feedback * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="SuspendAndWaitForFeedback"></div><br />
* Suspend and Wait for Feedback<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmswaitforfeedback.png|thumb|link=https://wiki.hornbill.com/images/8/83/Bpmswaitforfeedback.png|Wait for Feedback]]<br />
<br />
====Suspend and Wait for Feedback ====<br />
Use this node to suspend the workflow on the request until the customer has provided feedback<br />
<br />
====Options====<br />
:* '''RequestID'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to Auto.<br />
:* '''Action Focus'''<br />
:: Sets the Action Item on a request that will be in focus. When using this suspend node.<br />
:* '''Expire Period'''<br />
:: Set a date and time for which this operation will expire. When this date and time is reached, the BPM will automatically continue. An outcome of ''Expired'' will be provided to allow for a decision node to be place after this operation to determine how the expired operation will be managed.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Suspend and Wait for Request Description * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Description<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Description<br />
<br />
[[File:Suspend_Request_Description.png|600px]]<br />
</div><br />
</div><br />
<br />
<!-- *******************************START OF WAIT FOR REQUEST EMAIL OPERATION DOCUMENTATION *********************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="waitForRequestEmail"></div><br />
* Wait for Request Email<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmwaitforrequestemail.png|thumb|link=https://wiki.hornbill.com/images/a/a1/Bpmwaitforrequestemail.png|Wait for Request Email]]<br />
<br />
==== Wait for Request Email ====<br />
Use this node to suspend the BPM Workflow and wait for an email to be sent from the request.<br />
<br />
==== Options ====<br />
:* '''RequestID'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to Auto.<br />
:* '''Action Focus'''<br />
:: Sets the Action Item on a request that will be in focus. When using this suspend node.<br />
:* '''Expire Period'''<br />
:: Set a date and time for which this operation will expire. When this date and time is reached, the BPM will automatically continue. An outcome of ''Expired'' will be provided to allow for a decision node to be place after this operation to determine how the expired operation will be managed.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for External Reference<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for External Reference<br />
<br />
[[File:Suspend_Request_External.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Linked Services<br />
<div class="mw-collapsible-content"><br />
: Use this suspend option when a request needs to have a linked service added before the process can continue<br />
::Requests > Suspend > Wait for Linked Service<br />
<br />
</div><br />
</div><br />
<br />
<!-- *******************************START OF OPERATION DOCUMENTATION******************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="waitForLinkedRequestUpdate"></div><br />
* Wait for Linked Request Update<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmwaitforlinkedrequestupdate.png|thumb|link=https://wiki.hornbill.com/images/f/fc/Bpmwaitforlinkedrequestupdate.png|Wait for Linked Request Update]]<br />
<br />
==== Wait for Linked Request Update ====<br />
Use this node to suspend the BPM Workflow and wait for an update to be made on a linked request.<br />
<br />
==== Options ====<br />
:* '''RequestID'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to Auto.<br />
:* '''Request Type'''<br />
:: This limits the suspend to only wait for updates from linked requests of the selected type<br />
:* '''Linked Request ID'''<br />
:: This limits the suspend to only wait for updates from a linked request with provided Request ID. This can use variables to automatically populate this information.<br />
:* '''Contains'''<br />
:: Include a string of text which will match the text within the linked request's timeline<br />
:* '''Expire Period'''<br />
:: Set a date and time for which this operation will expire. When this date and time is reached, the BPM will automatically continue. An outcome of ''Expired'' will be provided to allow for a decision node to be place after this operation to determine how the expired operation will be managed.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Owner<br />
<div class="mw-collapsible-content"><br />
:Use this suspend option when a request does not currently have an owner.<br />
::Requests > Suspend > Wait for Request Owner<br />
<br />
[[File:at_requests_suspend_waitForRequestOwner.png| 600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for New Request Owner<br />
<div class="mw-collapsible-content"><br />
:Use this suspend option when the request already has an owner, but it is in a state where it is waiting for a reassignment. <br />
::Requests > Suspend > Wait for New Request Owner<br />
<br />
[[File:Suspendwaitfornewowner.png| 600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Off Hold<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Off Hold<br />
<br />
[[File:Suspend_wait_offhold.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Priority<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Priority<br />
<br />
[[File:at_requests_suspend_waitForRequestPriority.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Category<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Category<br />
<br />
[[File:Suspend_Request_Category.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Resolution<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Resolution<br />
<br />
[[File:at_requests_suspend_waitForRequestResolution.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Site<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Site<br />
<br />
[[File:Suspend_Request_Site.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Status Change<br />
<div class="mw-collapsible-content"><br />
: Use this suspend mode to wait for a change from a particular status. A decision node can follow this to determine the new status and the workflow that follows. This is particularly useful for managing two stage closure where options for resolving, closing, and re-opening can take place. (Requests > Suspend > Wait for Request Summary)<br />
<br />
:* '''Action Focus'''<br />
:: Sets the Action Item on a request that will be in focus. When using this suspend node.<br />
:* '''From Status'''<br />
:: Set the status that you want to suspend the workflow until that particular status has changed. An example would be to set this as ''Resolved'' so when it changes from this status to either ''Open'' or ''Closed'' you can branch using a decision node to manage the process for the new status. If using a decision node and custom expression ensure you use '''Status.Open''' Etc in your condition rather than just '''Open'''.<br />
:* '''Expire Period''' <br />
:: The ''Expire Period'' will automatically come out of the suspend mode and progress the workflow. If there are no changes to the ''From Status'' within the expiry period a decision node can be used to include steps in your process when this occurs. This could be used for automatic closure of the request as the result of the Expiry Period being met.<br />
<br />
[[File:bp_suspend_wait_status_change.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Summary<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Summary<br />
<br />
[[File:Suspend_Request_Summary.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Team<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Team<br />
<br />
[[File:at_requests_suspend_waitForRequestTeam.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Update<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Update<br />
<br />
[[File:Suspend_Request_Update.png|600px]]<br />
</div><br />
</div><br />
<br />
====Update Request====<br />
<br />
Use the Update Request node to automatically update the values of specific Request attributes at any stage in the process. Examples being updating the Logging or Closing Categories of a Request.<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Logging Category<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Logging Category<br />
<br />
Specify the logging category which will associated to the request. This is typically used where the category of the request is known based on the business process being associated against a specific request catalog item, and as such the analyst is not required to make a manual assessment and categorisation. <br />
<br />
[[File:updateRequestCategoryNew.jpg|700px]]<br />
:* '''Category''' - This option will prompt you to select a Category. If supplied, "Category (From Variable)" option will be ignored.<br />
:* '''Category (From Variable)''' - This option requires you to provide the Id of a Category (Value of h_id column in h_sys_profiles table). This can be used when a field that is driven by a Simple List made up of Categories is set up in a Progressive Capture. This option should only be supplied if "Category" option is not set.<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Closure Category<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Closure Category<br />
<br />
Specify the closure category which will be associated to the request. This is typically used where the business process is set to automatically resolve or close and the analyst is not required to manually resolve and specify a closure category. <br />
<br />
[[File:Closure_Category.png|600px]]<br />
:* '''Category''' - This option will prompt you to select a Category. If supplied, "Category (From Variable)" option will be ignored.<br />
:* '''Category (From Variable)''' - This option requires you to provide the Id of a Category (Value of h_id column in h_sys_profiles table). This can be used when a field that is driven by a Simple List made up of Categories is set up in a Progressive Capture. This option should only be supplied if "Category" option is not set.<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<!-- ******************************************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="UpdateCustomer"></div><br />
* Update Customer<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmupdatecustomer.png|thumb|Update Customer|link=https://wiki.hornbill.com/images/f/f5/Bpmupdatecustomer.png]]<br />
==== Update Customer ====<br />
Use this node to automatically add or update a request with a Customer<br />
==== Options ====<br />
{{Bullet1|Request ID|This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to Auto}}<br />
{{Bullet1|Co-Worker|Select a Co-worker that will be used as the customer of the request}}<br />
{{Bullet1|Contact|Select a Contact that will be used as the customer of the request}}<br />
{{Bullet1|Co-worker (From Variable)|Use a variable to populated the customer, based on a Co-worker ID}}<br />
{{Bullet1|Contact (From Variable)|Use a variable to populate the customer, based on a contact ID}}<br />
{{Bullet1|System Timeline Update|Select if the default system text will be added to the timeline for this action}}<br />
{{Bullet1|Manual Timeline Update|Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action}}<br />
{{Bullet1|Visibility|Choose what level of visibility will be automatically applied to this update. Choosing anything other than Customer will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals.}}<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Custom Fields<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Custom Fields<br />
<br />
This provides the ability to update any or all of the custom fields of a request. The input box is single line only and values should be restricted to 255 characters which is the defined max length for all custom fields. When populating custom fields please pay attention to the type of value you are populating, and ensure this is compatible with the type of field you have specified for the corresponding custom field in the request type and service form designer in the user interface. <br />
<br />
[[File:Update_Request_Custom_Fields.png|600px]]<br />
:* '''Custom Field A - T & Custom Field 21 to 40''' - Populate the required custom field(s) with the value(s) that you wish to update the custom field(s) with. This can be text and/or attributes from the Variable Picker.<br />
:* '''Append Text''' - This determines if the supplied value of the custom field, should append any existing value of the custom field. By default this is set to replace any existing value, with the value defined here.<br />
:* '''Format Checkbox Value''' - This option determines whether the value from a checkbox (i.e. Outcome Field from a Human Task) is formatted to remove the square brackets and double quotes. By default, this option is set to "No".<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<!-- **************************************************** START OF UPDATE DETAILS ************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px" id="Details"><br />
* Details<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:updaterequestdetailsbpm.png|thumb|link=https://wiki.hornbill.com/images/9/9e/Updaterequestdetailsbpm.png|Update Request Details BPM]] Use this operation to update the Summary and Description of a request. You can either add a new summary or description or append to the existing values. <br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''Summary'''<br />
:: Set to ''Auto'' if you want to use an output variable from a previous BPM operation where that variable is named ''summary''. If the variable ''summary'' does not exist, no action will be taken. Set to ''Manual'' to provide the information to be used to update the summary. This can include the use of [[Request Variables| Request Variables]]. Set to ''Ignore'' if no action is required.<br />
:* '''Description'''<br />
:: Set to ''Auto'' if you want to use an output variable from a previous BPM operation where that variable is named ''description''. If the variable ''description'' does not exist, no action will be taken. Set to ''Manual'' to provide the information to be used to update the Description. This can include the use of [[Request Variables| Request Variables]]. Set to ''Ignore'' if no action is required.<br />
:* '''Append Text'''<br />
:: Set to ''Auto'' if the update is to replace the existing text. Set to ''Manual'' and select ''Yes'' to append the update to the end of the existing text<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' <br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************************** END OF UPDATE DETAILS ************************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* External Reference<br />
<div class="mw-collapsible-content"><br />
:: Use this operation to update the External Reference field that is held against the requests.<br />
<br />
[[File:bp_update_external_ref.png|600px]]<br />
:* '''External Reference'''<br />
:: Either enter an external reference number or use the variable picker to take the External Reference held in a variable<br />
:* '''System Timeline Update'''<br />
:: Select ''Yes''if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select ''Yes'' to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals.<br />
</div><br />
</div><br />
<br />
<!-- **************************************************** START OF FIRST TIME FIX ************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px" id="Details"><br />
<div id="FirstTimeFix"></div><br />
* First Time Fix<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:firsttimefixbpm.png|thumb|link=https://wiki.hornbill.com/images/f/f8/Firsttimefixbpm.png|First Time Fix]] Use this operation to update the First Time Fix flag on a request. You can apply the rules to set the requirements for a first time fix. This operation should be added at point within the workflow when the request has reached a resolved state. <br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''No Team Reassignments'''<br />
:: Set to ''Yes'' If you wish to include the rule that there must not be any team reassignments in order to be classed as a first time fix. Set to ''Auto'' or ''No'' to exclude this rule.<br />
:* '''No Owner Reassignments'''<br />
:: Set to ''Yes'' If you wish to include the rule that there must not be any owner reassignments in order to be classed as a first time fix. Set to ''Auto'' or ''No'' to exclude this rule.<br />
:* '''No Hold Time'''<br />
:: Set to ''Yes'' If you wish to include the rule that there must not be any point at which this request was placed on hold. Set to ''Auto'' or ''No'' to exclude this rule.<br />
:* '''Max Open Time'''<br />
:: Set to ''Manual'' and add an amount of time to include the rule that the request must be resolved within this time frame to count as a first time fix. Set to ''Auto'' to exclude this rule. Putting a request on-hold does not extend the ''Max Open Time''.<br />
:* '''Include Working Time Calendar'''<br />
:: Set to ''Manual'' and chose a Working Time Calendar to include the use of a Working Time Calendar when calculating the ''Max Open Time''. Set to ''Auto'' to exclude this rule<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' <br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************************** END OF FIRST TIME FIX ************************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Place On Hold<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
<br />
[[File:bpmplaceonhold.png|thumb|link=https://wiki.hornbill.com/images/5/5c/Bpmplaceonhold.png|Place On Hold]] Use this operation to automatically put a request on-hold when a point within the workflow has been reached.<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''On Hold Period'''<br />
:: Enter the number of Years, Months, Days, Hours, and Minutes that the request will be on hold for.<br />
:* '''On Hold Period Apply Working Time Calendar'''<br />
:: Set this to ''Yes'' to apply the WTC that is associated to the request to be used. This will ensure that the request comes off hold during work hours.<br />
:* '''Reason'''<br />
:: Include information that describes the reason for the request being placed on-hold.<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' <br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals.<br />
:* '''Sub-Status'''<br />
:: Set the sub-status of the request when the request is placed on-hold<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Priority<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Priority<br />
<br />
Use this node to set the '''Priority'''' of the request. This can be useful when your business process is supporting a specific request catalog item, and the '''Priority''' for such items can be predetermined and therefore can be set. It is also useful to use within a process where a decision node may branch and different '''Priorities''' are possible depending on the path followed. Decide if the setting of the '''Priority''' should also mark the request timeline.<br />
<br />
[[File:Update_Priority.png|600px]]<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Resolution Text<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Resolution Text<br />
<br />
Use this node to set the '''Resolution Text'''' of the request. This can be useful when your business process is supporting a specific request catalog item, and the '''Resolution''' for such items can be predetermined and therefore can be set. <br />
<br />
[[File:Update_Request_Resolution_text.png|600px]]<br />
:* '''Resolution Text''' - The text which will appear in the resolution text box (this can include the use of request variables)<br />
:* '''Overwrite Resolution Text''' - Decide if this option should overwrite and replace any existing text in the resolution field - by default this is set to No<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Service Level<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Service Level<br />
<br />
Use this node to update the Service Level that has been applied to the request. This can be used to apply a Service Level if one has not been allocated or if at a point in your workflow you would like to automatically re-assess the applied Service Level, this will use your Service Level Rules and check for any changes to the request to determine if a change is Service Level is required.<br />
<br />
:* '''There are no options required for this operation.'''<br />
:: Because of how this operation works there are no options to select from. It simply executes the operation. <br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Update Site * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="UpdateSite"></div><br />
* Site<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmupdatesite.png|thumb|link=https://wiki.hornbill.com/images/0/03/Bpmupdatesite.png|Update Site]]<br />
<br />
==== Site ====<br />
Use this node to set the ''Site'' of the request. The configuration options include pre-defining the ''Site'' from the full list of Sites, which have been created in Organisational structure or from a variable.<br />
==== Options ====<br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Site'''<br />
:: Select from the list of available sites as defined under the Organizational Data in Administration<br />
:* '''Site ID (From Variable)'''<br />
:: Use a variable that has been populated from Progressive Capture to set the Site. The Group Picker option on the Custom Progressive Capture form will be the most common way of providing the Site ID in a variable.<br />
:* '''System Timeline Update''' <br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' <br />
::Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Update Site (Customer's Site) * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Site (Customer' Site)<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Site (Customer's Site)<br />
<br />
Use this node to set the '''Site''' of the request to that of the site defined against the customer of the request. Decide if the setting of the '''Site''' should be marked on the requests timeline.<br />
<br />
[[File:Update_Customers_Site.png|600px]]<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="UpdateRequestSource"></div><br />
* Source<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:updaterequestsourcebpm.png|thumb|link=https://wiki.hornbill.com/images/5/57/Updaterequestsourcebpm.png|Update Request Source BPM]] The Update Request Source operation allows you to automatically set the source of the request. A number of default sources such as Email, Analyst, Self Service, and Post are added and based on the how the request was raised. This BPM Operation lets you over-ride these source names and allows you to add your own.<br />
<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''Source'''<br />
:: Either enter the text that you would like to use to represent the source or you can have this automatically provided by using the variable option.<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' <br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Status / Sub-status<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Status<br />
<br />
Use this node to set the '''Status''' and or '''Sub-Status''' at one or multiple points in a process. It can be useful to automate the changing of the status based on other process actions, without the need for human intervention. <br />
<br />
[[File:business_process_update_status.png|600px]]<br />
:* '''Status''' - Optionally select the Status you wish the Request to be set too<br />
:* ''' Sub-Status''' - Optionally select the Sub-Status you wish the Request to be set too<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Timeline<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Timeline<br />
<br />
Use this node to update the '''Timeline''' of a request with a predefined comment. This can be useful when it is important to post information to or an update onto a request based on a prior process action. <br />
<br />
[[File:bp_update_timeline.png|600px]]<br />
:* '''Update Text''' - Define the text to appear in the timeline update, this can include variables from the request or related entities using the variable picker<br />
:* '''URL''' - Include a URL which will be embedded into the timeline update of the request. <br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals.<br />
</div><br />
</div><br />
<br />
====Request Timers====<br />
<br />
Use the Request Timer nodes at any stage in the process to either start or stop the Response and or Resolution timers. It is not a perquisite to have to use any timers within processes or to have to use both Response and Resolution timers when timers are used.<br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Start Resolver Timer<br />
<div class="mw-collapsible-content"><br />
::Application > Timer > Start Resolver Timer<br />
<br />
Use this node at the required point in the process to start the resolution timer. When selecting this option, the resolution timer will be based on the '''Priority''' associated to the request. The target and any required escalation actions for the resolution timer can be configured in the Service Manager application '''> Services > Service Levels > Resolve Times'''.<br />
<br />
[[File:at_requestTimers_resolutionTimers_startResolutionTimer.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Stop Resolution Timer<br />
<div class="mw-collapsible-content"><br />
::Application > Timer > Stop Resolver Timer<br />
<br />
Use this node to stop the resolution timer at the required point in the process. <br />
<br />
[[File:at_requestTimers_resolutionTimers_stopResolutionTimer.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Start Response Timer<br />
<div class="mw-collapsible-content"><br />
::Application > Timer > Start Response Timer<br />
<br />
Use this node at the required point in the process to start the response timer. The response timer to use can be selected on the node, and will use the response target and any associated escalation actions which can be configured in the Service Manager application '''> Services > Service Levels > Response Times'''.<br />
<br />
[[File:at_requestTimers_responseTimers_startResponseTimer.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Stop Response Timer<br />
<div class="mw-collapsible-content"><br />
::Application > Timer > Stop Response Timer<br />
<br />
Use this node at the required point in the process to stop the response timer.<br />
<br />
[[File:at_requestTimers_responseTimers_stopResponseTimer.png|600px]]<br />
</div><br />
</div><br />
<br />
[[Category:Service Manager]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Service_Manager_Business_Process_Workflow&diff=23777Service Manager Business Process Workflow2020-05-21T08:19:36Z<p>Victors: </p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
__NOTOC__[[Main Page|Home]] > [[Administration]] > [[Service Manager Administration |Service Manager]] > Business Process Workflow<br />
</div><br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
== Introduction ==<br />
The Service Manager Business Process Workflow is used to automate the processing of the requests that have been raised. This page contains information on the Service Manager specific automated tasks that can be used in the [[Business Process Designer]] to build unique and powerful processes for your requests.<br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
:* [[Business Process Designer]]<br />
:* [[Request Variables]]<br />
|}<br />
<br />
==Boards==<br />
Use the Boards nodes to automatically add, move or remove a Request from an existing Board. Requests can be added to one or multiple Boards in Service Manager, and can be moved between Lists on specified Boards automatically.<br />
<br />
<!-- ******************************************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="AddCommentToBoard"></div><br />
* Add Comment To Board<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmaddcommenttoboard.png|thumb|link=https://wiki.hornbill.com/images/9/9e/Bpmaddcommenttoboard.png|Add Comment to a Board]]<br />
==== Add Comment To Board ====<br />
Use this node to manually add a Comment card to a Service Manager Board at the required stage in a process.<br />
==== Options ====<br />
:* '''Board'''<br />
:: The name of the Service Manager Board on which the Comment card will be added<br />
:* ''' List '''<br />
:: The name of the list from the above specified board to which the Comment card will be added<br />
:* '''Comment'''<br />
:: The actual comment, as it will appear on the card on the Board.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="addRequestToBoard"></div><br />
* Add Request to Board<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmaddrequesttoboard.png|thumb|link=https://wiki.hornbill.com/images/9/96/Bpmaddrequesttoboard.png |Add Request to Board]] <br />
==== Add Request to Board ====<br />
This operation will automatically add a request to a selected Service Manager Board or move a request from one list to another. This particularly works well on a Board where users have been given View Access only and the BPM takes control of all the card movements.<br />
==== Options ====<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''Board'''<br />
:: The name of the Service Manager Board on which the Request card will be added<br />
:* '''List'''<br />
:: The name of the list from the above specified board to which the Request card will be added<br />
<br><br />
<br><br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="AddUniqueIdForAnchor"></div><br />
* Remove Request from Board<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmremoverequestfromboard.png|thumb|link=https://wiki.hornbill.com/images/0/07/Bpmremoverequestfromboard.png|Remove Request from Board]] <br />
==== Remove Request from Board ====<br />
Use this option to remove a Request from a Service Manager Board at a specific stage in a process. <br />
==== Options ====<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''Board'''<br />
:: The name of the Service Manager Board from which the Request card will be removed.<br />
<br><br />
<br><br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************END OF OPERATION DOCUMENTATION************************************************** --><br />
<br />
==Change Requests==<br />
Use these nodes at any stage in a process to automate Change Request specific actions.<br />
<br />
<!-- ********************************START OF OPERATION DOCUMENTATION*************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="addToChangeCalendar"></div><br />
* Add to Change Calendar<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmaddtochangecalendar.png|thumb|link=https://wiki.hornbill.com/images/9/9e/Bpmaddtochangecalendar.png|Add to Change Calendar]]<br />
==== Add to Change Calendar ====<br />
Use this node to automatically add a change request to the Change Calendar. Use the configuration settings to set the start and end times for the change based on the time this node is invoked in the process. As an example if this node is the first action in a process, then it will use the log time as the Now time, and the Start and End times you configure will be based off that time. <br />
==== Options ====<br />
:* '''Request ID'''<br />
::This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to Auto<br />
:* '''Start Time From Now'''<br />
:: Set the ''Start Time'' for this change based on years, months, days, hours, or minutes from when this node is reached in the workflow<br />
:* '''End Time From Now'''<br />
:: Set the ''End Time'' for this change based on years, months, days, hours, or minutes from when this node is reached in the workflow<br />
:* '''Start Time (From Variable)<br />
:: Set the ''Start Time'' for this change from a BPM Variable<br />
:* '''End Time (From Variable)<br />
:: Set the ''End Time'' for this change from a BPM Variable<br />
:* '''Enforce Freeze Periods'''<br />
:: Set this to ensure that the Start or End Dates are not set within a Change Freeze Period<br />
:* '''Update Timeline'''<br />
:: Include a Timeline update on the request when this node has completed<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Remove from Change Calendar<br />
<div class="mw-collapsible-content"><br />
::ChangeRequests > Update > Remove from Change Calendar<br />
<br />
Use this node to automatically remove the Change from the Change Calendar. <br />
[[File:Remove_From_Calendar.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Change Type<br />
<div class="mw-collapsible-content"><br />
::ChangeRequests > Update > Change Type<br />
<br />
Use this node to update the Change Type <br />
[[File:Change_Type.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Schedule<br />
<div class="mw-collapsible-content"><br />
::ChangeRequests > Suspend > Wait for Resquest Schedule<br />
<br />
Use this node to pause the process and await the scheduling of the Change Request in the Change Calendar<br />
* Optional use the Action Focus option to focus the request on the '''Schedule''' action on the action bar, when awaiting this action.<br />
<br />
[[File:Suspend_await_schedule.png|600px]]<br />
</div><br />
</div><br />
<br />
==Problem Records==<br />
Use these nodes at any stage in a process to automate Problem Record specific actions.<br />
=== Suspend ===<br />
Use the Suspend Type if you wish to suspend the progress of the process until a defined action is performed manually on the Problem. Once selected, the following available ''Tasks'' can be selected.<br />
<br />
<!-- *******************************START OF OPERATION DOCUMENTATION******************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="waitForProblemWorkaround"></div><br />
* Wait for Workaround<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmwaitforproblemworkaround.png|thumb|link=https://wiki.hornbill.com/images/3/3b/Bpmwaitforproblemworkaround.png|Wait for Workaround]]<br />
<br />
==== Wait for Workaround ====<br />
Use this node to suspend the BPM Workflow and wait for a workaround to be added to the Problem Record.<br />
<br />
==== Options ====<br />
:* '''RequestID'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to Auto.<br />
:* '''Action Focus'''<br />
:: Sets the Action Item on a request that will be in focus when using this suspend node.<br />
:* '''Expire Period'''<br />
:: Set a date and time for which this operation will expire. When this date and time is reached, the BPM will automatically continue. An outcome of ''Expired'' will be provided to allow for a decision node to be place after this operation to determine how the expired operation will be managed.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
==Releases==<br />
Use this node at any stage in a process to automate Release specific actions.<br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Add to Change Calendar<br />
<div class="mw-collapsible-content"><br />
::Releases > Update > Add to Change Calendar<br />
<br />
Use this node to automatically add the Release to the Change Calendar. <br />
* Use the configuration settings to set the start and end times for the release based on the time this node is invoked in the process. As an example if this node is the first action in a process, then it will use the log time as the Now time, and the Start and End times you configure will be based off that time. <br />
<br />
[[File:Release_Add.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Remove from Change Calendar<br />
<div class="mw-collapsible-content"><br />
::Releases > Update Request > Remove from Change Calendar<br />
<br />
Use this node to automatically remove the Release from the Change Calendar. <br />
[[File:Release_Remove.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Release Type<br />
<div class="mw-collapsible-content"><br />
::Releases > Update Request > Release Type<br />
<br />
Use this node to update the Release Type <br />
[[File:Release_type.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Schedule<br />
<div class="mw-collapsible-content"><br />
::Releases> Suspend > Wait for Request Schedule<br />
<br />
Use this node to pause the process and await the scheduling of the Release in the Change Calendar<br />
* Optional use the Action Focus option to focus the request on the '''Schedule''' action on the action bar, when awaiting this action.<br />
<br />
[[File:Release_Schedule.png|600px]]<br />
</div><br />
</div><br />
<br />
==Request Connections==<br />
Use the Request Connections node at any stage in a process to automatically add additional contact's and or co-worker's to a request and define their connection type to the request. Other options include automatically emailing connections of different types, and removing one or all connections at any stage.<br />
<br />
<!-- *************************************** START OF NODE **************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="AddConnection"></div><br />
* Add Connection<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmaddconnection.png|thumb|link=https://wiki.hornbill.com/images/a/ae/Bpmaddconnection.png]]<br />
<br />
====Add Connection====<br />
Use this node to add a connection to a request<br />
:* '''Request ID'''<br />
::This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to Auto<br />
:* '''Connection Type'''<br />
:: By Default this will include interested and Impacted but will also show any custom Connection Types which have been defined in the Simple Lists, and '''requestConnectionType''' option. Use this option to define what relationship the Connection will have to the request.<br />
:* '''Co-worker''' <br />
:: Choose which internal user will be added as a connection to the request <br />
:* '''Contact''' <br />
:: Choose which external user will be added to a connection to the request<br />
:* '''Co-worker(From Variable)''' <br />
:: Use the user id (h_user_id) from the h_sys_accounts table, or from the variable picker and picking the value returned from the user picker in a progressive capture custom form. Be sure to use the ''Raw'' value from the progressive capture outcome and not the ''Display Name''<br />
:* '''Contact(From Variable)'''<br />
:: Use the contact id (h_pk_id) from the h_sys_contacts table or or from the variable picker and picking the value returned from the user picker in a progressive capture custom form. Be sure to use the ''Raw'' value from the progressive capture outcome and not the ''Display Name''<br />
:* '''Update Timeline'''<br />
:: Include a Timeline update on the request when this node has completed<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Email Connections<br />
<div class="mw-collapsible-content"><br />
::RequestConnections> Connections > Email Connections<br />
<br />
Use this node to email connections of the request. <br />
<br />
Configuration options include:<br />
<br />
:* '''Mailbox Name''' - Specify the mailbox from which the email will be sent<br />
:* '''Email Template''' - Specify the email template which will be sent<br />
:* '''Recipients''' - Specify if the email should be sent to '''All''' users, '''Internal''' users only, or '''External''' users only of the following '''Connection Type'''<br />
:* '''Connection Type''' - Specify which connection types should receive the email notification<br />
<br />
[[File:Connections_Email.png|600px]]<br />
<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Remove All Connections<br />
<div class="mw-collapsible-content"><br />
::RequestConnections> Connections > Remove All Connections<br />
<br />
Use this node to remove connections from the request. <br />
<br />
Configuration options include:<br />
<br />
:* '''Recipients''' - Specify if the connections to be removed should be '''All''' users, '''Internal''' users only, or '''External''' users only of the following '''Connection Type'''<br />
:* '''Connection Type''' - Specify which connection types should be removed from the request<br />
<br />
[[File:Connections_Remove_All.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Remove Connection<br />
<div class="mw-collapsible-content"><br />
::RequestConnections> Connections > Remove Connection<br />
<br />
Use this node to remove specific connections from the request. <br />
<br />
Configuration options include:<br />
<br />
:* '''Co-worker''' - Choose which internal user will be removed from the request <br />
:* '''Contact''' - Choose which external user will be removed from the request<br />
<br />
It is possible to remove a single Co-Worker and Contact from a request in a single node, but it is not mandatory to do so. <br />
<br />
[[File:Connections_Remove.png|600px]]<br />
</div><br />
</div><br />
<br />
==Request Members==<br />
<br />
Use the Request Members node at any stage in a process to automatically add or remove another analyst or subject matter expert into a Request.<br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Add Request Member<br />
<div class="mw-collapsible-content"><br />
::Members > Add Request Member<br />
<br />
Use this node to add Service Manager analysts to the request. This option allows you to automatically add additional analysts to the request to assist with the resolution or as interested parties.<br />
<br />
:* Members can be added even if they do not have the rights to view the request type, nor the requests which belong to the team against which the request belongs. The added Member's rights will be elevated just for the specific Request.<br />
:* Members can be notified about being added via Hornbill Notifications, and or email depending on the following Service Manager system setting: '''guest.app.requests.notification.notificationType.members'''<br />
<br />
[[File:at_requestMembers_members_addRequestMember_sept2019.png|600px]]<br />
<br />
:* '''Member''' - This option can contain the Co-worker to be added as a Request member. If supplied, "Member (From Variable)" option will be ignored.<br />
:* '''Member (From Variable)''' - This option can contain the Id of a Co-worker (h_user_id in h_sys_accounts table). This option should only be supplied if "Member" option is not set.<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Remove Request Member<br />
<div class="mw-collapsible-content"><br />
::Members > Remove Request Member<br />
<br />
Use this option to remove members from a request. <br />
<br />
:* Select which member to remove<br />
<br />
[[File:at_requestMembers_members_removeRequestMember_sept2019.png|600px]]<br />
<br />
:* '''Member''' - This option can contain the Co-worker to be removed from the Request members. If supplied, "Member (From Variable)" option will be ignored.<br />
:* '''Member (From Variable)''' - This option can contain the Id of a Co-worker (h_user_id in h_sys_accounts table). This option should only be supplied if "Member" option is not set.<br />
</div><br />
</div><br />
<br />
==Requests==<br />
<br />
==== Access Control ====<br />
<br />
Use the Access Control to lock or unlock the Details section or the Actions on a request. Only users with the appropriate application right (update locked requests) will be able to modify the details or use an Action once locked. This right has been added to the following roles: Incident Management Full Access, Change Management Full Access, Problem Management Full Access, Release Management Full Access, Service Request Full Access, and Service Desk Admin.<br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Lock / Unlock Request Actions<br />
<div class="mw-collapsible-content"><br />
::Requests > Access Control > Lock / Unlock Actions<br />
<br />
Locks or Unlocks the selected Actions on on a request. This includes sections that are associated to the actions<br />
<br />
:* '''Lock Update'''<br />
:: Prevents the manual adding of an update to the Timeline.<br />
:* '''Lock Callback'''<br />
:: Prevents the use of the Phone action<br />
:* '''Lock Attach'''<br />
:: Prevents the use of the Attach Action and the Attachments section of the request<br />
:* '''Lock Link'''<br />
:: Prevents the linking of requests to this request and stops the removal of linked requests in the requests section <br />
:* '''Lock Linked Services'''<br />
:: Prevents the linking of Services to this request and stops the removal of linked Services in the requests section <br />
:* '''Lock Email'''<br />
:: Prevents the sending of email <br />
:* '''Lock Change Customer''' <br />
:: Prevents the changing of the customer<br />
:* '''Lock Assign''' <br />
:: Prevents the request from being manually assigned or re-assigned<br />
:* '''Lock Connections'''<br />
:: Prevents further Connections from being added the removal of existing connections in the Connections section<br />
:* '''Lock Escalate'''<br />
:: Prevents the manual changing of the Priority<br />
:* '''Lock Asset'''<br />
:: Prevents the adding or removing of an asset<br />
:* '''Lock Workaround'''<br />
:: Prevents the accepting of a workaround being added on a Known Error<br />
:* '''Lock Publish'''<br />
:: Prevents the publishing of a Problem or Known Error record to the Self Service Portal<br />
:* '''Lock Board'''<br />
:: Prevents the request from being added to a board<br />
:* '''Lock Schedule'''<br />
:: Prevents the scheduling of a Change Request<br />
:* '''Lock Solution'''<br />
:: Prevents the ability to accept a solution provided to an Incident from a Problem or Known Error<br />
:* '''Lock Resolve'''<br />
:: Prevents a request from manually being resolved<br />
:* '''Lock Cancel'''<br />
:: Prevents a request from being cancelled <br />
:* '''System Timeline Update'''<br />
:: Use the provide System Timeline Update to show that a lock or unlock has taken place<br />
:* '''Manual Timeline Update'''<br />
:: Provide a custom Timeline Update message when a lock or unlock has taken place<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Lock Request Details<br />
<div class="mw-collapsible-content"><br />
::Requests > Access Control > Lock Request Details<br />
<br />
Locks the Details section of a request from this point on in the workflow. Only users that have the '''update locked requests''' application right assigned to one of their roles will be able to update the request details. <br />
<br />
[[File:accesscontrollock.png|600px]]<br />
<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Unlock Request Details<br />
<div class="mw-collapsible-content"><br />
::Requests > Access Control > Unlock Request Details<br />
<br />
Unlocks the Details section of a request from this point on in the workflow. All users that have access to the request will be able to edit the Details section of the request. <br />
<br />
[[File:accesscontrolunlock.png|600px]]<br />
<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
==== Assessment ====<br />
Use the Assessment node to instigate an Impact Assessment on a request<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Impact Assessment<br />
<div class="mw-collapsible-content"><br />
:Using this option will present an Impact Assessment option on the ''Escalate Action'' of a request. When selected a user will be taken through a number of defined questions, and determined by their responses, an impact level will be automatically applied to the request.<br />
<br />
:* '''Assessment'''<br />
:: The name of the assessment that you wish to run on the request<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
====Assignment====<br />
<br />
Use the Assignment node to automatically assign a request to different Service Manager users or teams.<br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Assign to Service Team<br />
<div class="mw-collapsible-content"><br />
::Requests > Assignment > Assign to Service Team<br />
<br />
Assign to Service Team assigns the request to the team that supports the service. If no team supports the service that the request is logged against then the request is not assigned. If more than one team supports the service, the request is assigned to the team that has supported the service the longest. This automated task does not assign the request to an individual within the team(s) supported by the service.<br />
<br />
[[File:Assign_Service_Team.png|600px]]<br />
<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Assign to Team * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="AssignToTeam"></div><br />
* Assign to Team<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmassigntoteam.png|thumb|link=https://wiki.hornbill.com/images/8/8a/Bpmassigntoteam.png|Assign to Team]]<br />
==== Assign to Team ====<br />
Use this option to assign the request to a specified team. <br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Team'''<br />
:: Select a team from the list of available teams that have been defined under the Organizational Data in Administration<br />
:* '''Team (From Variable)'''<br />
:: Assign to a Team based on a variable that has been populated using Progressive Capture or through the Get Information nodes<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' <br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Assign to Owner * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Assign to Owner<br />
<div class="mw-collapsible-content"><br />
::Requests > Assignment > Assign to Owner<br />
<br />
Use this option to assign the request to a specific Service Manager analyst.<br />
<br />
:* Define which team the request will be assigned to<br />
:* Define which analyst within the above team, the request will be assigned to<br />
<br />
[[File:Assign_To_Owner.png|600px]]<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="AssignToOwnerVariable"></div><br />
* Assign to Owner (variable)<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmassigntoteam.png|thumb|link=https://wiki.hornbill.com/index.php/File:Assign_To_Owner_Variable.png|Assign to Owner (variable)]]<br />
==== Assign to Owner (variable) ====<br />
Use this option to assign the request to a specific Service Manager analyst using a dynamic value provided by a runtime variable. <br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Team'''<br />
:: Select a team from the list of available teams that have been defined under the Organizational Data in Administration. <br />
:: If no team specified and if the designated owner is a member of multiple teams, the team that gets assigned will be the first team in a list of owner teams ordered by team name.<br />
:* '''Owner'''<br />
:: Assign to an analyst based on a variable that has been populated using Progressive Capture or through the Get Information nodes<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' <br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Assign to Request Creator<br />
<div class="mw-collapsible-content"><br />
::Requests > Assignment > Assign to Request Creator<br />
<br />
Use this option to automatically assign the request to the Service Manager analyst who created / raised the request via Progressive Capture<br />
<br />
[[File:Assign_Request_Creator.png|600px]]<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Assign to Most Available Analyst<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:Assign_Most_Available.png|thumb|link=https://wiki.hornbill.com/images/8/83/Assign_Most_Available.png|Assign to Most Available Analyst BPM Operation]]<br />
Using ''Assign to Most Available Analyst'' is a great way to automatically assign out requests to the members of a team. This operation works on the basis of capacity. The system will look through the members of the selected team and will assign the request to the member who has the least amount of open requests. If more than one team member have an equal number of open requests and have the least amount of assigned requests, the system will allocate the request to the team member who has had the greatest amount of time pass since their last assignment.<br />
<br />
The system will take into account the user status which is found on their profile. If the user status is set to anything other than 'Available' that user/analyst/team member will not be considered as a request owner<br />
<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''Team'''<br />
:: Select the team that you would like to participate in the Round Robin Assignment. This is a mandatory setting and must be set to Manual and have a team assigned.<br />
:* '''Include Offline Users'''<br />
:: This takes into account if the user is logged into Hornbill and have an active session. The default behavior (Auto) is to include offline users. Set this option to ''No'' if you don't want requests assigned to users that are not online. If all the team members are off-line, the request will be assigned to just the team.<br />
:* '''System Timeline Update''' <br />
::Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="RoundRobin"></div><br />
* Assign on Round Robin Basis<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmroundrobin.png|thumb|link=https://wiki.hornbill.com/images/4/41/Bpmroundrobin.png|Round Robin BPM Operation]]<br />
Using the ''Assign Round Robin'' is a great way to automatically assign out requests to the members of a team . The system will look through the members of the selected team and will assign the request to the member who has had the greatest amount of time pass since their last assignment. The system will take into account the user's status which is found on their profile. If the user's status is set to anything other than 'Available' that user will not be considered for assignment. This does not take into account the volume of requests assigned to each user.<br />
<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''Team'''<br />
:: Select the team that you would like to participate in the Round Robin Assignment. This is a mandatory setting and must be set to Manual and have a team assigned.<br />
:* '''Include Offline Users'''<br />
:: This takes into account if the user is logged into Hornbill and have an active session. The default behavior (Auto) is to include offline users. Set this option to ''No'' if you don't want requests assigned to users that are not online. In order for Round Robin to work effectively, users must become disciplined in logging off Hornbill via the User menu located to the top right. Simply closing the browser window does not end a users session. <br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' <br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
====Authorisation Decision====<br />
<br />
Use the Authorisation Decision node to mark on a Change or Service Request form if an authorisation decision has been made. <br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Approved<br />
<div class="mw-collapsible-content"><br />
::Requests > Authorisation Decision > Approved<br />
<br />
[[File:Authoirsation_Approved.png|600px]]<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Rejected<br />
<div class="mw-collapsible-content"><br />
::Requests > Authorisation Decision > Rejected<br />
[[File:Authorisation_Rejected.png|600px]]<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
====Collaboration====<br />
<br />
Use the Collaboration node to post an automated update onto a public workspace at any stage in a process. This will be visible to members of the specified workspace, on the timeline of the workspace and their Newsfeeds. <br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Comment on Existing Public Workspace Post<br />
<div class="mw-collapsible-content"><br />
::Requests > Collaboration > Comment on Existing Public Workspace Post<br />
<br />
Use this node should you wish to automate the adding of a comment to an existing Post in a workspace. <br />
* Using this node will always look to add the comment to the '''Most''' recent '''Post''' from the '''Request''' in the workspace.<br />
<br />
An example use case for this node, is to include the Comment Update after key milestones for a request > Logged, In progress, Resolved, Closed or Change Accepted, Scheduled, Implemented, Reviewed. This will allow members of the workspace to stay informed about request progress without the need to monitor lists or queues. <br />
* This node will only be applicable if the '''Post to Public Workspace''' Node has been used and a Post already exists from the request in a Workspace.<br />
<br />
:* Specify the name of the Workspace to post to<br />
:* Define the content for the post<br />
:* Define if the timeline of the Request should be updated<br />
<br />
[[File:Comment_on_a_public_post.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Comment on Request Source Post<br />
<div class="mw-collapsible-content"><br />
: Use this option when the source of the request is from a post in order to post a comment back to this source post.<br />
::Requests > Collaboration > Comment on Request Source Post<br />
<br />
:* Specify the content to be included in the comment<br />
:* Specify if you would like the Request ID and Summary to be included in the comment<br />
:* Define if the timeline of the Request should be updated<br />
<br />
[[File:Comment_on_a_public_post.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Post to Public Workspace<br />
<div class="mw-collapsible-content"><br />
::Requests > Collaboration > Post to Public Workspace<br />
<br />
Use this node should you wish to automate the '''Posting''' to a specific workspace, and to it's members at one or multiple points in your business process. This will allow you to post important information to Collaboration users pertaining to the request against which your business process is running.<br />
<br />
One example of it's use would be during a Change Request, to let interested parties / stakeholders (Workspace Members) know that the Change had been accepted, scheduled and would therefore be being deployed. The member's of the workspace may not be Service Manager subscribed users, but their Collaboration subscription would enable them to be kept informed about Change, Problem, or Major Incident notifications by receiving notifications about the automated '''Posting''' from this node to their workspaces. <br />
<br />
:* Specify the name of the Workspace to post to<br />
:* Define the content for the post<br />
:* Define if the request id will be included in the post<br />
:* Define if the request Summary will be included in the post<br />
:* Define if the post to the Workspace will be appended to the timeline of the request<br />
<br />
[[File:at_requests_collaboration_postToPublicWorkspace.png|600px]]<br />
</div><br />
</div><br />
<br />
====Email Notifications==== <br />
<br />
Use the Email Notification nodes to send email templates to different Request stakeholders. Configuration options include recipient, which email template to use and which mailbox to send the email from.<br />
<br />
<!-- ************************************************************************************************************** --><br />
<!-- * Email Contact * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="EmailContact"></div><br />
* Email Contact<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmemailcontact.png|thumb|link=https://wiki.hornbill.com/images/6/68/Bpmemailcontact.png|Email Contact]]<br />
====Email Contact ====<br />
Use this node to send an email to a contact that has a contact record stored in Hornbill<br />
====Options====<br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Contact'''<br />
:: Select a contact from the searchable pick list. Only contacts that have records stored in Hornbill will be available<br />
:* '''Mailbox Name'''<br />
:: Select the Hornbill Mailbox from which you want this sent. If this is not set, it will use the default mailbox for the Service that the request has been raised under<br />
:* '''Email From'''<br />
:: Select the email address that you want listed as the sender. <br />
:* '''Email Template Entity'''<br />
:: Select the Entity from which you want to use the associated Email Templates. For example select the Change Request Entity to use email templates that contain variables which are specific to this entity. Leave this as ''Auto'' to use the default ''Request'' entity.<br />
:* '''Email Template'''<br />
:: Select the email template that you want to use for this email<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Email Co-worker * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="EmailCo-worker"></div><br />
* Email Co-worker<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmemailcoworker.png|thumb|link=https://wiki.hornbill.com/images/b/b3/Bpmemailcoworker.png|Email Co-worker]]<br />
====Email Co-worker ====<br />
Use this node to send an email to a Co-worker that has a user account in Hornbill<br />
====Options====<br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Co-worker'''<br />
:: Select a Co-worker from the searchable pick list. Only Co-workers that have accounts in Hornbill will be available<br />
:* '''Co-worker (From Variable)<br />
:: Set a Co-worker from a variable<br />
:* '''Mailbox Name'''<br />
:: Select the Hornbill Mailbox from which you want this sent. If this is not set, it will use the default mailbox for the Service that the request has been raised under<br />
:* '''Email From'''<br />
:: Select the email address that you want listed as the sender. <br />
:* '''Email Template Entity'''<br />
:: Select the Entity from which you want to use the associated Email Templates. For example select the Change Request Entity to use email templates that contain variables which are specific to this entity. Leave this as ''Auto'' to use the default ''Request'' entity.<br />
:* '''Email Template'''<br />
:: Select the email template that you want to use for this email<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Email Customer * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="EmailCustomer"></div><br />
* Email Customer<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmemailcustomer.png|thumb|https://wiki.hornbill.com/images/2/23/Bpmemailcustomer.png|Email Customer]]<br />
<br />
====Email Customer ====<br />
Use this node to send an email to the customer that is associated to the request<br />
====Options====<br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Mailbox Name'''<br />
:: Select the Hornbill Mailbox from which you want this sent. If this is not set, it will use the default mailbox for the Service that the request has been raised under<br />
:* '''Email From'''<br />
:: Select the email address that you want listed as the sender. <br />
:* '''Email Template Entity'''<br />
:: Select the Entity from which you want to use the associated Email Templates. For example select the Change Request Entity to use email templates that contain variables which are specific to this entity. Leave this as ''Auto'' to use the default ''Request'' entity. <br />
:* '''Email Template'''<br />
:: Select the email template that you want to use for this email<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Email Customer's Manager * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="EmailCustomerManager"></div><br />
* Email Customer's Manager<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmemailcustomermanager.png|thumb|link=https://wiki.hornbill.com/images/9/9e/Bpmemailcustomermanager.png|Email Customer's Manager]]<br />
====Email Customer's Manager ====<br />
Use this node to send an email to the Manager of the customer that is associated to the request<br />
<br />
====Options====<br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Mailbox Name'''<br />
:: Select the Hornbill Mailbox from which you want this sent. If this is not set, it will use the default mailbox for the Service that the request has been raised under<br />
:* '''Email From'''<br />
:: Select the email address that you want listed as the sender. <br />
:* '''Email Template Entity'''<br />
:: Select the Entity from which you want to use the associated Email Templates. For example select the Change Request Entity to use email templates that contain variables which are specific to this entity. Leave this as ''Auto'' to use the default ''Request'' entity. <br />
:* '''Email Template'''<br />
:: Select the email template that you want to use for this email<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Email External Address * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="EmailExternalAddress"></div><br />
* Email External Address<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmemailexternal.png|thumb|link=https://wiki.hornbill.com/images/4/4a/Bpmemailexternal.png|Email External Address]]<br />
====Email External Address ====<br />
Use this node to send an email to one or more email addresses that are not available within Hornbill<br />
<br />
====Options====<br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''External Addresses'''<br />
:: Add one or more email addresses that are not held within Hornbill. Multiple email address must be separated by a comma<br />
:* '''Mailbox Name'''<br />
:: Select the Hornbill Mailbox from which you want this sent. If this is not set, it will use the default mailbox for the Service that the request has been raised under<br />
:* '''Email From'''<br />
:: Select the email address that you want listed as the sender. <br />
:* '''Email Template Entity'''<br />
:: Select the Entity from which you want to use the associated Email Templates. For example select the Change Request Entity to use email templates that contain variables which are specific to this entity. Leave this as ''Auto'' to use the default ''Request'' entity. <br />
:* '''Email Template'''<br />
:: Select the email template that you want to use for this email<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Email Request Owner * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="EmailOwner"></div><br />
* Email Request Owner<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmemailowner.png|thumb|link=https://wiki.hornbill.com/images/e/ea/Bpmemailowner.png|Email Request Owner]]<br />
<br />
====Email Request Owner ====<br />
Use this node to send an email to the owner of the request<br />
<br />
====Options====<br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Mailbox Name'''<br />
:: Select the Hornbill Mailbox from which you want this sent. If this is not set, it will use the default mailbox for the Service that the request has been raised under<br />
:* '''Email From'''<br />
:: Select the email address that you want listed as the sender. <br />
:* '''Email Template Entity'''<br />
:: Select the Entity from which you want to use the associated Email Templates. For example select the Change Request Entity to use email templates that contain variables which are specific to this entity. Leave this as ''Auto'' to use the default ''Request'' entity. <br />
:* '''Email Template'''<br />
:: Select the email template that you want to use for this email<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Get Request Information * --><br />
<!-- ************************************************************************************************************** --><br />
====Get Request Information====<br />
Use the Get Request Information node at any stage in a process and preceding another process node when you want to make the variables of the Request available. Variables may include Customer, Status, Site, Priority, or any Answers to Customer defined questions from different Progressive capture forms or attributes of the customer or organisation of the request the business process is running against.<br />
<br />
<!-- ******************************************************** Customer Details ********************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Customer Details<br />
<div class="mw-collapsible-content"><br />
::Requests > Get Request Information > Customer Details<br />
<br />
Use this option at the start of a stage or preceding a task / authorisation / decision node to load the Customer's organisations details (variables) into the stage, and to make them available to other node operations where you may wish to specify or refer to '''Variable''' values from the customer of the request.<br />
<br />
:* If you are using the decision node, and want to branch the process based on the Customers department, site, job title or any of the custom fields for the customer, you will need to use the Get Request Information > Customer Details node at the beginning of the stage, or before the decision node in order to see any variable values be available to evaluate against in the Custom Expression builder.<br />
<br />
[[File:Customer_Details.png|600px]]<br />
</div><br />
</div><br />
<br />
<!-- ******************************************************** Source Email Details ********************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Source Email Details<br />
<div class="mw-collapsible-content"><br />
::Requests > Get Request Information > Source Email Details<br />
<br />
When the origin of a Request is an email (i.e. raised via Routing Rules or Email View), this option can be used to retrieve the details of the email message. This includes FROM address, TO address, subject, content, date sent and date received. You can use the Variable Picker or the Expressions Builder to make a decision on the retrieved details.<br />
<br />
[[File:Source_Email_Details.png|600px]]<br />
</div><br />
</div><br />
<br />
<!-- ******************************************************** Organisation Details ********************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Organisation Details<br />
<div class="mw-collapsible-content"><br />
::Requests > Get Request Information > Organisation Details<br />
<br />
Use this option at the start of a stage or preceding a task / authorisation / decision node to load the Customer's Organisations details (variables) into the stage, and to make them available to other node operations where you may wish to specify or refer to '''Variable''' values from the customer's organisation of the request.<br />
<br />
:* If you are using the decision node, and want to branch the process based on the Industry of the Customers Organisations, or their address, or any customer fields for the customers Organisations you will need to use the Get Request Information > Organisation Details node at the beginning of the stage, or before the decision node in order to see any variable values be available to evaluate against in the Custom Expression builder.<br />
<br />
[[File:Org_Details.png|600px]]<br />
</div><br />
</div><br />
<br />
<!-- ******************************************************** Owner Details ********************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="GetRequestInfoOwner"></div><br />
* Owner Details<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:getrequestownerbpm.png|thumb|link=https://wiki.hornbill.com/images/8/8b/Getrequestownerbpm.png|Get Request Owner Details BPM]] Use this operation when you need to use information about the owner of the request for making decisions or to populate other BPM operations with this data. This operation will populate a number of variables that represent the information about the owner of the request. <br />
<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
<br><br />
<br><br />
The Variables that are available after this operation has been used include the following:<br />
<br />
{|<br />
|- valign="top"<br />
|style="width:300px"|<br />
<br />
* First Name<br />
* Last Name<br />
* Job Title<br />
* Site<br />
* Manager<br />
* Primary Email Address<br />
* Primary Phone Number<br />
* Mobile Phone Number<br />
* Interests<br />
* Personal Interests<br />
* Qualifications<br />
* Skills<br />
* Gender<br />
* Religion<br />
* Nationality<br />
* Country<br />
* Language<br />
|style="width:300px"|<br />
* Company<br />
* Company Custom 1<br />
* Company Custom 2<br />
* Company Custom 3<br />
* Company Custom 4<br />
* Company Custom 5<br />
* Company Custom 6<br />
* Division<br />
* Division Custom 1<br />
* Division Custom 2<br />
* Division Custom 3<br />
* Division Custom 4<br />
* Division Custom 5<br />
* Division Custom 6<br />
* Costcenter<br />
* Costcenter Custom 1<br />
* Costcenter Custom 2<br />
* Costcenter Custom 3<br />
|style="width:300px"|<br />
* Costcenter Custom 4<br />
* Costcenter Custom 5<br />
* Costcenter Custom 6<br />
* Department<br />
* Department Custom 1<br />
* Department Custom 2<br />
* Department Custom 3<br />
* Department Custom 4<br />
* Department Custom 5<br />
* Department Custom 6<br />
* Customer Custom 1<br />
* Customer Custom 2<br />
* Customer Custom 3<br />
* Customer Custom 4<br />
* Customer Custom 5<br />
* Customer Custom 6<br />
* Customer Custom 7<br />
* Customer Custom 8<br />
|}<br />
<br />
<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- ******************************************************** Request Details ********************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="GetRequestInfoRequestDetails"></div><br />
* Request Details<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:getrequestdetailsbpm.png|thumb|link=https://wiki.hornbill.com/images/b/bb/Getrequestdetailsbpm.png|Get Request Request Details BPM]] Use this operation when you need to use information held within a request for making decisions or to populate other BPM operations with this data. This operation will populate a number of variables that represent the information held within a request. <br />
<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
<br><br />
<br><br />
The Variables that are available after this operation has been used include the following:<br />
<br />
{|<br />
|- valign="top"<br />
|style="width:300px"|<br />
* Assigned Team<br />
* Assigned Team (For Tasks)<br />
* Authorisation (Approved/Rejected)<br />
* Catalog Item<br />
* Catalog Item Id<br />
* Change Type<br />
* Closure Category<br />
* Created By<br />
* Customer<br />
* Customer Company<br />
* Customer Manager<br />
* Customer Primary Email Address<br />
* Customer Primary Phone Number<br />
* Customer Secondary Email Address<br />
* Customer Secondary Phone Number<br />
* Customer Type (Coworker/Contact)<br />
* Date Logged<br />
* Description<br />
* Fix By Date<br />
|style="width:300px"|<br />
* Impact<br />
* Linked Requests<br />
* Logging Category<br />
* Owner<br />
* Owner (For Tasks)<br />
* Previous Task Owner<br />
* Priority<br />
* Release Type<br />
* Reopen Count<br />
* Resolution<br />
* Respond By Date<br />
* Request Assigned (Yes/No)<br />
* Scheduled End Date<br />
* Scheduled Start Date<br />
* Service<br />
* Service Id<br />
* Service Level<br />
* Service Level Agreement<br />
* Site<br />
* Source (Analyst/Email/Post/Request/Self Service)<br />
* Status<br />
* Sub Status Name<br />
* Summary<br />
|style="width:300px"|<br />
* Time Logged<br />
* Urgency<br />
* Within Fix Time (Yes/No)<br />
* External Reference Number<br />
* Within Response Time (Yes/No)<br />
* Custom Field A<br />
* Custom Field B<br />
* Custom Field C<br />
* Custom Field D<br />
* Custom Field E<br />
* Custom Field F<br />
* Custom Field G<br />
* Custom Field H<br />
* Custom Field I<br />
* Custom Field J<br />
* Custom Field K<br />
* Custom Field L<br />
* Custom Field M<br />
* Custom Field N<br />
* Custom Field O<br />
* Custom Field P<br />
* Custom Field Q<br />
|}<br />
<br />
<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- ****************************************************** Progressive Capture Answers ******************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Progressive Capture Answers<br />
<div class="mw-collapsible-content"><br />
::Requests > Get Request Information > Progressive Capture Answers<br />
<br />
Use this option before a '''Decision''' node, if you want to load into the process the '''Answers''' from Progressive Capture Custom Forms. By selecting this option, you can load and make available the answers to progressive capture custom forms, to then evaluate in following '''Decision''' nodes. <br />
<br />
An example of the use of this node could be if you have created a custom form which asked questions about a new start, and one of these questions was to determine which Department they would be joining, it is feasible in your business process that you may wish to check the answer value, and if it was '''Sales''' then branch in one direction, and if it was '''Accounts''' you may want to branch in another direction. Using the Get Request Information > Progressive Capture Answers will allow these answers to be evaluated in a supporting business process.<br />
[[File:Progressive_Capture_Answers.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Service Details<br />
<div class="mw-collapsible-content"><br />
Use this operation to extract details of the service that is set against a request in order to use the Service Details to use with decision node outcomes within your workflow. The following variables are populated<br />
<br />
:* Custom Fields A - F<br />
:* Feedback Enabled<br />
:* Portal Visibility<br />
:* Portfolio Status<br />
:* Service Category<br />
:* Service Name<br />
:* Service Owner ID<br />
:* Service Owner Name<br />
:* Status<br />
[[File:bp_get_info_service.png|600px]]<br />
</div><br />
</div><br />
<br />
<!-- ******************************************************** Site Details ********************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="GetRequestInfoRequestDetails"></div><br />
* Site Details<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:getrequestsitebpm.png|thumb|Get Request Site Details BPM]] Use this operation when you need to use information held within a request for making decisions or to populate other BPM operations with this site details. This operation will populate a number of variables that represent the site information held within a request. <br />
<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
<br><br />
<br><br />
The Variables that are available after this operation has been used include the following:<br />
<br />
{|<br />
|- valign="top"<br />
|style="width:300px"|<br />
* Building<br />
* Country<br />
* Company ID<br />
* Company Name<br />
* Notes<br />
|style="width:300px"|<br />
* Site Code<br />
* Site ID<br />
* Site Name<br />
* Type<br />
|}<br />
<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- ******************************************************** Team Details ********************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="GetTeamDetails"></div><br />
* Team Details<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:getteamdetails.png|thumb|Get Team Details BPM]] Use this operation when you need to get information about the team that the request is assigned to. This can be used for making decisions or to populate other BPM operations with this team details. Team Manager and Team Lead information can also be returned to help with notifications and assignments for important requests. <br />
<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
<br><br />
<br><br />
The Variables that are available after this operation has been used include the following:<br />
<br />
{|<br />
|- valign="top"<br />
|style="width:300px"|<br />
* Team (For Tasks)<br />
* Name<br />
* Notes<br />
* Manager ID<br />
* Team Leader ID<br />
* Attribute 1<br />
|style="width:300px"|<br />
* Attribute 2<br />
* Attribute 3<br />
* Attribute 4<br />
* Attribute 5<br />
* Attribute 6<br />
|}<br />
<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
====Integration====<br />
<br />
Use the Integration node at any stage of a process, where you wish to invoke specific actions against a 3rd party application from the available list of applications.<br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Create Jira Request <br />
<div class="mw-collapsible-content"><br />
::Requests > Integration > Create Jira Request<br />
[[File:Creat_Jira_Request.png|600px]]<br />
<br />
Create a new request in a specific Jira instance and against a parent project. Using this option will create a new request in Jira, of the required type. <br />
*This will pass the summary and description of the Service Manager request to the newly created request in Jira, and then pass back the Jira request id into the '''External Reference''' field on the Service Manager request if successful, as well as include an update in the request timeline if required, with a hyperlink to the request in Jira. If the request to raise a request fails, this will also be written to the Service Manager Timeline with the reason for the failure to create.<br />
<br />
The following options need to be Configured:<br />
<br />
*'''Request id:''' Leave as Auto to pick up on the Request id against which the process is running.<br />
*'''Use App Settings:''' Set to Yes if you want to use the global values you can define in the system settings for Service Manager (Home > Service Manager > Application), select No if you want to manually set the values to use for this specific node.<br />
<br />
If selecting Yes, the following system settings will need to have been set and will be used:<br />
<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.issueType''': This is the Jira Issue type which will be created - Bug, Improvement, New Feature, Task or custom created on your Jira instance.<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.userName''': The Username of the account in Jira which the new request will be created under.<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.password''': The Password for the user account in Jira which the new request will be created under.<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.projectName''': The Parent Project to which the new request will belong.<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.url''': The full URL for the Jira instance against which the new request will be created.<br />
<br />
If selecting No the following options will need to be manually set<br />
<br />
*'''URL:''' The full URL for the Jira instance against which the new request will be created.<br />
*'''Project Name:''' The Parent Project to which the new request will belong.<br />
*'''Issue Type:''' This is the Jira Issue type which will be created - Bug, Improvement, New Feature, Task or custom created on your Jira instance.<br />
*'''Username:''' The Username of the account in Jira which the new request will be created under.<br />
*'''Password:''' The Password for the user account in Jira which the new request will be created under.<br />
<br />
In either case the following can also be configured manually.<br />
<br />
*'''Update Timeline:''' Leave this as Auto if you want the Service Manager Request Timeline to be updated to record the fact that a Request has been created in Jira, and for the update to contain a hyperlink to the newly created request in Jira (as shown below)<br />
[[File:Jira_Create.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Add Jira Request Comment<br />
<div class="mw-collapsible-content"><br />
::Requests > Integration > Add Jira Request Comment<br />
[[File:Add_Jira_Comment.png|600px]]<br />
<br />
Add a comment to an existing Jira request.<br />
* This option will allow for a predefined comment to be added to a specific Jira Request. The configured comment will be added to the Jira request id, which is held in the '''External Reference''' field of the Service Manager request, against which this node is invoked from it's underlying business process. In most cases this will have been created automatically by using the '''Create Jira Request''' earlier in the same business process, but the Jira Request id can have been added manually to the Service Manager request '''External Reference''' field as well. <br />
<br />
The following options need to be Configured:<br />
<br />
*'''Request id:''' Leave as Auto to pick up on the Request id against which the process is running.<br />
*'''Use App Settings:''' Set to Yes if you want to use the global values you can define in the system settings for Service Manager (Home > Service Manager > Application), select No if you want to manually set the values to use for this specific node.<br />
<br />
If selecting Yes, the following system settings will need to have been set and will be used:<br />
<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.userName''': The Username of the account in Jira which the new comment will be created under.<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.password''': The Password for the user account in Jira which the new comment will be created under.<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.url''': The full URL for the Jira instance against which the new request comment will be added.<br />
<br />
If selecting No the following options will need to be manually set<br />
<br />
*'''URL:''' The full URL for the Jira instance against which the new request will be created.<br />
*'''Username:''' The Username of the account in Jira which the new comment will be created under.<br />
*'''Password:''' The Password for the user account in Jira which the new request comment will be added.<br />
<br />
In either case the following will also need to be configured manually.<br />
<br />
*'''Comment:''' Configure the message content which will be added to the Jira Request<br />
*'''Update Timeline:''' Leave this as Auto if you want the Service Manager Request Timeline to be updated to record the fact that a comment has been added to a request in Jira, and for the timeline update to contain a hyperlink to the newly created comment in the Jira request (as shown below)<br />
[[File:Jira_Comment.png|600px]]<br />
<br />
This will add the Comment into the '''Comments''' tab of the Activity section on the Jira request as shown below.<br />
[[File:Jira_Comment_Jira.png|600px]]<br />
</div><br />
</div><br />
<br />
<!-- ******************************************************** START OF NEW REQUEST ********************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="integrationnewrequest"></div><br />
* Log New Service Request<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmintegrationrequest.png|thumb|link=https://wiki.hornbill.com/images/a/a6/Bpmintegrationrequest.png|Log New Request]]<br />
==== Log New Service Request ====<br />
This node can be used by other Hornbill apps to raise requests within Service Manager. <br />
==== Options ====<br />
:* ''' Summary''' <br />
:: To add a summary to the new request, set to ''Manual'' and provide the required text for the summary<br />
:* ''' Description''' <br />
:: To add a description to the new request, set to ''Manual'' and provide the required text for the description <br />
:* ''' Service '''<br />
:: To add a Service to the new request, set to ''Manual'' and select a Service from the pick list<br />
:* ''' Catalog Item '''<br />
:: To add a Catalog Item to the new request, set to ''Manual'' and provide the name of the Catalog Item<br />
:* ''' Priority '''<br />
:: To add a Priority to the new request, set to ''Manual'' and select a Priority from the pick list<br />
:* ''' Category '''<br />
:: To add a Request Category to the new request, set to ''Manual'' and click on the edit button to open the Category selector.<br />
:* ''' Team '''<br />
:: To add a Team to the new request, set to ''Manual'' and select a team from the pick list <br />
:* ''' Owner '''<br />
:: To add an Owner to the new request, set to ''Manual'' and select start typing the name of the user and then select them from the pick list<br />
:* ''' Site '''<br />
:: To add a Site to the new request, set to ''Manual'' and select a Site from the pick list <br />
:* ''' Status '''<br />
:: To set the status on the new request, set to ''Manual'' and select a status from the pick list <br />
:* '''System Timeline Update'''<br />
:: To include a Timeline entry in the new request to record the raising of the new request, set to ''Manual'' and select ''Yes''<br />
:* ''' Manual Timeline Update '''<br />
:: To provide a unique Timeline Update in the new request, set to ''Manual'' and click on the edit button to open the text window to add your unique timeline entry.<br />
:* ''' Visibility'''<br />
:: Set the Visibility of the Timeline Entry if one is provided.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
====Linked Requests====<br />
Use the Linked Requests node to automatically post updates and resolve linked Requests. Linked requests are those that have been linked using the Link Action Item on a request form. <br />
<br />
<!-- ******************************* START OF RESOLVE LINKED REQUESTS ******************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Resolve Linked Requests<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmresolvelinkedrequest.png|thumb|link=https://wiki.hornbill.com/images/1/19/Bpmresolvelinkedrequest.png|Resolve Linked Requests]]<br />
<br />
==== Resolve Linked Requests ====<br />
This option allows you at specific times in a process to resolve linked requests. The options include defining the update text which will be added to the linked requests, as well as setting granular options to decide which linked request types should be updated. For example you may only want the Incidents from the Problem to receive the update, and not the Change, which the Problem is also linked too. <br />
<br />
==== Options ====<br />
:* '''Request ID'''<br />
:: This value is automatically applied. Leave this setting as ''Auto''<br />
:* '''Request Type'''<br />
:: When set, only the request type that is selected will be resolved. When not set, all linked requests will be resolved<br />
:* '''Status'''<br />
:: Select the status that you wish to set the linked requests to. Either '''Resolve''' or '''Close'''<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
:* '''System Timeline Update'''<br />
::Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
::Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Stop Timers'''<br />
:: If there are Service Level Target Timers (Response or Resolution) on the linked request, these timers will be stopped and the Target marked<br />
:* '''Notify Owner'''<br />
:: Notify the owner of any linked request when resolved. The type of notification will be based on the Service Manager application settings<br />
::: '''guest.app.requests.notification.notificationType.teamLinkedRequestResolveAction'''<br />
::: '''guest.app.requests.notification.notificationType.teamLinkedRequestResolveAction'''<br />
:* '''Email Customer'''<br />
:: Send an email to Customer of the linked requests. Requires that the Mailbox Name and Email Template are selected<br />
:* '''Mailbox Name'''<br />
:: Name of the mailbox from which to send a customer email when the Email Customer option is set to ''Yes''<br />
:* '''Email Template'''<br />
:: Name of the Email Template to use when the Email Customer option is set to ''Yes''<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- **************************************START OF UPDATE LINKED REQUESTS***************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Update Linked Requests<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmupdatelinkedrequests.png|thumb|link=https://wiki.hornbill.com/images/6/64/Bpmupdatelinkedrequests.png|Update Linked Requests]]<br />
<br />
==== Update Linked Requests ====<br />
This option allows you at specific times in a process to update linked requests. The options include defining the update text which will be added to the linked requests, as well as setting granular options to decide which linked request types should be updated. For example you may only want the Incidents from the Problem to receive the update, and not the Change, which the Problem is also linked too. <br />
<br />
==== Options ====<br />
:* '''Request ID'''<br />
:: This value is automatically applied. Leave this setting as ''Auto''<br />
:* '''Content'''<br />
:: Provide the text that you would like to include in the update<br />
:* '''Visibility'''<br />
:* Set the visibility level for the update. Decide if this is only for the team, or if it should be a customer facing update which the customer can view via the timeline of the requests on the portals.<br />
:* '''Request Type'''<br />
:: Select a specific request type where only the linked requests of this type will be updated<br />
:* '''Update Closed Requests'''<br />
:: Set if the update should also be applied to any linked requests which have a closed status.<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' <br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION***************************************************** --><br />
<br />
==== Log Requests ====<br />
Use the Log Request to automatically raise another request at a particular point in the workflow. <br />
<!-- ****************************************************** START OF OPERATION *********************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="LogNewChange"></div><br />
* Log New Change<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmlognewchange.png|thumb|link=https://wiki.hornbill.com/images/d/da/Bpmlognewchange.png|Log New Change]]<br />
:* '''Request ID'''<br />
:: This is an automatic option and should be set to ''Auto''<br />
:* ''' Summary''' <br />
:: To add a summary to the new request, set to ''Manual'' and provide the required text for the summary<br />
:* ''' Description''' <br />
:: To add a description to the new request, set to ''Manual'' and provide the required text for the description <br />
:* ''' Service '''<br />
:: To add a Service to the new request, set to ''Manual'' and select a Service from the pick list. If a Service is specified without a Catalog Item, the BPM workflow set against this request type on the Service Configuration will be used on the new request.<br />
:* ''' Catalog Item '''<br />
:: To add a Catalog Item to the new request, set to ''Manual'' and provide the name of the Catalog Item. If both a Service and Catalog Item are specified, the BPM workflow set against the Catalog item will be used on the new request.<br />
:* ''' Priority '''<br />
:: To add a Priority to the new request, set to ''Manual'' and select a Priority from the pick list<br />
:* ''' Category '''<br />
:: To add a Request Category to the new request, set to ''Manual'' and click on the edit button to open the Category selector.<br />
:* ''' Team '''<br />
:: To add a Team to the new request, set to ''Manual'' and select a team from the pick list <br />
:* ''' Owner '''<br />
:: To add an Owner to the new request, set to ''Manual'' and select start typing the name of the user and then select them from the pick list<br />
:* ''' Site '''<br />
:: To add a Site to the new request, set to ''Manual'' and select a Site from the pick list <br />
:* ''' Status '''<br />
:: To set the status on the new request, set to ''Manual'' and select a status from the pick list <br />
:* ''' Copy Customer? '''<br />
:: To use the same Customer as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Summary? '''<br />
:: To use the same Summary as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Description? '''<br />
:: To use the same Description as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Service? '''<br />
:: To use the same Service as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Priority? '''<br />
:: To use the same Priority as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Category? '''<br />
:: To use the same Category as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Team? '''<br />
:: To use the same Team as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Owner? '''<br />
:: To use the same Owner as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Site? '''<br />
:: To use the same Site as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Status? '''<br />
:: To use the same Status as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' System Timeline Update '''<br />
:: To include a Timeline entry in the new request to record the raising of the new request, set to ''Manual'' and select ''Yes''<br />
:* ''' Manual Timeline Update '''<br />
:: To provide a unique Timeline Update in the new request, set to ''Manual'' and click on the edit button to open the text window to add your unique timeline entry.<br />
:* ''' Visibility'''<br />
:: Set the Visibility of the Timeline Entry if one is provided.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- ****************************************************** START OF OPERATION *********************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="LogNewIncident"></div><br />
* Log New Incident<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:lognewincident.png|thumb|link=https://wiki.hornbill.com/images/6/65/Lognewincident.png|Log New Incident]]<br />
:* '''Request ID'''<br />
:: This is an automatic options and should be set to ''Auto''<br />
:* ''' Summary''' <br />
:: To add a summary to the new request, set to ''Manual'' and provide the required text for the summary<br />
:* ''' Description''' <br />
:: To add a description to the new request, set to ''Manual'' and provide the required text for the description <br />
:* ''' Service '''<br />
:: To add a Service to the new request, set to ''Manual'' and select a Service from the pick list. If a Service is specified without a Catalog Item, the BPM workflow set against this request type on the Service Configuration will be used on the new request.<br />
:* ''' Catalog Item '''<br />
:: To add a Catalog Item to the new request, set to ''Manual'' and provide the name of the Catalog Item. If both a Service and Catalog Item are specified, the BPM workflow set against the Catalog item will be used on the new request.<br />
:* ''' Priority '''<br />
:: To add a Priority to the new request, set to ''Manual'' and select a Priority from the pick list<br />
:* ''' Category '''<br />
:: To add a Request Category to the new request, set to ''Manual'' and click on the edit button to open the Category selector.<br />
:* ''' Team '''<br />
:: To add a Team to the new request, set to ''Manual'' and select a team from the pick list <br />
:* ''' Owner '''<br />
:: To add an Owner to the new request, set to ''Manual'' and select start typing the name of the user and then select them from the pick list<br />
:* ''' Site '''<br />
:: To add a Site to the new request, set to ''Manual'' and select a Site from the pick list <br />
:* ''' Status '''<br />
:: To set the status on the new request, set to ''Manual'' and select a status from the pick list <br />
:* ''' Copy Customer? '''<br />
:: To use the same Customer as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Summary? '''<br />
:: To use the same Summary as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Description? '''<br />
:: To use the same Description as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Service? '''<br />
:: To use the same Service as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Priority? '''<br />
:: To use the same Priority as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Category? '''<br />
:: To use the same Category as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Team? '''<br />
:: To use the same Team as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Owner? '''<br />
:: To use the same Owner as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Site? '''<br />
:: To use the same Site as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Status? '''<br />
:: To use the same Status as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' System Timeline Update '''<br />
:: To include a Timeline entry in the new request to record the raising of the new request, set to ''Manual'' and select ''Yes''<br />
:* ''' Manual Timeline Update '''<br />
:: To provide a unique Timeline Update in the new request, set to ''Manual'' and click on the edit button to open the text window to add your unique timeline entry.<br />
:* ''' Visibility'''<br />
:: Set the Visibility of the Timeline Entry if one is provided.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ****************************************************** START OF OPERATION *********************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="LogNewKnownError"></div><br />
* Log New Known Error<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bmplognewke.png|thumb|link=https://wiki.hornbill.com/images/f/ff/Bmplognewke.png|Log New Known Error]]<br />
:* '''Request ID'''<br />
:: This is an automatic options and should be set to ''Auto''<br />
:* ''' Summary''' <br />
:: To add a summary to the new request, set to ''Manual'' and provide the required text for the summary<br />
:* ''' Description''' <br />
:: To add a description to the new request, set to ''Manual'' and provide the required text for the description <br />
:* ''' Service '''<br />
:: To add a Service to the new request, set to ''Manual'' and select a Service from the pick list. If a Service is specified without a Catalog Item, the BPM workflow set against this request type on the Service Configuration will be used on the new request.<br />
:* ''' Catalog Item '''<br />
:: To add a Catalog Item to the new request, set to ''Manual'' and provide the name of the Catalog Item. If both a Service and Catalog Item are specified, the BPM workflow set against the Catalog item will be used on the new request.<br />
:* ''' Priority '''<br />
:: To add a Priority to the new request, set to ''Manual'' and select a Priority from the pick list<br />
:* ''' Category '''<br />
:: To add a Request Category to the new request, set to ''Manual'' and click on the edit button to open the Category selector.<br />
:* ''' Team '''<br />
:: To add a Team to the new request, set to ''Manual'' and select a team from the pick list <br />
:* ''' Owner '''<br />
:: To add an Owner to the new request, set to ''Manual'' and select start typing the name of the user and then select them from the pick list<br />
:* ''' Site '''<br />
:: To add a Site to the new request, set to ''Manual'' and select a Site from the pick list <br />
:* ''' Status '''<br />
:: To set the status on the new request, set to ''Manual'' and select a status from the pick list <br />
:* ''' Copy Customer? '''<br />
:: To use the same Customer as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Summary? '''<br />
:: To use the same Summary as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Description? '''<br />
:: To use the same Description as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Service? '''<br />
:: To use the same Service as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Priority? '''<br />
:: To use the same Priority as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Category? '''<br />
:: To use the same Category as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Team? '''<br />
:: To use the same Team as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Owner? '''<br />
:: To use the same Owner as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Site? '''<br />
:: To use the same Site as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Status? '''<br />
:: To use the same Status as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' System Timeline Update '''<br />
:: To include a Timeline entry in the new request to record the raising of the new request, set to ''Manual'' and select ''Yes''<br />
:* ''' Manual Timeline Update '''<br />
:: To provide a unique Timeline Update in the new request, set to ''Manual'' and click on the edit button to open the text window to add your unique timeline entry.<br />
:* ''' Visibility'''<br />
:: Set the Visibility of the Timeline Entry if one is provided.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- ****************************************************** START OF OPERATION *********************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="LogNewProblem"></div><br />
* Log New Problem<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bmplognewproblem.png|thumb|link=https://wiki.hornbill.com/images/b/bb/Bmplognewproblem.png|Log New Problem]]<br />
:* '''Request ID'''<br />
:: This is an automatic options and should be set to ''Auto''<br />
:* ''' Summary''' <br />
:: To add a summary to the new request, set to ''Manual'' and provide the required text for the summary<br />
:* ''' Description''' <br />
:: To add a description to the new request, set to ''Manual'' and provide the required text for the description <br />
:* ''' Service '''<br />
:: To add a Service to the new request, set to ''Manual'' and select a Service from the pick list. If a Service is specified without a Catalog Item, the BPM workflow set against this request type on the Service Configuration will be used on the new request.<br />
:* ''' Catalog Item '''<br />
:: To add a Catalog Item to the new request, set to ''Manual'' and provide the name of the Catalog Item. If both a Service and Catalog Item are specified, the BPM workflow set against the Catalog item will be used on the new request.<br />
:* ''' Priority '''<br />
:: To add a Priority to the new request, set to ''Manual'' and select a Priority from the pick list<br />
:* ''' Category '''<br />
:: To add a Request Category to the new request, set to ''Manual'' and click on the edit button to open the Category selector.<br />
:* ''' Team '''<br />
:: To add a Team to the new request, set to ''Manual'' and select a team from the pick list <br />
:* ''' Owner '''<br />
:: To add an Owner to the new request, set to ''Manual'' and select start typing the name of the user and then select them from the pick list<br />
:* ''' Site '''<br />
:: To add a Site to the new request, set to ''Manual'' and select a Site from the pick list <br />
:* ''' Status '''<br />
:: To set the status on the new request, set to ''Manual'' and select a status from the pick list <br />
:* ''' Copy Customer? '''<br />
:: To use the same Customer as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Summary? '''<br />
:: To use the same Summary as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Description? '''<br />
:: To use the same Description as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Service? '''<br />
:: To use the same Service as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Priority? '''<br />
:: To use the same Priority as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Category? '''<br />
:: To use the same Category as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Team? '''<br />
:: To use the same Team as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Owner? '''<br />
:: To use the same Owner as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Site? '''<br />
:: To use the same Site as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Status? '''<br />
:: To use the same Status as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' System Timeline Update '''<br />
:: To include a Timeline entry in the new request to record the raising of the new request, set to ''Manual'' and select ''Yes''<br />
:* ''' Manual Timeline Update '''<br />
:: To provide a unique Timeline Update in the new request, set to ''Manual'' and click on the edit button to open the text window to add your unique timeline entry.<br />
:* ''' Visibility'''<br />
:: Set the Visibility of the Timeline Entry if one is provided.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- ****************************************************** START OF OPERATION *********************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="LogNewRelease"></div><br />
* Log New Release<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bmplognewrelease.png|thumb|link=https://wiki.hornbill.com/images/e/ea/Bmplognewrelease.png|Log New Release]]<br />
:* '''Request ID'''<br />
:: This is an automatic options and should be set to ''Auto''<br />
:* ''' Summary''' <br />
:: To add a summary to the new request, set to ''Manual'' and provide the required text for the summary<br />
:* ''' Description''' <br />
:: To add a description to the new request, set to ''Manual'' and provide the required text for the description <br />
:* ''' Service '''<br />
:: To add a Service to the new request, set to ''Manual'' and select a Service from the pick list. If a Service is specified without a Catalog Item, the BPM workflow set against this request type on the Service Configuration will be used on the new request.<br />
:* ''' Catalog Item '''<br />
:: To add a Catalog Item to the new request, set to ''Manual'' and provide the name of the Catalog Item. If both a Service and Catalog Item are specified, the BPM workflow set against the Catalog item will be used on the new request.<br />
:* ''' Priority '''<br />
:: To add a Priority to the new request, set to ''Manual'' and select a Priority from the pick list<br />
:* ''' Category '''<br />
:: To add a Request Category to the new request, set to ''Manual'' and click on the edit button to open the Category selector.<br />
:* ''' Team '''<br />
:: To add a Team to the new request, set to ''Manual'' and select a team from the pick list <br />
:* ''' Owner '''<br />
:: To add an Owner to the new request, set to ''Manual'' and select start typing the name of the user and then select them from the pick list<br />
:* ''' Site '''<br />
:: To add a Site to the new request, set to ''Manual'' and select a Site from the pick list <br />
:* ''' Status '''<br />
:: To set the status on the new request, set to ''Manual'' and select a status from the pick list <br />
:* ''' Copy Customer? '''<br />
:: To use the same Customer as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Summary? '''<br />
:: To use the same Summary as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Description? '''<br />
:: To use the same Description as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Service? '''<br />
:: To use the same Service as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Priority? '''<br />
:: To use the same Priority as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Category? '''<br />
:: To use the same Category as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Team? '''<br />
:: To use the same Team as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Owner? '''<br />
:: To use the same Owner as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Site? '''<br />
:: To use the same Site as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Status? '''<br />
:: To use the same Status as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' System Timeline Update '''<br />
:: To include a Timeline entry in the new request to record the raising of the new request, set to ''Manual'' and select ''Yes''<br />
:* ''' Manual Timeline Update '''<br />
:: To provide a unique Timeline Update in the new request, set to ''Manual'' and click on the edit button to open the text window to add your unique timeline entry.<br />
:* ''' Visibility'''<br />
:: Set the Visibility of the Timeline Entry if one is provided.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- ****************************************************** START OF OPERATION *********************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="LogNewRequest"></div><br />
* Log New Request<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bmplognewrequest.png|thumb|link=https://wiki.hornbill.com/images/0/05/Bmplognewrequest.png|Log New Request]]<br />
:* '''Request ID'''<br />
:: This is an automatic options and should be set to ''Auto''<br />
:* ''' Summary''' <br />
:: To add a summary to the new request, set to ''Manual'' and provide the required text for the summary<br />
:* ''' Description''' <br />
:: To add a description to the new request, set to ''Manual'' and provide the required text for the description <br />
:* ''' Service '''<br />
:: To add a Service to the new request, set to ''Manual'' and select a Service from the pick list. If a Service is specified without a Catalog Item, the BPM workflow set against this request type will be used on the new request.<br />
:* ''' Catalog Item '''<br />
:: To add a Catalog Item to the new request, set to ''Manual'' and provide the name of the Catalog Item. If both a Service and Catalog Item are specified, the BPM workflow set against the Catalog item will be used on the new request.<br />
:* ''' Priority '''<br />
:: To add a Priority to the new request, set to ''Manual'' and select a Priority from the pick list<br />
:* ''' Category '''<br />
:: To add a Request Category to the new request, set to ''Manual'' and click on the edit button to open the Category selector.<br />
:* ''' Team '''<br />
:: To add a Team to the new request, set to ''Manual'' and select a team from the pick list <br />
:* ''' Owner '''<br />
:: To add an Owner to the new request, set to ''Manual'' and select start typing the name of the user and then select them from the pick list<br />
:* ''' Site '''<br />
:: To add a Site to the new request, set to ''Manual'' and select a Site from the pick list <br />
:* ''' Status '''<br />
:: To set the status on the new request, set to ''Manual'' and select a status from the pick list <br />
:* ''' Copy Customer? '''<br />
:: To use the same Customer as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Summary? '''<br />
:: To use the same Summary as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Description? '''<br />
:: To use the same Description as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Service? '''<br />
:: To use the same Service as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Priority? '''<br />
:: To use the same Priority as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Category? '''<br />
:: To use the same Category as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Team? '''<br />
:: To use the same Team as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Owner? '''<br />
:: To use the same Owner as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Site? '''<br />
:: To use the same Site as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Status? '''<br />
:: To use the same Status as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' System Timeline Update '''<br />
:: To include a Timeline entry in the new request to record the raising of the new request, set to ''Manual'' and select ''Yes''<br />
:* ''' Manual Timeline Update '''<br />
:: To provide a unique Timeline Update in the new request, set to ''Manual'' and click on the edit button to open the text window to add your unique timeline entry.<br />
:* ''' Visibility'''<br />
:: Set the Visibility of the Timeline Entry if one is provided.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<br />
{{infobox|Using these options in your business processes, please be aware of where you are invoking them / placing them in the workflow, and in turn which business processes are going to be invoked against the new Incident or Service Request raised. Please avoid scenario's where one business process may invoke the logging of a new request, where the new request's business process immediately is configured to log a new request which again has a business process which again logs another request immediately creating a loop. The result of which may be a lot of unwanted requests. In the event this occurs, disable the causing business process and resolve the issue.}}<br />
<br />
====Request Service====<br />
<br />
Use the Request Service node, if you wish to automate the availability status setting of the service associated to a request. It can be useful to automate the settings of of a services availability status to both the support community and the subscribed customers of a service, both when a request has been raised and or when it has been resolved, and normal service and availability is resumed.<br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Update Service Status<br />
<div class="mw-collapsible-content"><br />
:* '''Request ID''' - This is an automatic options and should be set to ''Auto''<br />
:* '''Status''' - Select the Status to set the Service's Availability too, or choose No Status if no Status is required to be displayed for the Service. <br />
:* '''Status Message''' - An optional message to be displayed alongside the Status - this will be visible to both analysts supporting the service, and customers subscribed to the service.<br />
[[File:Update_Request_Service_Status.png|centre|600px]]<br />
</div><br />
</div><br />
<br />
===Suspend===<br />
<br />
Use the Suspend node if you wish to suspend the progress of the process until a defined action is performed manually on the Request. This could include waiting for a Priority to be set, a Customer added, Ownership set or the Resolution defined. Configuration options include the ability to specify the context (which Action Bar icon) the Request will appear in whilst waiting for the Suspend (manual action) to be performed. <br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Await Expiry<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Await Expiry<br />
::Use this suspend node to suspend a Request's Business Process until the expire period has been reached.<br />
:* '''Expire Period'''<br />
::This option determines when the node expires. A Duration must be supplied (e.g. 8 Hours). If you wish to use a date/time for expiry, set this option to "ignore" and set the'Expire Date/Time' option below instead. <br />
:* '''Expire Date/Time'''<br />
::This option determines when the node expires. A date/time value must be supplied (e.g. 2040-01-01T12:00:00Z) which can be injected from the Variable Picker. If the "expire period" option has been set, any value in this 'Expire Date/Time' option will be disregarded.<br />
[[File:Suspend_Await_Expiry.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for List of Request Authorisers <br />
<div class="mw-collapsible-content"><br />
::Use this suspend node to present an Authorization Action on a request form that lets you manually assign authorisers at a particular point in the BPM Workflow. Once all authorisers have been submitted, an authorisation task will be sent to all the selected users (''Requests > Suspend > List of Request Authorisers'')<br />
:* '''Action Focus'''<br />
:: Sets the Action Item on a request that will be in focus. When using this suspend node, it is recommended to select the ''Authorisation'' action item.<br />
:* '''Authorization Type'''<br />
:: There are three available Authorization Types. ''Individual'' - Only one of the selected authorizers will be required to approve the authorization in order to proceed. ''Majority'' - At least half of the selected authorizers will be required to approve the authorization in order to proceed. ''Unanimous'' - All of the selected authorizers must approve the authorization in order to proceed.<br />
:* '''Service Owner'''<br />
:: Selecting ''Yes'' will automatically include the owner of the service that the requests is raised against, to the list of authorizers<br />
:* '''Linked Service Owners'''<br />
:: Selecting ''Yes'' will automatically include the owners of the services that are linked to the request, to the list of authorizers<br />
:* '''Linked Assets Owners'''<br />
:: Selecting ''Yes'' will automatically include the owners of the assets that are linked to the request, to the list of authorizers<br />
<br />
:[[File:Information.png|14px|text-top|Information]] Once the authorisers have been submited the ''Auto Assign Authorisation'' BPM node is used to distribute the authorisation tasks. The ''Auto Assign Authorisation'' BPM Node must follow the ''Wait for List of Request Authorisors'' BPM Node, either immediately after or later on in the workflow at the point when you want the authorisations to be sent out. <br />
[[File:WaitforlistofApprovers.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Closure <br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Closure<br />
<br />
[[File:Suspend_Wait_Close.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Closure Category<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Closure Category<br />
<br />
[[File:Closure_Category.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Customer<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Customer<br />
<br />
[[File:at_requests_suspend_waitForCustomer.png|600px]]<br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Suspend and Wait for Feedback * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="SuspendAndWaitForFeedback"></div><br />
* Suspend and Wait for Feedback<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmswaitforfeedback.png|thumb|link=https://wiki.hornbill.com/images/8/83/Bpmswaitforfeedback.png|Wait for Feedback]]<br />
<br />
====Suspend and Wait for Feedback ====<br />
Use this node to suspend the workflow on the request until the customer has provided feedback<br />
<br />
====Options====<br />
:* '''RequestID'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to Auto.<br />
:* '''Action Focus'''<br />
:: Sets the Action Item on a request that will be in focus. When using this suspend node.<br />
:* '''Expire Period'''<br />
:: Set a date and time for which this operation will expire. When this date and time is reached, the BPM will automatically continue. An outcome of ''Expired'' will be provided to allow for a decision node to be place after this operation to determine how the expired operation will be managed.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Suspend and Wait for Request Description * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Description<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Description<br />
<br />
[[File:Suspend_Request_Description.png|600px]]<br />
</div><br />
</div><br />
<br />
<!-- *******************************START OF WAIT FOR REQUEST EMAIL OPERATION DOCUMENTATION *********************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="waitForRequestEmail"></div><br />
* Wait for Request Email<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmwaitforrequestemail.png|thumb|link=https://wiki.hornbill.com/images/a/a1/Bpmwaitforrequestemail.png|Wait for Request Email]]<br />
<br />
==== Wait for Request Email ====<br />
Use this node to suspend the BPM Workflow and wait for an email to be sent from the request.<br />
<br />
==== Options ====<br />
:* '''RequestID'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to Auto.<br />
:* '''Action Focus'''<br />
:: Sets the Action Item on a request that will be in focus. When using this suspend node.<br />
:* '''Expire Period'''<br />
:: Set a date and time for which this operation will expire. When this date and time is reached, the BPM will automatically continue. An outcome of ''Expired'' will be provided to allow for a decision node to be place after this operation to determine how the expired operation will be managed.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for External Reference<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for External Reference<br />
<br />
[[File:Suspend_Request_External.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Linked Services<br />
<div class="mw-collapsible-content"><br />
: Use this suspend option when a request needs to have a linked service added before the process can continue<br />
::Requests > Suspend > Wait for Linked Service<br />
<br />
</div><br />
</div><br />
<br />
<!-- *******************************START OF OPERATION DOCUMENTATION******************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="waitForLinkedRequestUpdate"></div><br />
* Wait for Linked Request Update<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmwaitforlinkedrequestupdate.png|thumb|link=https://wiki.hornbill.com/images/f/fc/Bpmwaitforlinkedrequestupdate.png|Wait for Linked Request Update]]<br />
<br />
==== Wait for Linked Request Update ====<br />
Use this node to suspend the BPM Workflow and wait for an update to be made on a linked request.<br />
<br />
==== Options ====<br />
:* '''RequestID'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to Auto.<br />
:* '''Request Type'''<br />
:: This limits the suspend to only wait for updates from linked requests of the selected type<br />
:* '''Linked Request ID'''<br />
:: This limits the suspend to only wait for updates from a linked request with provided Request ID. This can use variables to automatically populate this information.<br />
:* '''Contains'''<br />
:: Include a string of text which will match the text within the linked request's timeline<br />
:* '''Expire Period'''<br />
:: Set a date and time for which this operation will expire. When this date and time is reached, the BPM will automatically continue. An outcome of ''Expired'' will be provided to allow for a decision node to be place after this operation to determine how the expired operation will be managed.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Owner<br />
<div class="mw-collapsible-content"><br />
:Use this suspend option when a request does not currently have an owner.<br />
::Requests > Suspend > Wait for Request Owner<br />
<br />
[[File:at_requests_suspend_waitForRequestOwner.png| 600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for New Request Owner<br />
<div class="mw-collapsible-content"><br />
:Use this suspend option when the request already has an owner, but it is in a state where it is waiting for a reassignment. <br />
::Requests > Suspend > Wait for New Request Owner<br />
<br />
[[File:Suspendwaitfornewowner.png| 600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Off Hold<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Off Hold<br />
<br />
[[File:Suspend_wait_offhold.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Priority<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Priority<br />
<br />
[[File:at_requests_suspend_waitForRequestPriority.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Category<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Category<br />
<br />
[[File:Suspend_Request_Category.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Resolution<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Resolution<br />
<br />
[[File:at_requests_suspend_waitForRequestResolution.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Site<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Site<br />
<br />
[[File:Suspend_Request_Site.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Status Change<br />
<div class="mw-collapsible-content"><br />
: Use this suspend mode to wait for a change from a particular status. A decision node can follow this to determine the new status and the workflow that follows. This is particularly useful for managing two stage closure where options for resolving, closing, and re-opening can take place. (Requests > Suspend > Wait for Request Summary)<br />
<br />
:* '''Action Focus'''<br />
:: Sets the Action Item on a request that will be in focus. When using this suspend node.<br />
:* '''From Status'''<br />
:: Set the status that you want to suspend the workflow until that particular status has changed. An example would be to set this as ''Resolved'' so when it changes from this status to either ''Open'' or ''Closed'' you can branch using a decision node to manage the process for the new status. If using a decision node and custom expression ensure you use '''Status.Open''' Etc in your condition rather than just '''Open'''.<br />
:* '''Expire Period''' <br />
:: The ''Expire Period'' will automatically come out of the suspend mode and progress the workflow. If there are no changes to the ''From Status'' within the expiry period a decision node can be used to include steps in your process when this occurs. This could be used for automatic closure of the request as the result of the Expiry Period being met.<br />
<br />
[[File:bp_suspend_wait_status_change.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Summary<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Summary<br />
<br />
[[File:Suspend_Request_Summary.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Team<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Team<br />
<br />
[[File:at_requests_suspend_waitForRequestTeam.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Update<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Update<br />
<br />
[[File:Suspend_Request_Update.png|600px]]<br />
</div><br />
</div><br />
<br />
====Update Request====<br />
<br />
Use the Update Request node to automatically update the values of specific Request attributes at any stage in the process. Examples being updating the Logging or Closing Categories of a Request.<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Logging Category<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Logging Category<br />
<br />
Specify the logging category which will associated to the request. This is typically used where the category of the request is known based on the business process being associated against a specific request catalog item, and as such the analyst is not required to make a manual assessment and categorisation. <br />
<br />
[[File:updateRequestCategoryNew.jpg|700px]]<br />
:* '''Category''' - This option will prompt you to select a Category. If supplied, "Category (From Variable)" option will be ignored.<br />
:* '''Category (From Variable)''' - This option requires you to provide the Id of a Category (Value of h_id column in h_sys_profiles table). This can be used when a field that is driven by a Simple List made up of Categories is set up in a Progressive Capture. This option should only be supplied if "Category" option is not set.<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Closure Category<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Closure Category<br />
<br />
Specify the closure category which will be associated to the request. This is typically used where the business process is set to automatically resolve or close and the analyst is not required to manually resolve and specify a closure category. <br />
<br />
[[File:Closure_Category.png|600px]]<br />
:* '''Category''' - This option will prompt you to select a Category. If supplied, "Category (From Variable)" option will be ignored.<br />
:* '''Category (From Variable)''' - This option requires you to provide the Id of a Category (Value of h_id column in h_sys_profiles table). This can be used when a field that is driven by a Simple List made up of Categories is set up in a Progressive Capture. This option should only be supplied if "Category" option is not set.<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<!-- ******************************************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="UpdateCustomer"></div><br />
* Update Customer<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmupdatecustomer.png|thumb|Update Customer|link=https://wiki.hornbill.com/images/f/f5/Bpmupdatecustomer.png]]<br />
==== Update Customer ====<br />
Use this node to automatically add or update a request with a Customer<br />
==== Options ====<br />
{{Bullet1|Request ID|This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to Auto}}<br />
{{Bullet1|Co-Worker|Select a Co-worker that will be used as the customer of the request}}<br />
{{Bullet1|Contact|Select a Contact that will be used as the customer of the request}}<br />
{{Bullet1|Co-worker (From Variable)|Use a variable to populated the customer, based on a Co-worker ID}}<br />
{{Bullet1|Contact (From Variable)|Use a variable to populate the customer, based on a contact ID}}<br />
{{Bullet1|System Timeline Update|Select if the default system text will be added to the timeline for this action}}<br />
{{Bullet1|Manual Timeline Update|Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action}}<br />
{{Bullet1|Visibility|Choose what level of visibility will be automatically applied to this update. Choosing anything other than Customer will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals.}}<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Custom Fields<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Custom Fields<br />
<br />
This provides the ability to update any or all of the custom fields of a request. The input box is single line only and values should be restricted to 255 characters which is the defined max length for all custom fields. When populating custom fields please pay attention to the type of value you are populating, and ensure this is compatible with the type of field you have specified for the corresponding custom field in the request type and service form designer in the user interface. <br />
<br />
[[File:Update_Request_Custom_Fields.png|600px]]<br />
:* '''Custom Field A - T & Custom Field 21 to 40''' - Populate the required custom field(s) with the value(s) that you wish to update the custom field(s) with. This can be text and/or attributes from the Variable Picker.<br />
:* '''Append Text''' - This determines if the supplied value of the custom field, should append any existing value of the custom field. By default this is set to replace any existing value, with the value defined here.<br />
:* '''Format Checkbox Value''' - This option determines whether the value from a checkbox (i.e. Outcome Field from a Human Task) is formatted to remove the square brackets and double quotes. By default, this option is set to "No".<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<!-- **************************************************** START OF UPDATE DETAILS ************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px" id="Details"><br />
* Details<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:updaterequestdetailsbpm.png|thumb|link=https://wiki.hornbill.com/images/9/9e/Updaterequestdetailsbpm.png|Update Request Details BPM]] Use this operation to update the Summary and Description of a request. You can either add a new summary or description or append to the existing values. <br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''Summary'''<br />
:: Set to ''Auto'' if you want to use an output variable from a previous BPM operation where that variable is named ''summary''. If the variable ''summary'' does not exist, no action will be taken. Set to ''Manual'' to provide the information to be used to update the summary. This can include the use of [[Request Variables| Request Variables]]. Set to ''Ignore'' if no action is required.<br />
:* '''Description'''<br />
:: Set to ''Auto'' if you want to use an output variable from a previous BPM operation where that variable is named ''description''. If the variable ''description'' does not exist, no action will be taken. Set to ''Manual'' to provide the information to be used to update the Description. This can include the use of [[Request Variables| Request Variables]]. Set to ''Ignore'' if no action is required.<br />
:* '''Append Text'''<br />
:: Set to ''Auto'' if the update is to replace the existing text. Set to ''Manual'' and select ''Yes'' to append the update to the end of the existing text<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' <br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************************** END OF UPDATE DETAILS ************************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* External Reference<br />
<div class="mw-collapsible-content"><br />
:: Use this operation to update the External Reference field that is held against the requests.<br />
<br />
[[File:bp_update_external_ref.png|600px]]<br />
:* '''External Reference'''<br />
:: Either enter an external reference number or use the variable picker to take the External Reference held in a variable<br />
:* '''System Timeline Update'''<br />
:: Select ''Yes''if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select ''Yes'' to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals.<br />
</div><br />
</div><br />
<br />
<!-- **************************************************** START OF FIRST TIME FIX ************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px" id="Details"><br />
<div id="FirstTimeFix"></div><br />
* First Time Fix<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:firsttimefixbpm.png|thumb|link=https://wiki.hornbill.com/images/f/f8/Firsttimefixbpm.png|First Time Fix]] Use this operation to update the First Time Fix flag on a request. You can apply the rules to set the requirements for a first time fix. This operation should be added at point within the workflow when the request has reached a resolved state. <br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''No Team Reassignments'''<br />
:: Set to ''Yes'' If you wish to include the rule that there must not be any team reassignments in order to be classed as a first time fix. Set to ''Auto'' or ''No'' to exclude this rule.<br />
:* '''No Owner Reassignments'''<br />
:: Set to ''Yes'' If you wish to include the rule that there must not be any owner reassignments in order to be classed as a first time fix. Set to ''Auto'' or ''No'' to exclude this rule.<br />
:* '''No Hold Time'''<br />
:: Set to ''Yes'' If you wish to include the rule that there must not be any point at which this request was placed on hold. Set to ''Auto'' or ''No'' to exclude this rule.<br />
:* '''Max Open Time'''<br />
:: Set to ''Manual'' and add an amount of time to include the rule that the request must be resolved within this time frame to count as a first time fix. Set to ''Auto'' to exclude this rule. Putting a request on-hold does not extend the ''Max Open Time''.<br />
:* '''Include Working Time Calendar'''<br />
:: Set to ''Manual'' and chose a Working Time Calendar to include the use of a Working Time Calendar when calculating the ''Max Open Time''. Set to ''Auto'' to exclude this rule<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' <br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************************** END OF FIRST TIME FIX ************************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Place On Hold<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
<br />
[[File:bpmplaceonhold.png|thumb|link=https://wiki.hornbill.com/images/5/5c/Bpmplaceonhold.png|Place On Hold]] Use this operation to automatically put a request on-hold when a point within the workflow has been reached.<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''On Hold Period'''<br />
:: Enter the number of Years, Months, Days, Hours, and Minutes that the request will be on hold for.<br />
:* '''On Hold Period Apply Working Time Calendar'''<br />
:: Set this to ''Yes'' to apply the WTC that is associated to the request to be used. This will ensure that the request comes off hold during work hours.<br />
:* '''Reason'''<br />
:: Include information that describes the reason for the request being placed on-hold.<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' <br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals.<br />
:* '''Sub-Status'''<br />
:: Set the sub-status of the request when the request is placed on-hold<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Priority<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Priority<br />
<br />
Use this node to set the '''Priority'''' of the request. This can be useful when your business process is supporting a specific request catalog item, and the '''Priority''' for such items can be predetermined and therefore can be set. It is also useful to use within a process where a decision node may branch and different '''Priorities''' are possible depending on the path followed. Decide if the setting of the '''Priority''' should also mark the request timeline.<br />
<br />
[[File:Update_Priority.png|600px]]<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Resolution Text<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Resolution Text<br />
<br />
Use this node to set the '''Resolution Text'''' of the request. This can be useful when your business process is supporting a specific request catalog item, and the '''Resolution''' for such items can be predetermined and therefore can be set. <br />
<br />
[[File:Update_Request_Resolution_text.png|600px]]<br />
:* '''Resolution Text''' - The text which will appear in the resolution text box (this can include the use of request variables)<br />
:* '''Overwrite Resolution Text''' - Decide if this option should overwrite and replace any existing text in the resolution field - by default this is set to No<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Service Level<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Service Level<br />
<br />
Use this node to update the Service Level that has been applied to the request. This can be used to apply a Service Level if one has not been allocated or if at a point in your workflow you would like to automatically re-assess the applied Service Level, this will use your Service Level Rules and check for any changes to the request to determine if a change is Service Level is required.<br />
<br />
:* '''There are no options required for this operation.'''<br />
:: Because of how this operation works there are no options to select from. It simply executes the operation. <br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Update Site * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="UpdateSite"></div><br />
* Site<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmupdatesite.png|thumb|link=https://wiki.hornbill.com/images/0/03/Bpmupdatesite.png|Update Site]]<br />
<br />
==== Site ====<br />
Use this node to set the ''Site'' of the request. The configuration options include pre-defining the ''Site'' from the full list of Sites, which have been created in Organisational structure or from a variable.<br />
==== Options ====<br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Site'''<br />
:: Select from the list of available sites as defined under the Organizational Data in Administration<br />
:* '''Site ID (From Variable)'''<br />
:: Use a variable that has been populated from Progressive Capture to set the Site. The Group Picker option on the Custom Progressive Capture form will be the most common way of providing the Site ID in a variable.<br />
:* '''System Timeline Update''' <br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' <br />
::Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Update Site (Customer's Site) * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Site (Customer' Site)<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Site (Customer's Site)<br />
<br />
Use this node to set the '''Site''' of the request to that of the site defined against the customer of the request. Decide if the setting of the '''Site''' should be marked on the requests timeline.<br />
<br />
[[File:Update_Customers_Site.png|600px]]<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="UpdateRequestSource"></div><br />
* Source<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:updaterequestsourcebpm.png|thumb|link=https://wiki.hornbill.com/images/5/57/Updaterequestsourcebpm.png|Update Request Source BPM]] The Update Request Source operation allows you to automatically set the source of the request. A number of default sources such as Email, Analyst, Self Service, and Post are added and based on the how the request was raised. This BPM Operation lets you over-ride these source names and allows you to add your own.<br />
<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''Source'''<br />
:: Either enter the text that you would like to use to represent the source or you can have this automatically provided by using the variable option.<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' <br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Status / Sub-status<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Status<br />
<br />
Use this node to set the '''Status''' and or '''Sub-Status''' at one or multiple points in a process. It can be useful to automate the changing of the status based on other process actions, without the need for human intervention. <br />
<br />
[[File:business_process_update_status.png|600px]]<br />
:* '''Status''' - Optionally select the Status you wish the Request to be set too<br />
:* ''' Sub-Status''' - Optionally select the Sub-Status you wish the Request to be set too<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Timeline<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Timeline<br />
<br />
Use this node to update the '''Timeline''' of a request with a predefined comment. This can be useful when it is important to post information to or an update onto a request based on a prior process action. <br />
<br />
[[File:bp_update_timeline.png|600px]]<br />
:* '''Update Text''' - Define the text to appear in the timeline update, this can include variables from the request or related entities using the variable picker<br />
:* '''URL''' - Include a URL which will be embedded into the timeline update of the request. <br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals.<br />
</div><br />
</div><br />
<br />
====Request Timers====<br />
<br />
Use the Request Timer nodes at any stage in the process to either start or stop the Response and or Resolution timers. It is not a perquisite to have to use any timers within processes or to have to use both Response and Resolution timers when timers are used.<br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Start Resolver Timer<br />
<div class="mw-collapsible-content"><br />
::Application > Timer > Start Resolver Timer<br />
<br />
Use this node at the required point in the process to start the resolution timer. When selecting this option, the resolution timer will be based on the '''Priority''' associated to the request. The target and any required escalation actions for the resolution timer can be configured in the Service Manager application '''> Services > Service Levels > Resolve Times'''.<br />
<br />
[[File:at_requestTimers_resolutionTimers_startResolutionTimer.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Stop Resolution Timer<br />
<div class="mw-collapsible-content"><br />
::Application > Timer > Stop Resolver Timer<br />
<br />
Use this node to stop the resolution timer at the required point in the process. <br />
<br />
[[File:at_requestTimers_resolutionTimers_stopResolutionTimer.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Start Response Timer<br />
<div class="mw-collapsible-content"><br />
::Application > Timer > Start Response Timer<br />
<br />
Use this node at the required point in the process to start the response timer. The response timer to use can be selected on the node, and will use the response target and any associated escalation actions which can be configured in the Service Manager application '''> Services > Service Levels > Response Times'''.<br />
<br />
[[File:at_requestTimers_responseTimers_startResponseTimer.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Stop Response Timer<br />
<div class="mw-collapsible-content"><br />
::Application > Timer > Stop Response Timer<br />
<br />
Use this node at the required point in the process to stop the response timer.<br />
<br />
[[File:at_requestTimers_responseTimers_stopResponseTimer.png|600px]]<br />
</div><br />
</div><br />
<br />
[[Category:Service Manager]]</div>Victorshttps://wiki.hornbill.com/index.php?title=Service_Manager_Business_Process_Workflow&diff=23776Service Manager Business Process Workflow2020-05-21T08:18:51Z<p>Victors: </p>
<hr />
<div><div style="border:1px solid #90C0FF; background:#D0E0FF; width:99%; padding:4px; margin-bottom:10px;"><br />
__NOTOC__[[Main Page|Home]] > [[Administration]] > [[Service Manager Administration |Service Manager]] > Business Process Workflow<br />
</div><br />
{|style="width: 100%"<br />
|- valign="top"<br />
|style="width:73%"|<br />
== Introduction ==<br />
The Service Manager Business Process Workflow is used to automate the processing of the requests that have been raised. This page contains information on the Service Manager specific automated tasks that can be used in the [[Business Process Designer]] to build unique and powerful processes for your requests.<br />
|style="width:5%"|<br />
|<br />
|style="width:22%; border-style: solid; border-width: 1px; border-color:#e6e6e6; background-color:#f2f2f2;"|<br />
<br />
== Related Articles ==<br />
:* [[Business Process Designer]]<br />
:* [[Request Variables]]<br />
|}<br />
<br />
==Boards==<br />
Use the Boards nodes to automatically add, move or remove a Request from an existing Board. Requests can be added to one or multiple Boards in Service Manager, and can be moved between Lists on specified Boards automatically.<br />
<br />
<!-- ******************************************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="AddCommentToBoard"></div><br />
* Add Comment To Board<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmaddcommenttoboard.png|thumb|link=https://wiki.hornbill.com/images/9/9e/Bpmaddcommenttoboard.png|Add Comment to a Board]]<br />
==== Add Comment To Board ====<br />
Use this node to manually add a Comment card to a Service Manager Board at the required stage in a process.<br />
==== Options ====<br />
:* '''Board'''<br />
:: The name of the Service Manager Board on which the Comment card will be added<br />
:* ''' List '''<br />
:: The name of the list from the above specified board to which the Comment card will be added<br />
:* '''Comment'''<br />
:: The actual comment, as it will appear on the card on the Board.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="addRequestToBoard"></div><br />
* Add Request to Board<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmaddrequesttoboard.png|thumb|link=https://wiki.hornbill.com/images/9/96/Bpmaddrequesttoboard.png |Add Request to Board]] <br />
==== Add Request to Board ====<br />
This operation will automatically add a request to a selected Service Manager Board or move a request from one list to another. This particularly works well on a Board where users have been given View Access only and the BPM takes control of all the card movements.<br />
==== Options ====<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''Board'''<br />
:: The name of the Service Manager Board on which the Request card will be added<br />
:* '''List'''<br />
:: The name of the list from the above specified board to which the Request card will be added<br />
<br><br />
<br><br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="AddUniqueIdForAnchor"></div><br />
* Remove Request from Board<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmremoverequestfromboard.png|thumb|link=https://wiki.hornbill.com/images/0/07/Bpmremoverequestfromboard.png|Remove Request from Board]] <br />
==== Remove Request from Board ====<br />
Use this option to remove a Request from a Service Manager Board at a specific stage in a process. <br />
==== Options ====<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''Board'''<br />
:: The name of the Service Manager Board from which the Request card will be removed.<br />
<br><br />
<br><br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************END OF OPERATION DOCUMENTATION************************************************** --><br />
<br />
==Change Requests==<br />
Use these nodes at any stage in a process to automate Change Request specific actions.<br />
<br />
<!-- ********************************START OF OPERATION DOCUMENTATION*************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="addToChangeCalendar"></div><br />
* Add to Change Calendar<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmaddtochangecalendar.png|thumb|link=https://wiki.hornbill.com/images/9/9e/Bpmaddtochangecalendar.png|Add to Change Calendar]]<br />
==== Add to Change Calendar ====<br />
Use this node to automatically add a change request to the Change Calendar. Use the configuration settings to set the start and end times for the change based on the time this node is invoked in the process. As an example if this node is the first action in a process, then it will use the log time as the Now time, and the Start and End times you configure will be based off that time. <br />
==== Options ====<br />
:* '''Request ID'''<br />
::This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to Auto<br />
:* '''Start Time From Now'''<br />
:: Set the ''Start Time'' for this change based on years, months, days, hours, or minutes from when this node is reached in the workflow<br />
:* '''End Time From Now'''<br />
:: Set the ''End Time'' for this change based on years, months, days, hours, or minutes from when this node is reached in the workflow<br />
:* '''Start Time (From Variable)<br />
:: Set the ''Start Time'' for this change from a BPM Variable<br />
:* '''End Time (From Variable)<br />
:: Set the ''End Time'' for this change from a BPM Variable<br />
:* '''Enforce Freeze Periods'''<br />
:: Set this to ensure that the Start or End Dates are not set within a Change Freeze Period<br />
:* '''Update Timeline'''<br />
:: Include a Timeline update on the request when this node has completed<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Remove from Change Calendar<br />
<div class="mw-collapsible-content"><br />
::ChangeRequests > Update > Remove from Change Calendar<br />
<br />
Use this node to automatically remove the Change from the Change Calendar. <br />
[[File:Remove_From_Calendar.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Change Type<br />
<div class="mw-collapsible-content"><br />
::ChangeRequests > Update > Change Type<br />
<br />
Use this node to update the Change Type <br />
[[File:Change_Type.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Schedule<br />
<div class="mw-collapsible-content"><br />
::ChangeRequests > Suspend > Wait for Resquest Schedule<br />
<br />
Use this node to pause the process and await the scheduling of the Change Request in the Change Calendar<br />
* Optional use the Action Focus option to focus the request on the '''Schedule''' action on the action bar, when awaiting this action.<br />
<br />
[[File:Suspend_await_schedule.png|600px]]<br />
</div><br />
</div><br />
<br />
==Problem Records==<br />
Use these nodes at any stage in a process to automate Problem Record specific actions.<br />
=== Suspend ===<br />
Use the Suspend Type if you wish to suspend the progress of the process until a defined action is performed manually on the Problem. Once selected, the following available ''Tasks'' can be selected.<br />
<br />
<!-- *******************************START OF OPERATION DOCUMENTATION******************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="waitForProblemWorkaround"></div><br />
* Wait for Workaround<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmwaitforproblemworkaround.png|thumb|link=https://wiki.hornbill.com/images/3/3b/Bpmwaitforproblemworkaround.png|Wait for Workaround]]<br />
<br />
==== Wait for Workaround ====<br />
Use this node to suspend the BPM Workflow and wait for a workaround to be added to the Problem Record.<br />
<br />
==== Options ====<br />
:* '''RequestID'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to Auto.<br />
:* '''Action Focus'''<br />
:: Sets the Action Item on a request that will be in focus when using this suspend node.<br />
:* '''Expire Period'''<br />
:: Set a date and time for which this operation will expire. When this date and time is reached, the BPM will automatically continue. An outcome of ''Expired'' will be provided to allow for a decision node to be place after this operation to determine how the expired operation will be managed.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
==Releases==<br />
Use this node at any stage in a process to automate Release specific actions.<br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Add to Change Calendar<br />
<div class="mw-collapsible-content"><br />
::Releases > Update > Add to Change Calendar<br />
<br />
Use this node to automatically add the Release to the Change Calendar. <br />
* Use the configuration settings to set the start and end times for the release based on the time this node is invoked in the process. As an example if this node is the first action in a process, then it will use the log time as the Now time, and the Start and End times you configure will be based off that time. <br />
<br />
[[File:Release_Add.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Remove from Change Calendar<br />
<div class="mw-collapsible-content"><br />
::Releases > Update Request > Remove from Change Calendar<br />
<br />
Use this node to automatically remove the Release from the Change Calendar. <br />
[[File:Release_Remove.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Release Type<br />
<div class="mw-collapsible-content"><br />
::Releases > Update Request > Release Type<br />
<br />
Use this node to update the Release Type <br />
[[File:Release_type.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Schedule<br />
<div class="mw-collapsible-content"><br />
::Releases> Suspend > Wait for Request Schedule<br />
<br />
Use this node to pause the process and await the scheduling of the Release in the Change Calendar<br />
* Optional use the Action Focus option to focus the request on the '''Schedule''' action on the action bar, when awaiting this action.<br />
<br />
[[File:Release_Schedule.png|600px]]<br />
</div><br />
</div><br />
<br />
==Request Connections==<br />
Use the Request Connections node at any stage in a process to automatically add additional contact's and or co-worker's to a request and define their connection type to the request. Other options include automatically emailing connections of different types, and removing one or all connections at any stage.<br />
<br />
<!-- *************************************** START OF NODE **************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="AddConnection"></div><br />
* Add Connection<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmaddconnection.png|thumb|link=https://wiki.hornbill.com/images/a/ae/Bpmaddconnection.png]]<br />
<br />
====Add Connection====<br />
Use this node to add a connection to a request<br />
:* '''Request ID'''<br />
::This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to Auto<br />
:* '''Connection Type'''<br />
:: By Default this will include interested and Impacted but will also show any custom Connection Types which have been defined in the Simple Lists, and '''requestConnectionType''' option. Use this option to define what relationship the Connection will have to the request.<br />
:* '''Co-worker''' <br />
:: Choose which internal user will be added as a connection to the request <br />
:* '''Contact''' <br />
:: Choose which external user will be added to a connection to the request<br />
:* '''Co-worker(From Variable)''' <br />
:: Use the user id (h_user_id) from the h_sys_accounts table, or from the variable picker and picking the value returned from the user picker in a progressive capture custom form. Be sure to use the ''Raw'' value from the progressive capture outcome and not the ''Display Name''<br />
:* '''Contact(From Variable)'''<br />
:: Use the contact id (h_pk_id) from the h_sys_contacts table or or from the variable picker and picking the value returned from the user picker in a progressive capture custom form. Be sure to use the ''Raw'' value from the progressive capture outcome and not the ''Display Name''<br />
:* '''Update Timeline'''<br />
:: Include a Timeline update on the request when this node has completed<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Email Connections<br />
<div class="mw-collapsible-content"><br />
::RequestConnections> Connections > Email Connections<br />
<br />
Use this node to email connections of the request. <br />
<br />
Configuration options include:<br />
<br />
:* '''Mailbox Name''' - Specify the mailbox from which the email will be sent<br />
:* '''Email Template''' - Specify the email template which will be sent<br />
:* '''Recipients''' - Specify if the email should be sent to '''All''' users, '''Internal''' users only, or '''External''' users only of the following '''Connection Type'''<br />
:* '''Connection Type''' - Specify which connection types should receive the email notification<br />
<br />
[[File:Connections_Email.png|600px]]<br />
<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Remove All Connections<br />
<div class="mw-collapsible-content"><br />
::RequestConnections> Connections > Remove All Connections<br />
<br />
Use this node to remove connections from the request. <br />
<br />
Configuration options include:<br />
<br />
:* '''Recipients''' - Specify if the connections to be removed should be '''All''' users, '''Internal''' users only, or '''External''' users only of the following '''Connection Type'''<br />
:* '''Connection Type''' - Specify which connection types should be removed from the request<br />
<br />
[[File:Connections_Remove_All.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Remove Connection<br />
<div class="mw-collapsible-content"><br />
::RequestConnections> Connections > Remove Connection<br />
<br />
Use this node to remove specific connections from the request. <br />
<br />
Configuration options include:<br />
<br />
:* '''Co-worker''' - Choose which internal user will be removed from the request <br />
:* '''Contact''' - Choose which external user will be removed from the request<br />
<br />
It is possible to remove a single Co-Worker and Contact from a request in a single node, but it is not mandatory to do so. <br />
<br />
[[File:Connections_Remove.png|600px]]<br />
</div><br />
</div><br />
<br />
==Request Members==<br />
<br />
Use the Request Members node at any stage in a process to automatically add or remove another analyst or subject matter expert into a Request.<br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Add Request Member<br />
<div class="mw-collapsible-content"><br />
::Members > Add Request Member<br />
<br />
Use this node to add Service Manager analysts to the request. This option allows you to automatically add additional analysts to the request to assist with the resolution or as interested parties.<br />
<br />
:* Members can be added even if they do not have the rights to view the request type, nor the requests which belong to the team against which the request belongs. The added Member's rights will be elevated just for the specific Request.<br />
:* Members can be notified about being added via Hornbill Notifications, and or email depending on the following Service Manager system setting: '''guest.app.requests.notification.notificationType.members'''<br />
<br />
[[File:at_requestMembers_members_addRequestMember_sept2019.png|600px]]<br />
<br />
:* '''Member''' - This option can contain the Co-worker to be added as a Request member. If supplied, "Member (From Variable)" option will be ignored.<br />
:* '''Member (From Variable)''' - This option can contain the Id of a Co-worker (h_user_id in h_sys_accounts table). This option should only be supplied if "Member" option is not set.<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Remove Request Member<br />
<div class="mw-collapsible-content"><br />
::Members > Remove Request Member<br />
<br />
Use this option to remove members from a request. <br />
<br />
:* Select which member to remove<br />
<br />
[[File:at_requestMembers_members_removeRequestMember_sept2019.png|600px]]<br />
<br />
:* '''Member''' - This option can contain the Co-worker to be removed from the Request members. If supplied, "Member (From Variable)" option will be ignored.<br />
:* '''Member (From Variable)''' - This option can contain the Id of a Co-worker (h_user_id in h_sys_accounts table). This option should only be supplied if "Member" option is not set.<br />
</div><br />
</div><br />
<br />
==Requests==<br />
<br />
==== Access Control ====<br />
<br />
Use the Access Control to lock or unlock the Details section or the Actions on a request. Only users with the appropriate application right (update locked requests) will be able to modify the details or use an Action once locked. This right has been added to the following roles: Incident Management Full Access, Change Management Full Access, Problem Management Full Access, Release Management Full Access, Service Request Full Access, and Service Desk Admin.<br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Lock / Unlock Request Actions<br />
<div class="mw-collapsible-content"><br />
::Requests > Access Control > Lock / Unlock Actions<br />
<br />
Locks or Unlocks the selected Actions on on a request. This includes sections that are associated to the actions<br />
<br />
:* '''Lock Update'''<br />
:: Prevents the manual adding of an update to the Timeline.<br />
:* '''Lock Callback'''<br />
:: Prevents the use of the Phone action<br />
:* '''Lock Attach'''<br />
:: Prevents the use of the Attach Action and the Attachments section of the request<br />
:* '''Lock Link'''<br />
:: Prevents the linking of requests to this request and stops the removal of linked requests in the requests section <br />
:* '''Lock Linked Services'''<br />
:: Prevents the linking of Services to this request and stops the removal of linked Services in the requests section <br />
:* '''Lock Email'''<br />
:: Prevents the sending of email <br />
:* '''Lock Change Customer''' <br />
:: Prevents the changing of the customer<br />
:* '''Lock Assign''' <br />
:: Prevents the request from being manually assigned or re-assigned<br />
:* '''Lock Connections'''<br />
:: Prevents further Connections from being added the removal of existing connections in the Connections section<br />
:* '''Lock Escalate'''<br />
:: Prevents the manual changing of the Priority<br />
:* '''Lock Asset'''<br />
:: Prevents the adding or removing of an asset<br />
:* '''Lock Workaround'''<br />
:: Prevents the accepting of a workaround being added on a Known Error<br />
:* '''Lock Publish'''<br />
:: Prevents the publishing of a Problem or Known Error record to the Self Service Portal<br />
:* '''Lock Board'''<br />
:: Prevents the request from being added to a board<br />
:* '''Lock Schedule'''<br />
:: Prevents the scheduling of a Change Request<br />
:* '''Lock Solution'''<br />
:: Prevents the ability to accept a solution provided to an Incident from a Problem or Known Error<br />
:* '''Lock Resolve'''<br />
:: Prevents a request from manually being resolved<br />
:* '''Lock Cancel'''<br />
:: Prevents a request from being cancelled <br />
:* '''System Timeline Update'''<br />
:: Use the provide System Timeline Update to show that a lock or unlock has taken place<br />
:* '''Manual Timeline Update'''<br />
:: Provide a custom Timeline Update message when a lock or unlock has taken place<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Lock Request Details<br />
<div class="mw-collapsible-content"><br />
::Requests > Access Control > Lock Request Details<br />
<br />
Locks the Details section of a request from this point on in the workflow. Only users that have the '''update locked requests''' application right assigned to one of their roles will be able to update the request details. <br />
<br />
[[File:accesscontrollock.png|600px]]<br />
<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Unlock Request Details<br />
<div class="mw-collapsible-content"><br />
::Requests > Access Control > Unlock Request Details<br />
<br />
Unlocks the Details section of a request from this point on in the workflow. All users that have access to the request will be able to edit the Details section of the request. <br />
<br />
[[File:accesscontrolunlock.png|600px]]<br />
<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
==== Assessment ====<br />
Use the Assessment node to instigate an Impact Assessment on a request<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Impact Assessment<br />
<div class="mw-collapsible-content"><br />
:Using this option will present an Impact Assessment option on the ''Escalate Action'' of a request. When selected a user will be taken through a number of defined questions, and determined by their responses, an impact level will be automatically applied to the request.<br />
<br />
:* '''Assessment'''<br />
:: The name of the assessment that you wish to run on the request<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
====Assignment====<br />
<br />
Use the Assignment node to automatically assign a request to different Service Manager users or teams.<br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Assign to Service Team<br />
<div class="mw-collapsible-content"><br />
::Requests > Assignment > Assign to Service Team<br />
<br />
Assign to Service Team assigns the request to the team that supports the service. If no team supports the service that the request is logged against then the request is not assigned. If more than one team supports the service, the request is assigned to the team that has supported the service the longest. This automated task does not assign the request to an individual within the team(s) supported by the service.<br />
<br />
[[File:Assign_Service_Team.png|600px]]<br />
<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Assign to Team * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="AssignToTeam"></div><br />
* Assign to Team<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmassigntoteam.png|thumb|link=https://wiki.hornbill.com/images/8/8a/Bpmassigntoteam.png|Assign to Team]]<br />
==== Assign to Team ====<br />
Use this option to assign the request to a specified team. <br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Team'''<br />
:: Select a team from the list of available teams that have been defined under the Organizational Data in Administration<br />
:* '''Team (From Variable)'''<br />
:: Assign to a Team based on a variable that has been populated using Progressive Capture or through the Get Information nodes<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' <br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Assign to Owner * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Assign to Owner<br />
<div class="mw-collapsible-content"><br />
::Requests > Assignment > Assign to Owner<br />
<br />
Use this option to assign the request to a specific Service Manager analyst.<br />
<br />
:* Define which team the request will be assigned to<br />
:* Define which analyst within the above team, the request will be assigned to<br />
<br />
[[File:Assign_To_Owner.png|600px]]<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="AssignToOwnerVariable"></div><br />
* Assign to Owner (variable)<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmassigntoteam.png|thumb|link=https://wiki.hornbill.com/index.php/File:Assign_To_Owner_Variable.png|Assign to Owner (variable)]]<br />
==== Assign to Owner (variable) ====<br />
Use this option to assign the request to a specific Service Manager analyst using a dynamic value provided by a runtime variable. <br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Team'''<br />
:: Select a team from the list of available teams that have been defined under the Organizational Data in Administration. If no team specified and if the designated owner is a member of multiple teams, the team that gets assigned will be the first team in a list of owner teams ordered by team name.<br />
:* '''Owner'''<br />
:: Assign to an analyst based on a variable that has been populated using Progressive Capture or through the Get Information nodes<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' <br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Assign to Request Creator<br />
<div class="mw-collapsible-content"><br />
::Requests > Assignment > Assign to Request Creator<br />
<br />
Use this option to automatically assign the request to the Service Manager analyst who created / raised the request via Progressive Capture<br />
<br />
[[File:Assign_Request_Creator.png|600px]]<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Assign to Most Available Analyst<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:Assign_Most_Available.png|thumb|link=https://wiki.hornbill.com/images/8/83/Assign_Most_Available.png|Assign to Most Available Analyst BPM Operation]]<br />
Using ''Assign to Most Available Analyst'' is a great way to automatically assign out requests to the members of a team. This operation works on the basis of capacity. The system will look through the members of the selected team and will assign the request to the member who has the least amount of open requests. If more than one team member have an equal number of open requests and have the least amount of assigned requests, the system will allocate the request to the team member who has had the greatest amount of time pass since their last assignment.<br />
<br />
The system will take into account the user status which is found on their profile. If the user status is set to anything other than 'Available' that user/analyst/team member will not be considered as a request owner<br />
<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''Team'''<br />
:: Select the team that you would like to participate in the Round Robin Assignment. This is a mandatory setting and must be set to Manual and have a team assigned.<br />
:* '''Include Offline Users'''<br />
:: This takes into account if the user is logged into Hornbill and have an active session. The default behavior (Auto) is to include offline users. Set this option to ''No'' if you don't want requests assigned to users that are not online. If all the team members are off-line, the request will be assigned to just the team.<br />
:* '''System Timeline Update''' <br />
::Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="RoundRobin"></div><br />
* Assign on Round Robin Basis<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmroundrobin.png|thumb|link=https://wiki.hornbill.com/images/4/41/Bpmroundrobin.png|Round Robin BPM Operation]]<br />
Using the ''Assign Round Robin'' is a great way to automatically assign out requests to the members of a team . The system will look through the members of the selected team and will assign the request to the member who has had the greatest amount of time pass since their last assignment. The system will take into account the user's status which is found on their profile. If the user's status is set to anything other than 'Available' that user will not be considered for assignment. This does not take into account the volume of requests assigned to each user.<br />
<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''Team'''<br />
:: Select the team that you would like to participate in the Round Robin Assignment. This is a mandatory setting and must be set to Manual and have a team assigned.<br />
:* '''Include Offline Users'''<br />
:: This takes into account if the user is logged into Hornbill and have an active session. The default behavior (Auto) is to include offline users. Set this option to ''No'' if you don't want requests assigned to users that are not online. In order for Round Robin to work effectively, users must become disciplined in logging off Hornbill via the User menu located to the top right. Simply closing the browser window does not end a users session. <br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' <br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
====Authorisation Decision====<br />
<br />
Use the Authorisation Decision node to mark on a Change or Service Request form if an authorisation decision has been made. <br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Approved<br />
<div class="mw-collapsible-content"><br />
::Requests > Authorisation Decision > Approved<br />
<br />
[[File:Authoirsation_Approved.png|600px]]<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Rejected<br />
<div class="mw-collapsible-content"><br />
::Requests > Authorisation Decision > Rejected<br />
[[File:Authorisation_Rejected.png|600px]]<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
====Collaboration====<br />
<br />
Use the Collaboration node to post an automated update onto a public workspace at any stage in a process. This will be visible to members of the specified workspace, on the timeline of the workspace and their Newsfeeds. <br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Comment on Existing Public Workspace Post<br />
<div class="mw-collapsible-content"><br />
::Requests > Collaboration > Comment on Existing Public Workspace Post<br />
<br />
Use this node should you wish to automate the adding of a comment to an existing Post in a workspace. <br />
* Using this node will always look to add the comment to the '''Most''' recent '''Post''' from the '''Request''' in the workspace.<br />
<br />
An example use case for this node, is to include the Comment Update after key milestones for a request > Logged, In progress, Resolved, Closed or Change Accepted, Scheduled, Implemented, Reviewed. This will allow members of the workspace to stay informed about request progress without the need to monitor lists or queues. <br />
* This node will only be applicable if the '''Post to Public Workspace''' Node has been used and a Post already exists from the request in a Workspace.<br />
<br />
:* Specify the name of the Workspace to post to<br />
:* Define the content for the post<br />
:* Define if the timeline of the Request should be updated<br />
<br />
[[File:Comment_on_a_public_post.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Comment on Request Source Post<br />
<div class="mw-collapsible-content"><br />
: Use this option when the source of the request is from a post in order to post a comment back to this source post.<br />
::Requests > Collaboration > Comment on Request Source Post<br />
<br />
:* Specify the content to be included in the comment<br />
:* Specify if you would like the Request ID and Summary to be included in the comment<br />
:* Define if the timeline of the Request should be updated<br />
<br />
[[File:Comment_on_a_public_post.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Post to Public Workspace<br />
<div class="mw-collapsible-content"><br />
::Requests > Collaboration > Post to Public Workspace<br />
<br />
Use this node should you wish to automate the '''Posting''' to a specific workspace, and to it's members at one or multiple points in your business process. This will allow you to post important information to Collaboration users pertaining to the request against which your business process is running.<br />
<br />
One example of it's use would be during a Change Request, to let interested parties / stakeholders (Workspace Members) know that the Change had been accepted, scheduled and would therefore be being deployed. The member's of the workspace may not be Service Manager subscribed users, but their Collaboration subscription would enable them to be kept informed about Change, Problem, or Major Incident notifications by receiving notifications about the automated '''Posting''' from this node to their workspaces. <br />
<br />
:* Specify the name of the Workspace to post to<br />
:* Define the content for the post<br />
:* Define if the request id will be included in the post<br />
:* Define if the request Summary will be included in the post<br />
:* Define if the post to the Workspace will be appended to the timeline of the request<br />
<br />
[[File:at_requests_collaboration_postToPublicWorkspace.png|600px]]<br />
</div><br />
</div><br />
<br />
====Email Notifications==== <br />
<br />
Use the Email Notification nodes to send email templates to different Request stakeholders. Configuration options include recipient, which email template to use and which mailbox to send the email from.<br />
<br />
<!-- ************************************************************************************************************** --><br />
<!-- * Email Contact * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="EmailContact"></div><br />
* Email Contact<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmemailcontact.png|thumb|link=https://wiki.hornbill.com/images/6/68/Bpmemailcontact.png|Email Contact]]<br />
====Email Contact ====<br />
Use this node to send an email to a contact that has a contact record stored in Hornbill<br />
====Options====<br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Contact'''<br />
:: Select a contact from the searchable pick list. Only contacts that have records stored in Hornbill will be available<br />
:* '''Mailbox Name'''<br />
:: Select the Hornbill Mailbox from which you want this sent. If this is not set, it will use the default mailbox for the Service that the request has been raised under<br />
:* '''Email From'''<br />
:: Select the email address that you want listed as the sender. <br />
:* '''Email Template Entity'''<br />
:: Select the Entity from which you want to use the associated Email Templates. For example select the Change Request Entity to use email templates that contain variables which are specific to this entity. Leave this as ''Auto'' to use the default ''Request'' entity.<br />
:* '''Email Template'''<br />
:: Select the email template that you want to use for this email<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Email Co-worker * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="EmailCo-worker"></div><br />
* Email Co-worker<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmemailcoworker.png|thumb|link=https://wiki.hornbill.com/images/b/b3/Bpmemailcoworker.png|Email Co-worker]]<br />
====Email Co-worker ====<br />
Use this node to send an email to a Co-worker that has a user account in Hornbill<br />
====Options====<br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Co-worker'''<br />
:: Select a Co-worker from the searchable pick list. Only Co-workers that have accounts in Hornbill will be available<br />
:* '''Co-worker (From Variable)<br />
:: Set a Co-worker from a variable<br />
:* '''Mailbox Name'''<br />
:: Select the Hornbill Mailbox from which you want this sent. If this is not set, it will use the default mailbox for the Service that the request has been raised under<br />
:* '''Email From'''<br />
:: Select the email address that you want listed as the sender. <br />
:* '''Email Template Entity'''<br />
:: Select the Entity from which you want to use the associated Email Templates. For example select the Change Request Entity to use email templates that contain variables which are specific to this entity. Leave this as ''Auto'' to use the default ''Request'' entity.<br />
:* '''Email Template'''<br />
:: Select the email template that you want to use for this email<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Email Customer * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="EmailCustomer"></div><br />
* Email Customer<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmemailcustomer.png|thumb|https://wiki.hornbill.com/images/2/23/Bpmemailcustomer.png|Email Customer]]<br />
<br />
====Email Customer ====<br />
Use this node to send an email to the customer that is associated to the request<br />
====Options====<br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Mailbox Name'''<br />
:: Select the Hornbill Mailbox from which you want this sent. If this is not set, it will use the default mailbox for the Service that the request has been raised under<br />
:* '''Email From'''<br />
:: Select the email address that you want listed as the sender. <br />
:* '''Email Template Entity'''<br />
:: Select the Entity from which you want to use the associated Email Templates. For example select the Change Request Entity to use email templates that contain variables which are specific to this entity. Leave this as ''Auto'' to use the default ''Request'' entity. <br />
:* '''Email Template'''<br />
:: Select the email template that you want to use for this email<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Email Customer's Manager * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="EmailCustomerManager"></div><br />
* Email Customer's Manager<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmemailcustomermanager.png|thumb|link=https://wiki.hornbill.com/images/9/9e/Bpmemailcustomermanager.png|Email Customer's Manager]]<br />
====Email Customer's Manager ====<br />
Use this node to send an email to the Manager of the customer that is associated to the request<br />
<br />
====Options====<br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Mailbox Name'''<br />
:: Select the Hornbill Mailbox from which you want this sent. If this is not set, it will use the default mailbox for the Service that the request has been raised under<br />
:* '''Email From'''<br />
:: Select the email address that you want listed as the sender. <br />
:* '''Email Template Entity'''<br />
:: Select the Entity from which you want to use the associated Email Templates. For example select the Change Request Entity to use email templates that contain variables which are specific to this entity. Leave this as ''Auto'' to use the default ''Request'' entity. <br />
:* '''Email Template'''<br />
:: Select the email template that you want to use for this email<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Email External Address * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="EmailExternalAddress"></div><br />
* Email External Address<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmemailexternal.png|thumb|link=https://wiki.hornbill.com/images/4/4a/Bpmemailexternal.png|Email External Address]]<br />
====Email External Address ====<br />
Use this node to send an email to one or more email addresses that are not available within Hornbill<br />
<br />
====Options====<br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''External Addresses'''<br />
:: Add one or more email addresses that are not held within Hornbill. Multiple email address must be separated by a comma<br />
:* '''Mailbox Name'''<br />
:: Select the Hornbill Mailbox from which you want this sent. If this is not set, it will use the default mailbox for the Service that the request has been raised under<br />
:* '''Email From'''<br />
:: Select the email address that you want listed as the sender. <br />
:* '''Email Template Entity'''<br />
:: Select the Entity from which you want to use the associated Email Templates. For example select the Change Request Entity to use email templates that contain variables which are specific to this entity. Leave this as ''Auto'' to use the default ''Request'' entity. <br />
:* '''Email Template'''<br />
:: Select the email template that you want to use for this email<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Email Request Owner * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="EmailOwner"></div><br />
* Email Request Owner<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmemailowner.png|thumb|link=https://wiki.hornbill.com/images/e/ea/Bpmemailowner.png|Email Request Owner]]<br />
<br />
====Email Request Owner ====<br />
Use this node to send an email to the owner of the request<br />
<br />
====Options====<br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Mailbox Name'''<br />
:: Select the Hornbill Mailbox from which you want this sent. If this is not set, it will use the default mailbox for the Service that the request has been raised under<br />
:* '''Email From'''<br />
:: Select the email address that you want listed as the sender. <br />
:* '''Email Template Entity'''<br />
:: Select the Entity from which you want to use the associated Email Templates. For example select the Change Request Entity to use email templates that contain variables which are specific to this entity. Leave this as ''Auto'' to use the default ''Request'' entity. <br />
:* '''Email Template'''<br />
:: Select the email template that you want to use for this email<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Get Request Information * --><br />
<!-- ************************************************************************************************************** --><br />
====Get Request Information====<br />
Use the Get Request Information node at any stage in a process and preceding another process node when you want to make the variables of the Request available. Variables may include Customer, Status, Site, Priority, or any Answers to Customer defined questions from different Progressive capture forms or attributes of the customer or organisation of the request the business process is running against.<br />
<br />
<!-- ******************************************************** Customer Details ********************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Customer Details<br />
<div class="mw-collapsible-content"><br />
::Requests > Get Request Information > Customer Details<br />
<br />
Use this option at the start of a stage or preceding a task / authorisation / decision node to load the Customer's organisations details (variables) into the stage, and to make them available to other node operations where you may wish to specify or refer to '''Variable''' values from the customer of the request.<br />
<br />
:* If you are using the decision node, and want to branch the process based on the Customers department, site, job title or any of the custom fields for the customer, you will need to use the Get Request Information > Customer Details node at the beginning of the stage, or before the decision node in order to see any variable values be available to evaluate against in the Custom Expression builder.<br />
<br />
[[File:Customer_Details.png|600px]]<br />
</div><br />
</div><br />
<br />
<!-- ******************************************************** Source Email Details ********************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Source Email Details<br />
<div class="mw-collapsible-content"><br />
::Requests > Get Request Information > Source Email Details<br />
<br />
When the origin of a Request is an email (i.e. raised via Routing Rules or Email View), this option can be used to retrieve the details of the email message. This includes FROM address, TO address, subject, content, date sent and date received. You can use the Variable Picker or the Expressions Builder to make a decision on the retrieved details.<br />
<br />
[[File:Source_Email_Details.png|600px]]<br />
</div><br />
</div><br />
<br />
<!-- ******************************************************** Organisation Details ********************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Organisation Details<br />
<div class="mw-collapsible-content"><br />
::Requests > Get Request Information > Organisation Details<br />
<br />
Use this option at the start of a stage or preceding a task / authorisation / decision node to load the Customer's Organisations details (variables) into the stage, and to make them available to other node operations where you may wish to specify or refer to '''Variable''' values from the customer's organisation of the request.<br />
<br />
:* If you are using the decision node, and want to branch the process based on the Industry of the Customers Organisations, or their address, or any customer fields for the customers Organisations you will need to use the Get Request Information > Organisation Details node at the beginning of the stage, or before the decision node in order to see any variable values be available to evaluate against in the Custom Expression builder.<br />
<br />
[[File:Org_Details.png|600px]]<br />
</div><br />
</div><br />
<br />
<!-- ******************************************************** Owner Details ********************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="GetRequestInfoOwner"></div><br />
* Owner Details<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:getrequestownerbpm.png|thumb|link=https://wiki.hornbill.com/images/8/8b/Getrequestownerbpm.png|Get Request Owner Details BPM]] Use this operation when you need to use information about the owner of the request for making decisions or to populate other BPM operations with this data. This operation will populate a number of variables that represent the information about the owner of the request. <br />
<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
<br><br />
<br><br />
The Variables that are available after this operation has been used include the following:<br />
<br />
{|<br />
|- valign="top"<br />
|style="width:300px"|<br />
<br />
* First Name<br />
* Last Name<br />
* Job Title<br />
* Site<br />
* Manager<br />
* Primary Email Address<br />
* Primary Phone Number<br />
* Mobile Phone Number<br />
* Interests<br />
* Personal Interests<br />
* Qualifications<br />
* Skills<br />
* Gender<br />
* Religion<br />
* Nationality<br />
* Country<br />
* Language<br />
|style="width:300px"|<br />
* Company<br />
* Company Custom 1<br />
* Company Custom 2<br />
* Company Custom 3<br />
* Company Custom 4<br />
* Company Custom 5<br />
* Company Custom 6<br />
* Division<br />
* Division Custom 1<br />
* Division Custom 2<br />
* Division Custom 3<br />
* Division Custom 4<br />
* Division Custom 5<br />
* Division Custom 6<br />
* Costcenter<br />
* Costcenter Custom 1<br />
* Costcenter Custom 2<br />
* Costcenter Custom 3<br />
|style="width:300px"|<br />
* Costcenter Custom 4<br />
* Costcenter Custom 5<br />
* Costcenter Custom 6<br />
* Department<br />
* Department Custom 1<br />
* Department Custom 2<br />
* Department Custom 3<br />
* Department Custom 4<br />
* Department Custom 5<br />
* Department Custom 6<br />
* Customer Custom 1<br />
* Customer Custom 2<br />
* Customer Custom 3<br />
* Customer Custom 4<br />
* Customer Custom 5<br />
* Customer Custom 6<br />
* Customer Custom 7<br />
* Customer Custom 8<br />
|}<br />
<br />
<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- ******************************************************** Request Details ********************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="GetRequestInfoRequestDetails"></div><br />
* Request Details<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:getrequestdetailsbpm.png|thumb|link=https://wiki.hornbill.com/images/b/bb/Getrequestdetailsbpm.png|Get Request Request Details BPM]] Use this operation when you need to use information held within a request for making decisions or to populate other BPM operations with this data. This operation will populate a number of variables that represent the information held within a request. <br />
<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
<br><br />
<br><br />
The Variables that are available after this operation has been used include the following:<br />
<br />
{|<br />
|- valign="top"<br />
|style="width:300px"|<br />
* Assigned Team<br />
* Assigned Team (For Tasks)<br />
* Authorisation (Approved/Rejected)<br />
* Catalog Item<br />
* Catalog Item Id<br />
* Change Type<br />
* Closure Category<br />
* Created By<br />
* Customer<br />
* Customer Company<br />
* Customer Manager<br />
* Customer Primary Email Address<br />
* Customer Primary Phone Number<br />
* Customer Secondary Email Address<br />
* Customer Secondary Phone Number<br />
* Customer Type (Coworker/Contact)<br />
* Date Logged<br />
* Description<br />
* Fix By Date<br />
|style="width:300px"|<br />
* Impact<br />
* Linked Requests<br />
* Logging Category<br />
* Owner<br />
* Owner (For Tasks)<br />
* Previous Task Owner<br />
* Priority<br />
* Release Type<br />
* Reopen Count<br />
* Resolution<br />
* Respond By Date<br />
* Request Assigned (Yes/No)<br />
* Scheduled End Date<br />
* Scheduled Start Date<br />
* Service<br />
* Service Id<br />
* Service Level<br />
* Service Level Agreement<br />
* Site<br />
* Source (Analyst/Email/Post/Request/Self Service)<br />
* Status<br />
* Sub Status Name<br />
* Summary<br />
|style="width:300px"|<br />
* Time Logged<br />
* Urgency<br />
* Within Fix Time (Yes/No)<br />
* External Reference Number<br />
* Within Response Time (Yes/No)<br />
* Custom Field A<br />
* Custom Field B<br />
* Custom Field C<br />
* Custom Field D<br />
* Custom Field E<br />
* Custom Field F<br />
* Custom Field G<br />
* Custom Field H<br />
* Custom Field I<br />
* Custom Field J<br />
* Custom Field K<br />
* Custom Field L<br />
* Custom Field M<br />
* Custom Field N<br />
* Custom Field O<br />
* Custom Field P<br />
* Custom Field Q<br />
|}<br />
<br />
<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- ****************************************************** Progressive Capture Answers ******************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Progressive Capture Answers<br />
<div class="mw-collapsible-content"><br />
::Requests > Get Request Information > Progressive Capture Answers<br />
<br />
Use this option before a '''Decision''' node, if you want to load into the process the '''Answers''' from Progressive Capture Custom Forms. By selecting this option, you can load and make available the answers to progressive capture custom forms, to then evaluate in following '''Decision''' nodes. <br />
<br />
An example of the use of this node could be if you have created a custom form which asked questions about a new start, and one of these questions was to determine which Department they would be joining, it is feasible in your business process that you may wish to check the answer value, and if it was '''Sales''' then branch in one direction, and if it was '''Accounts''' you may want to branch in another direction. Using the Get Request Information > Progressive Capture Answers will allow these answers to be evaluated in a supporting business process.<br />
[[File:Progressive_Capture_Answers.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Service Details<br />
<div class="mw-collapsible-content"><br />
Use this operation to extract details of the service that is set against a request in order to use the Service Details to use with decision node outcomes within your workflow. The following variables are populated<br />
<br />
:* Custom Fields A - F<br />
:* Feedback Enabled<br />
:* Portal Visibility<br />
:* Portfolio Status<br />
:* Service Category<br />
:* Service Name<br />
:* Service Owner ID<br />
:* Service Owner Name<br />
:* Status<br />
[[File:bp_get_info_service.png|600px]]<br />
</div><br />
</div><br />
<br />
<!-- ******************************************************** Site Details ********************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="GetRequestInfoRequestDetails"></div><br />
* Site Details<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:getrequestsitebpm.png|thumb|Get Request Site Details BPM]] Use this operation when you need to use information held within a request for making decisions or to populate other BPM operations with this site details. This operation will populate a number of variables that represent the site information held within a request. <br />
<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
<br><br />
<br><br />
The Variables that are available after this operation has been used include the following:<br />
<br />
{|<br />
|- valign="top"<br />
|style="width:300px"|<br />
* Building<br />
* Country<br />
* Company ID<br />
* Company Name<br />
* Notes<br />
|style="width:300px"|<br />
* Site Code<br />
* Site ID<br />
* Site Name<br />
* Type<br />
|}<br />
<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- ******************************************************** Team Details ********************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="GetTeamDetails"></div><br />
* Team Details<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:getteamdetails.png|thumb|Get Team Details BPM]] Use this operation when you need to get information about the team that the request is assigned to. This can be used for making decisions or to populate other BPM operations with this team details. Team Manager and Team Lead information can also be returned to help with notifications and assignments for important requests. <br />
<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
<br><br />
<br><br />
The Variables that are available after this operation has been used include the following:<br />
<br />
{|<br />
|- valign="top"<br />
|style="width:300px"|<br />
* Team (For Tasks)<br />
* Name<br />
* Notes<br />
* Manager ID<br />
* Team Leader ID<br />
* Attribute 1<br />
|style="width:300px"|<br />
* Attribute 2<br />
* Attribute 3<br />
* Attribute 4<br />
* Attribute 5<br />
* Attribute 6<br />
|}<br />
<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
====Integration====<br />
<br />
Use the Integration node at any stage of a process, where you wish to invoke specific actions against a 3rd party application from the available list of applications.<br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Create Jira Request <br />
<div class="mw-collapsible-content"><br />
::Requests > Integration > Create Jira Request<br />
[[File:Creat_Jira_Request.png|600px]]<br />
<br />
Create a new request in a specific Jira instance and against a parent project. Using this option will create a new request in Jira, of the required type. <br />
*This will pass the summary and description of the Service Manager request to the newly created request in Jira, and then pass back the Jira request id into the '''External Reference''' field on the Service Manager request if successful, as well as include an update in the request timeline if required, with a hyperlink to the request in Jira. If the request to raise a request fails, this will also be written to the Service Manager Timeline with the reason for the failure to create.<br />
<br />
The following options need to be Configured:<br />
<br />
*'''Request id:''' Leave as Auto to pick up on the Request id against which the process is running.<br />
*'''Use App Settings:''' Set to Yes if you want to use the global values you can define in the system settings for Service Manager (Home > Service Manager > Application), select No if you want to manually set the values to use for this specific node.<br />
<br />
If selecting Yes, the following system settings will need to have been set and will be used:<br />
<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.issueType''': This is the Jira Issue type which will be created - Bug, Improvement, New Feature, Task or custom created on your Jira instance.<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.userName''': The Username of the account in Jira which the new request will be created under.<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.password''': The Password for the user account in Jira which the new request will be created under.<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.projectName''': The Parent Project to which the new request will belong.<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.url''': The full URL for the Jira instance against which the new request will be created.<br />
<br />
If selecting No the following options will need to be manually set<br />
<br />
*'''URL:''' The full URL for the Jira instance against which the new request will be created.<br />
*'''Project Name:''' The Parent Project to which the new request will belong.<br />
*'''Issue Type:''' This is the Jira Issue type which will be created - Bug, Improvement, New Feature, Task or custom created on your Jira instance.<br />
*'''Username:''' The Username of the account in Jira which the new request will be created under.<br />
*'''Password:''' The Password for the user account in Jira which the new request will be created under.<br />
<br />
In either case the following can also be configured manually.<br />
<br />
*'''Update Timeline:''' Leave this as Auto if you want the Service Manager Request Timeline to be updated to record the fact that a Request has been created in Jira, and for the update to contain a hyperlink to the newly created request in Jira (as shown below)<br />
[[File:Jira_Create.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Add Jira Request Comment<br />
<div class="mw-collapsible-content"><br />
::Requests > Integration > Add Jira Request Comment<br />
[[File:Add_Jira_Comment.png|600px]]<br />
<br />
Add a comment to an existing Jira request.<br />
* This option will allow for a predefined comment to be added to a specific Jira Request. The configured comment will be added to the Jira request id, which is held in the '''External Reference''' field of the Service Manager request, against which this node is invoked from it's underlying business process. In most cases this will have been created automatically by using the '''Create Jira Request''' earlier in the same business process, but the Jira Request id can have been added manually to the Service Manager request '''External Reference''' field as well. <br />
<br />
The following options need to be Configured:<br />
<br />
*'''Request id:''' Leave as Auto to pick up on the Request id against which the process is running.<br />
*'''Use App Settings:''' Set to Yes if you want to use the global values you can define in the system settings for Service Manager (Home > Service Manager > Application), select No if you want to manually set the values to use for this specific node.<br />
<br />
If selecting Yes, the following system settings will need to have been set and will be used:<br />
<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.userName''': The Username of the account in Jira which the new comment will be created under.<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.password''': The Password for the user account in Jira which the new comment will be created under.<br />
:* '''guest.ui.app.com.hornbill.servicemanager.integration.jira.url''': The full URL for the Jira instance against which the new request comment will be added.<br />
<br />
If selecting No the following options will need to be manually set<br />
<br />
*'''URL:''' The full URL for the Jira instance against which the new request will be created.<br />
*'''Username:''' The Username of the account in Jira which the new comment will be created under.<br />
*'''Password:''' The Password for the user account in Jira which the new request comment will be added.<br />
<br />
In either case the following will also need to be configured manually.<br />
<br />
*'''Comment:''' Configure the message content which will be added to the Jira Request<br />
*'''Update Timeline:''' Leave this as Auto if you want the Service Manager Request Timeline to be updated to record the fact that a comment has been added to a request in Jira, and for the timeline update to contain a hyperlink to the newly created comment in the Jira request (as shown below)<br />
[[File:Jira_Comment.png|600px]]<br />
<br />
This will add the Comment into the '''Comments''' tab of the Activity section on the Jira request as shown below.<br />
[[File:Jira_Comment_Jira.png|600px]]<br />
</div><br />
</div><br />
<br />
<!-- ******************************************************** START OF NEW REQUEST ********************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="integrationnewrequest"></div><br />
* Log New Service Request<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmintegrationrequest.png|thumb|link=https://wiki.hornbill.com/images/a/a6/Bpmintegrationrequest.png|Log New Request]]<br />
==== Log New Service Request ====<br />
This node can be used by other Hornbill apps to raise requests within Service Manager. <br />
==== Options ====<br />
:* ''' Summary''' <br />
:: To add a summary to the new request, set to ''Manual'' and provide the required text for the summary<br />
:* ''' Description''' <br />
:: To add a description to the new request, set to ''Manual'' and provide the required text for the description <br />
:* ''' Service '''<br />
:: To add a Service to the new request, set to ''Manual'' and select a Service from the pick list<br />
:* ''' Catalog Item '''<br />
:: To add a Catalog Item to the new request, set to ''Manual'' and provide the name of the Catalog Item<br />
:* ''' Priority '''<br />
:: To add a Priority to the new request, set to ''Manual'' and select a Priority from the pick list<br />
:* ''' Category '''<br />
:: To add a Request Category to the new request, set to ''Manual'' and click on the edit button to open the Category selector.<br />
:* ''' Team '''<br />
:: To add a Team to the new request, set to ''Manual'' and select a team from the pick list <br />
:* ''' Owner '''<br />
:: To add an Owner to the new request, set to ''Manual'' and select start typing the name of the user and then select them from the pick list<br />
:* ''' Site '''<br />
:: To add a Site to the new request, set to ''Manual'' and select a Site from the pick list <br />
:* ''' Status '''<br />
:: To set the status on the new request, set to ''Manual'' and select a status from the pick list <br />
:* '''System Timeline Update'''<br />
:: To include a Timeline entry in the new request to record the raising of the new request, set to ''Manual'' and select ''Yes''<br />
:* ''' Manual Timeline Update '''<br />
:: To provide a unique Timeline Update in the new request, set to ''Manual'' and click on the edit button to open the text window to add your unique timeline entry.<br />
:* ''' Visibility'''<br />
:: Set the Visibility of the Timeline Entry if one is provided.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
====Linked Requests====<br />
Use the Linked Requests node to automatically post updates and resolve linked Requests. Linked requests are those that have been linked using the Link Action Item on a request form. <br />
<br />
<!-- ******************************* START OF RESOLVE LINKED REQUESTS ******************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Resolve Linked Requests<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmresolvelinkedrequest.png|thumb|link=https://wiki.hornbill.com/images/1/19/Bpmresolvelinkedrequest.png|Resolve Linked Requests]]<br />
<br />
==== Resolve Linked Requests ====<br />
This option allows you at specific times in a process to resolve linked requests. The options include defining the update text which will be added to the linked requests, as well as setting granular options to decide which linked request types should be updated. For example you may only want the Incidents from the Problem to receive the update, and not the Change, which the Problem is also linked too. <br />
<br />
==== Options ====<br />
:* '''Request ID'''<br />
:: This value is automatically applied. Leave this setting as ''Auto''<br />
:* '''Request Type'''<br />
:: When set, only the request type that is selected will be resolved. When not set, all linked requests will be resolved<br />
:* '''Status'''<br />
:: Select the status that you wish to set the linked requests to. Either '''Resolve''' or '''Close'''<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
:* '''System Timeline Update'''<br />
::Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
::Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Stop Timers'''<br />
:: If there are Service Level Target Timers (Response or Resolution) on the linked request, these timers will be stopped and the Target marked<br />
:* '''Notify Owner'''<br />
:: Notify the owner of any linked request when resolved. The type of notification will be based on the Service Manager application settings<br />
::: '''guest.app.requests.notification.notificationType.teamLinkedRequestResolveAction'''<br />
::: '''guest.app.requests.notification.notificationType.teamLinkedRequestResolveAction'''<br />
:* '''Email Customer'''<br />
:: Send an email to Customer of the linked requests. Requires that the Mailbox Name and Email Template are selected<br />
:* '''Mailbox Name'''<br />
:: Name of the mailbox from which to send a customer email when the Email Customer option is set to ''Yes''<br />
:* '''Email Template'''<br />
:: Name of the Email Template to use when the Email Customer option is set to ''Yes''<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- **************************************START OF UPDATE LINKED REQUESTS***************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Update Linked Requests<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmupdatelinkedrequests.png|thumb|link=https://wiki.hornbill.com/images/6/64/Bpmupdatelinkedrequests.png|Update Linked Requests]]<br />
<br />
==== Update Linked Requests ====<br />
This option allows you at specific times in a process to update linked requests. The options include defining the update text which will be added to the linked requests, as well as setting granular options to decide which linked request types should be updated. For example you may only want the Incidents from the Problem to receive the update, and not the Change, which the Problem is also linked too. <br />
<br />
==== Options ====<br />
:* '''Request ID'''<br />
:: This value is automatically applied. Leave this setting as ''Auto''<br />
:* '''Content'''<br />
:: Provide the text that you would like to include in the update<br />
:* '''Visibility'''<br />
:* Set the visibility level for the update. Decide if this is only for the team, or if it should be a customer facing update which the customer can view via the timeline of the requests on the portals.<br />
:* '''Request Type'''<br />
:: Select a specific request type where only the linked requests of this type will be updated<br />
:* '''Update Closed Requests'''<br />
:: Set if the update should also be applied to any linked requests which have a closed status.<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' <br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION***************************************************** --><br />
<br />
==== Log Requests ====<br />
Use the Log Request to automatically raise another request at a particular point in the workflow. <br />
<!-- ****************************************************** START OF OPERATION *********************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="LogNewChange"></div><br />
* Log New Change<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmlognewchange.png|thumb|link=https://wiki.hornbill.com/images/d/da/Bpmlognewchange.png|Log New Change]]<br />
:* '''Request ID'''<br />
:: This is an automatic option and should be set to ''Auto''<br />
:* ''' Summary''' <br />
:: To add a summary to the new request, set to ''Manual'' and provide the required text for the summary<br />
:* ''' Description''' <br />
:: To add a description to the new request, set to ''Manual'' and provide the required text for the description <br />
:* ''' Service '''<br />
:: To add a Service to the new request, set to ''Manual'' and select a Service from the pick list. If a Service is specified without a Catalog Item, the BPM workflow set against this request type on the Service Configuration will be used on the new request.<br />
:* ''' Catalog Item '''<br />
:: To add a Catalog Item to the new request, set to ''Manual'' and provide the name of the Catalog Item. If both a Service and Catalog Item are specified, the BPM workflow set against the Catalog item will be used on the new request.<br />
:* ''' Priority '''<br />
:: To add a Priority to the new request, set to ''Manual'' and select a Priority from the pick list<br />
:* ''' Category '''<br />
:: To add a Request Category to the new request, set to ''Manual'' and click on the edit button to open the Category selector.<br />
:* ''' Team '''<br />
:: To add a Team to the new request, set to ''Manual'' and select a team from the pick list <br />
:* ''' Owner '''<br />
:: To add an Owner to the new request, set to ''Manual'' and select start typing the name of the user and then select them from the pick list<br />
:* ''' Site '''<br />
:: To add a Site to the new request, set to ''Manual'' and select a Site from the pick list <br />
:* ''' Status '''<br />
:: To set the status on the new request, set to ''Manual'' and select a status from the pick list <br />
:* ''' Copy Customer? '''<br />
:: To use the same Customer as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Summary? '''<br />
:: To use the same Summary as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Description? '''<br />
:: To use the same Description as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Service? '''<br />
:: To use the same Service as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Priority? '''<br />
:: To use the same Priority as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Category? '''<br />
:: To use the same Category as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Team? '''<br />
:: To use the same Team as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Owner? '''<br />
:: To use the same Owner as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Site? '''<br />
:: To use the same Site as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Status? '''<br />
:: To use the same Status as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' System Timeline Update '''<br />
:: To include a Timeline entry in the new request to record the raising of the new request, set to ''Manual'' and select ''Yes''<br />
:* ''' Manual Timeline Update '''<br />
:: To provide a unique Timeline Update in the new request, set to ''Manual'' and click on the edit button to open the text window to add your unique timeline entry.<br />
:* ''' Visibility'''<br />
:: Set the Visibility of the Timeline Entry if one is provided.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- ****************************************************** START OF OPERATION *********************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="LogNewIncident"></div><br />
* Log New Incident<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:lognewincident.png|thumb|link=https://wiki.hornbill.com/images/6/65/Lognewincident.png|Log New Incident]]<br />
:* '''Request ID'''<br />
:: This is an automatic options and should be set to ''Auto''<br />
:* ''' Summary''' <br />
:: To add a summary to the new request, set to ''Manual'' and provide the required text for the summary<br />
:* ''' Description''' <br />
:: To add a description to the new request, set to ''Manual'' and provide the required text for the description <br />
:* ''' Service '''<br />
:: To add a Service to the new request, set to ''Manual'' and select a Service from the pick list. If a Service is specified without a Catalog Item, the BPM workflow set against this request type on the Service Configuration will be used on the new request.<br />
:* ''' Catalog Item '''<br />
:: To add a Catalog Item to the new request, set to ''Manual'' and provide the name of the Catalog Item. If both a Service and Catalog Item are specified, the BPM workflow set against the Catalog item will be used on the new request.<br />
:* ''' Priority '''<br />
:: To add a Priority to the new request, set to ''Manual'' and select a Priority from the pick list<br />
:* ''' Category '''<br />
:: To add a Request Category to the new request, set to ''Manual'' and click on the edit button to open the Category selector.<br />
:* ''' Team '''<br />
:: To add a Team to the new request, set to ''Manual'' and select a team from the pick list <br />
:* ''' Owner '''<br />
:: To add an Owner to the new request, set to ''Manual'' and select start typing the name of the user and then select them from the pick list<br />
:* ''' Site '''<br />
:: To add a Site to the new request, set to ''Manual'' and select a Site from the pick list <br />
:* ''' Status '''<br />
:: To set the status on the new request, set to ''Manual'' and select a status from the pick list <br />
:* ''' Copy Customer? '''<br />
:: To use the same Customer as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Summary? '''<br />
:: To use the same Summary as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Description? '''<br />
:: To use the same Description as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Service? '''<br />
:: To use the same Service as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Priority? '''<br />
:: To use the same Priority as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Category? '''<br />
:: To use the same Category as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Team? '''<br />
:: To use the same Team as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Owner? '''<br />
:: To use the same Owner as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Site? '''<br />
:: To use the same Site as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Status? '''<br />
:: To use the same Status as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' System Timeline Update '''<br />
:: To include a Timeline entry in the new request to record the raising of the new request, set to ''Manual'' and select ''Yes''<br />
:* ''' Manual Timeline Update '''<br />
:: To provide a unique Timeline Update in the new request, set to ''Manual'' and click on the edit button to open the text window to add your unique timeline entry.<br />
:* ''' Visibility'''<br />
:: Set the Visibility of the Timeline Entry if one is provided.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ****************************************************** START OF OPERATION *********************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="LogNewKnownError"></div><br />
* Log New Known Error<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bmplognewke.png|thumb|link=https://wiki.hornbill.com/images/f/ff/Bmplognewke.png|Log New Known Error]]<br />
:* '''Request ID'''<br />
:: This is an automatic options and should be set to ''Auto''<br />
:* ''' Summary''' <br />
:: To add a summary to the new request, set to ''Manual'' and provide the required text for the summary<br />
:* ''' Description''' <br />
:: To add a description to the new request, set to ''Manual'' and provide the required text for the description <br />
:* ''' Service '''<br />
:: To add a Service to the new request, set to ''Manual'' and select a Service from the pick list. If a Service is specified without a Catalog Item, the BPM workflow set against this request type on the Service Configuration will be used on the new request.<br />
:* ''' Catalog Item '''<br />
:: To add a Catalog Item to the new request, set to ''Manual'' and provide the name of the Catalog Item. If both a Service and Catalog Item are specified, the BPM workflow set against the Catalog item will be used on the new request.<br />
:* ''' Priority '''<br />
:: To add a Priority to the new request, set to ''Manual'' and select a Priority from the pick list<br />
:* ''' Category '''<br />
:: To add a Request Category to the new request, set to ''Manual'' and click on the edit button to open the Category selector.<br />
:* ''' Team '''<br />
:: To add a Team to the new request, set to ''Manual'' and select a team from the pick list <br />
:* ''' Owner '''<br />
:: To add an Owner to the new request, set to ''Manual'' and select start typing the name of the user and then select them from the pick list<br />
:* ''' Site '''<br />
:: To add a Site to the new request, set to ''Manual'' and select a Site from the pick list <br />
:* ''' Status '''<br />
:: To set the status on the new request, set to ''Manual'' and select a status from the pick list <br />
:* ''' Copy Customer? '''<br />
:: To use the same Customer as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Summary? '''<br />
:: To use the same Summary as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Description? '''<br />
:: To use the same Description as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Service? '''<br />
:: To use the same Service as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Priority? '''<br />
:: To use the same Priority as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Category? '''<br />
:: To use the same Category as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Team? '''<br />
:: To use the same Team as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Owner? '''<br />
:: To use the same Owner as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Site? '''<br />
:: To use the same Site as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Status? '''<br />
:: To use the same Status as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' System Timeline Update '''<br />
:: To include a Timeline entry in the new request to record the raising of the new request, set to ''Manual'' and select ''Yes''<br />
:* ''' Manual Timeline Update '''<br />
:: To provide a unique Timeline Update in the new request, set to ''Manual'' and click on the edit button to open the text window to add your unique timeline entry.<br />
:* ''' Visibility'''<br />
:: Set the Visibility of the Timeline Entry if one is provided.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- ****************************************************** START OF OPERATION *********************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="LogNewProblem"></div><br />
* Log New Problem<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bmplognewproblem.png|thumb|link=https://wiki.hornbill.com/images/b/bb/Bmplognewproblem.png|Log New Problem]]<br />
:* '''Request ID'''<br />
:: This is an automatic options and should be set to ''Auto''<br />
:* ''' Summary''' <br />
:: To add a summary to the new request, set to ''Manual'' and provide the required text for the summary<br />
:* ''' Description''' <br />
:: To add a description to the new request, set to ''Manual'' and provide the required text for the description <br />
:* ''' Service '''<br />
:: To add a Service to the new request, set to ''Manual'' and select a Service from the pick list. If a Service is specified without a Catalog Item, the BPM workflow set against this request type on the Service Configuration will be used on the new request.<br />
:* ''' Catalog Item '''<br />
:: To add a Catalog Item to the new request, set to ''Manual'' and provide the name of the Catalog Item. If both a Service and Catalog Item are specified, the BPM workflow set against the Catalog item will be used on the new request.<br />
:* ''' Priority '''<br />
:: To add a Priority to the new request, set to ''Manual'' and select a Priority from the pick list<br />
:* ''' Category '''<br />
:: To add a Request Category to the new request, set to ''Manual'' and click on the edit button to open the Category selector.<br />
:* ''' Team '''<br />
:: To add a Team to the new request, set to ''Manual'' and select a team from the pick list <br />
:* ''' Owner '''<br />
:: To add an Owner to the new request, set to ''Manual'' and select start typing the name of the user and then select them from the pick list<br />
:* ''' Site '''<br />
:: To add a Site to the new request, set to ''Manual'' and select a Site from the pick list <br />
:* ''' Status '''<br />
:: To set the status on the new request, set to ''Manual'' and select a status from the pick list <br />
:* ''' Copy Customer? '''<br />
:: To use the same Customer as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Summary? '''<br />
:: To use the same Summary as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Description? '''<br />
:: To use the same Description as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Service? '''<br />
:: To use the same Service as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Priority? '''<br />
:: To use the same Priority as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Category? '''<br />
:: To use the same Category as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Team? '''<br />
:: To use the same Team as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Owner? '''<br />
:: To use the same Owner as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Site? '''<br />
:: To use the same Site as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Status? '''<br />
:: To use the same Status as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' System Timeline Update '''<br />
:: To include a Timeline entry in the new request to record the raising of the new request, set to ''Manual'' and select ''Yes''<br />
:* ''' Manual Timeline Update '''<br />
:: To provide a unique Timeline Update in the new request, set to ''Manual'' and click on the edit button to open the text window to add your unique timeline entry.<br />
:* ''' Visibility'''<br />
:: Set the Visibility of the Timeline Entry if one is provided.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- ****************************************************** START OF OPERATION *********************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="LogNewRelease"></div><br />
* Log New Release<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bmplognewrelease.png|thumb|link=https://wiki.hornbill.com/images/e/ea/Bmplognewrelease.png|Log New Release]]<br />
:* '''Request ID'''<br />
:: This is an automatic options and should be set to ''Auto''<br />
:* ''' Summary''' <br />
:: To add a summary to the new request, set to ''Manual'' and provide the required text for the summary<br />
:* ''' Description''' <br />
:: To add a description to the new request, set to ''Manual'' and provide the required text for the description <br />
:* ''' Service '''<br />
:: To add a Service to the new request, set to ''Manual'' and select a Service from the pick list. If a Service is specified without a Catalog Item, the BPM workflow set against this request type on the Service Configuration will be used on the new request.<br />
:* ''' Catalog Item '''<br />
:: To add a Catalog Item to the new request, set to ''Manual'' and provide the name of the Catalog Item. If both a Service and Catalog Item are specified, the BPM workflow set against the Catalog item will be used on the new request.<br />
:* ''' Priority '''<br />
:: To add a Priority to the new request, set to ''Manual'' and select a Priority from the pick list<br />
:* ''' Category '''<br />
:: To add a Request Category to the new request, set to ''Manual'' and click on the edit button to open the Category selector.<br />
:* ''' Team '''<br />
:: To add a Team to the new request, set to ''Manual'' and select a team from the pick list <br />
:* ''' Owner '''<br />
:: To add an Owner to the new request, set to ''Manual'' and select start typing the name of the user and then select them from the pick list<br />
:* ''' Site '''<br />
:: To add a Site to the new request, set to ''Manual'' and select a Site from the pick list <br />
:* ''' Status '''<br />
:: To set the status on the new request, set to ''Manual'' and select a status from the pick list <br />
:* ''' Copy Customer? '''<br />
:: To use the same Customer as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Summary? '''<br />
:: To use the same Summary as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Description? '''<br />
:: To use the same Description as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Service? '''<br />
:: To use the same Service as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Priority? '''<br />
:: To use the same Priority as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Category? '''<br />
:: To use the same Category as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Team? '''<br />
:: To use the same Team as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Owner? '''<br />
:: To use the same Owner as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Site? '''<br />
:: To use the same Site as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Status? '''<br />
:: To use the same Status as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' System Timeline Update '''<br />
:: To include a Timeline entry in the new request to record the raising of the new request, set to ''Manual'' and select ''Yes''<br />
:* ''' Manual Timeline Update '''<br />
:: To provide a unique Timeline Update in the new request, set to ''Manual'' and click on the edit button to open the text window to add your unique timeline entry.<br />
:* ''' Visibility'''<br />
:: Set the Visibility of the Timeline Entry if one is provided.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<!-- ****************************************************** START OF OPERATION *********************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="LogNewRequest"></div><br />
* Log New Request<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bmplognewrequest.png|thumb|link=https://wiki.hornbill.com/images/0/05/Bmplognewrequest.png|Log New Request]]<br />
:* '''Request ID'''<br />
:: This is an automatic options and should be set to ''Auto''<br />
:* ''' Summary''' <br />
:: To add a summary to the new request, set to ''Manual'' and provide the required text for the summary<br />
:* ''' Description''' <br />
:: To add a description to the new request, set to ''Manual'' and provide the required text for the description <br />
:* ''' Service '''<br />
:: To add a Service to the new request, set to ''Manual'' and select a Service from the pick list. If a Service is specified without a Catalog Item, the BPM workflow set against this request type will be used on the new request.<br />
:* ''' Catalog Item '''<br />
:: To add a Catalog Item to the new request, set to ''Manual'' and provide the name of the Catalog Item. If both a Service and Catalog Item are specified, the BPM workflow set against the Catalog item will be used on the new request.<br />
:* ''' Priority '''<br />
:: To add a Priority to the new request, set to ''Manual'' and select a Priority from the pick list<br />
:* ''' Category '''<br />
:: To add a Request Category to the new request, set to ''Manual'' and click on the edit button to open the Category selector.<br />
:* ''' Team '''<br />
:: To add a Team to the new request, set to ''Manual'' and select a team from the pick list <br />
:* ''' Owner '''<br />
:: To add an Owner to the new request, set to ''Manual'' and select start typing the name of the user and then select them from the pick list<br />
:* ''' Site '''<br />
:: To add a Site to the new request, set to ''Manual'' and select a Site from the pick list <br />
:* ''' Status '''<br />
:: To set the status on the new request, set to ''Manual'' and select a status from the pick list <br />
:* ''' Copy Customer? '''<br />
:: To use the same Customer as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Summary? '''<br />
:: To use the same Summary as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Description? '''<br />
:: To use the same Description as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Service? '''<br />
:: To use the same Service as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Priority? '''<br />
:: To use the same Priority as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Category? '''<br />
:: To use the same Category as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Team? '''<br />
:: To use the same Team as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Owner? '''<br />
:: To use the same Owner as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Site? '''<br />
:: To use the same Site as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' Copy Status? '''<br />
:: To use the same Status as the originating request, set to ''Manual'' and select ''Yes''<br />
:* ''' System Timeline Update '''<br />
:: To include a Timeline entry in the new request to record the raising of the new request, set to ''Manual'' and select ''Yes''<br />
:* ''' Manual Timeline Update '''<br />
:: To provide a unique Timeline Update in the new request, set to ''Manual'' and click on the edit button to open the text window to add your unique timeline entry.<br />
:* ''' Visibility'''<br />
:: Set the Visibility of the Timeline Entry if one is provided.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<br />
{{infobox|Using these options in your business processes, please be aware of where you are invoking them / placing them in the workflow, and in turn which business processes are going to be invoked against the new Incident or Service Request raised. Please avoid scenario's where one business process may invoke the logging of a new request, where the new request's business process immediately is configured to log a new request which again has a business process which again logs another request immediately creating a loop. The result of which may be a lot of unwanted requests. In the event this occurs, disable the causing business process and resolve the issue.}}<br />
<br />
====Request Service====<br />
<br />
Use the Request Service node, if you wish to automate the availability status setting of the service associated to a request. It can be useful to automate the settings of of a services availability status to both the support community and the subscribed customers of a service, both when a request has been raised and or when it has been resolved, and normal service and availability is resumed.<br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Update Service Status<br />
<div class="mw-collapsible-content"><br />
:* '''Request ID''' - This is an automatic options and should be set to ''Auto''<br />
:* '''Status''' - Select the Status to set the Service's Availability too, or choose No Status if no Status is required to be displayed for the Service. <br />
:* '''Status Message''' - An optional message to be displayed alongside the Status - this will be visible to both analysts supporting the service, and customers subscribed to the service.<br />
[[File:Update_Request_Service_Status.png|centre|600px]]<br />
</div><br />
</div><br />
<br />
===Suspend===<br />
<br />
Use the Suspend node if you wish to suspend the progress of the process until a defined action is performed manually on the Request. This could include waiting for a Priority to be set, a Customer added, Ownership set or the Resolution defined. Configuration options include the ability to specify the context (which Action Bar icon) the Request will appear in whilst waiting for the Suspend (manual action) to be performed. <br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Await Expiry<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Await Expiry<br />
::Use this suspend node to suspend a Request's Business Process until the expire period has been reached.<br />
:* '''Expire Period'''<br />
::This option determines when the node expires. A Duration must be supplied (e.g. 8 Hours). If you wish to use a date/time for expiry, set this option to "ignore" and set the'Expire Date/Time' option below instead. <br />
:* '''Expire Date/Time'''<br />
::This option determines when the node expires. A date/time value must be supplied (e.g. 2040-01-01T12:00:00Z) which can be injected from the Variable Picker. If the "expire period" option has been set, any value in this 'Expire Date/Time' option will be disregarded.<br />
[[File:Suspend_Await_Expiry.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for List of Request Authorisers <br />
<div class="mw-collapsible-content"><br />
::Use this suspend node to present an Authorization Action on a request form that lets you manually assign authorisers at a particular point in the BPM Workflow. Once all authorisers have been submitted, an authorisation task will be sent to all the selected users (''Requests > Suspend > List of Request Authorisers'')<br />
:* '''Action Focus'''<br />
:: Sets the Action Item on a request that will be in focus. When using this suspend node, it is recommended to select the ''Authorisation'' action item.<br />
:* '''Authorization Type'''<br />
:: There are three available Authorization Types. ''Individual'' - Only one of the selected authorizers will be required to approve the authorization in order to proceed. ''Majority'' - At least half of the selected authorizers will be required to approve the authorization in order to proceed. ''Unanimous'' - All of the selected authorizers must approve the authorization in order to proceed.<br />
:* '''Service Owner'''<br />
:: Selecting ''Yes'' will automatically include the owner of the service that the requests is raised against, to the list of authorizers<br />
:* '''Linked Service Owners'''<br />
:: Selecting ''Yes'' will automatically include the owners of the services that are linked to the request, to the list of authorizers<br />
:* '''Linked Assets Owners'''<br />
:: Selecting ''Yes'' will automatically include the owners of the assets that are linked to the request, to the list of authorizers<br />
<br />
:[[File:Information.png|14px|text-top|Information]] Once the authorisers have been submited the ''Auto Assign Authorisation'' BPM node is used to distribute the authorisation tasks. The ''Auto Assign Authorisation'' BPM Node must follow the ''Wait for List of Request Authorisors'' BPM Node, either immediately after or later on in the workflow at the point when you want the authorisations to be sent out. <br />
[[File:WaitforlistofApprovers.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Closure <br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Closure<br />
<br />
[[File:Suspend_Wait_Close.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Closure Category<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Closure Category<br />
<br />
[[File:Closure_Category.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Customer<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Customer<br />
<br />
[[File:at_requests_suspend_waitForCustomer.png|600px]]<br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Suspend and Wait for Feedback * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="SuspendAndWaitForFeedback"></div><br />
* Suspend and Wait for Feedback<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmswaitforfeedback.png|thumb|link=https://wiki.hornbill.com/images/8/83/Bpmswaitforfeedback.png|Wait for Feedback]]<br />
<br />
====Suspend and Wait for Feedback ====<br />
Use this node to suspend the workflow on the request until the customer has provided feedback<br />
<br />
====Options====<br />
:* '''RequestID'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to Auto.<br />
:* '''Action Focus'''<br />
:: Sets the Action Item on a request that will be in focus. When using this suspend node.<br />
:* '''Expire Period'''<br />
:: Set a date and time for which this operation will expire. When this date and time is reached, the BPM will automatically continue. An outcome of ''Expired'' will be provided to allow for a decision node to be place after this operation to determine how the expired operation will be managed.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Suspend and Wait for Request Description * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Description<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Description<br />
<br />
[[File:Suspend_Request_Description.png|600px]]<br />
</div><br />
</div><br />
<br />
<!-- *******************************START OF WAIT FOR REQUEST EMAIL OPERATION DOCUMENTATION *********************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="waitForRequestEmail"></div><br />
* Wait for Request Email<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmwaitforrequestemail.png|thumb|link=https://wiki.hornbill.com/images/a/a1/Bpmwaitforrequestemail.png|Wait for Request Email]]<br />
<br />
==== Wait for Request Email ====<br />
Use this node to suspend the BPM Workflow and wait for an email to be sent from the request.<br />
<br />
==== Options ====<br />
:* '''RequestID'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to Auto.<br />
:* '''Action Focus'''<br />
:: Sets the Action Item on a request that will be in focus. When using this suspend node.<br />
:* '''Expire Period'''<br />
:: Set a date and time for which this operation will expire. When this date and time is reached, the BPM will automatically continue. An outcome of ''Expired'' will be provided to allow for a decision node to be place after this operation to determine how the expired operation will be managed.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for External Reference<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for External Reference<br />
<br />
[[File:Suspend_Request_External.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Linked Services<br />
<div class="mw-collapsible-content"><br />
: Use this suspend option when a request needs to have a linked service added before the process can continue<br />
::Requests > Suspend > Wait for Linked Service<br />
<br />
</div><br />
</div><br />
<br />
<!-- *******************************START OF OPERATION DOCUMENTATION******************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="waitForLinkedRequestUpdate"></div><br />
* Wait for Linked Request Update<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmwaitforlinkedrequestupdate.png|thumb|link=https://wiki.hornbill.com/images/f/fc/Bpmwaitforlinkedrequestupdate.png|Wait for Linked Request Update]]<br />
<br />
==== Wait for Linked Request Update ====<br />
Use this node to suspend the BPM Workflow and wait for an update to be made on a linked request.<br />
<br />
==== Options ====<br />
:* '''RequestID'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to Auto.<br />
:* '''Request Type'''<br />
:: This limits the suspend to only wait for updates from linked requests of the selected type<br />
:* '''Linked Request ID'''<br />
:: This limits the suspend to only wait for updates from a linked request with provided Request ID. This can use variables to automatically populate this information.<br />
:* '''Contains'''<br />
:: Include a string of text which will match the text within the linked request's timeline<br />
:* '''Expire Period'''<br />
:: Set a date and time for which this operation will expire. When this date and time is reached, the BPM will automatically continue. An outcome of ''Expired'' will be provided to allow for a decision node to be place after this operation to determine how the expired operation will be managed.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Owner<br />
<div class="mw-collapsible-content"><br />
:Use this suspend option when a request does not currently have an owner.<br />
::Requests > Suspend > Wait for Request Owner<br />
<br />
[[File:at_requests_suspend_waitForRequestOwner.png| 600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for New Request Owner<br />
<div class="mw-collapsible-content"><br />
:Use this suspend option when the request already has an owner, but it is in a state where it is waiting for a reassignment. <br />
::Requests > Suspend > Wait for New Request Owner<br />
<br />
[[File:Suspendwaitfornewowner.png| 600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Off Hold<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Off Hold<br />
<br />
[[File:Suspend_wait_offhold.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Priority<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Priority<br />
<br />
[[File:at_requests_suspend_waitForRequestPriority.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Category<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Category<br />
<br />
[[File:Suspend_Request_Category.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Resolution<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Resolution<br />
<br />
[[File:at_requests_suspend_waitForRequestResolution.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Site<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Site<br />
<br />
[[File:Suspend_Request_Site.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Status Change<br />
<div class="mw-collapsible-content"><br />
: Use this suspend mode to wait for a change from a particular status. A decision node can follow this to determine the new status and the workflow that follows. This is particularly useful for managing two stage closure where options for resolving, closing, and re-opening can take place. (Requests > Suspend > Wait for Request Summary)<br />
<br />
:* '''Action Focus'''<br />
:: Sets the Action Item on a request that will be in focus. When using this suspend node.<br />
:* '''From Status'''<br />
:: Set the status that you want to suspend the workflow until that particular status has changed. An example would be to set this as ''Resolved'' so when it changes from this status to either ''Open'' or ''Closed'' you can branch using a decision node to manage the process for the new status. If using a decision node and custom expression ensure you use '''Status.Open''' Etc in your condition rather than just '''Open'''.<br />
:* '''Expire Period''' <br />
:: The ''Expire Period'' will automatically come out of the suspend mode and progress the workflow. If there are no changes to the ''From Status'' within the expiry period a decision node can be used to include steps in your process when this occurs. This could be used for automatic closure of the request as the result of the Expiry Period being met.<br />
<br />
[[File:bp_suspend_wait_status_change.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Summary<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Summary<br />
<br />
[[File:Suspend_Request_Summary.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Team<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Team<br />
<br />
[[File:at_requests_suspend_waitForRequestTeam.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Wait for Request Update<br />
<div class="mw-collapsible-content"><br />
::Requests > Suspend > Wait for Request Update<br />
<br />
[[File:Suspend_Request_Update.png|600px]]<br />
</div><br />
</div><br />
<br />
====Update Request====<br />
<br />
Use the Update Request node to automatically update the values of specific Request attributes at any stage in the process. Examples being updating the Logging or Closing Categories of a Request.<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Logging Category<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Logging Category<br />
<br />
Specify the logging category which will associated to the request. This is typically used where the category of the request is known based on the business process being associated against a specific request catalog item, and as such the analyst is not required to make a manual assessment and categorisation. <br />
<br />
[[File:updateRequestCategoryNew.jpg|700px]]<br />
:* '''Category''' - This option will prompt you to select a Category. If supplied, "Category (From Variable)" option will be ignored.<br />
:* '''Category (From Variable)''' - This option requires you to provide the Id of a Category (Value of h_id column in h_sys_profiles table). This can be used when a field that is driven by a Simple List made up of Categories is set up in a Progressive Capture. This option should only be supplied if "Category" option is not set.<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Closure Category<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Closure Category<br />
<br />
Specify the closure category which will be associated to the request. This is typically used where the business process is set to automatically resolve or close and the analyst is not required to manually resolve and specify a closure category. <br />
<br />
[[File:Closure_Category.png|600px]]<br />
:* '''Category''' - This option will prompt you to select a Category. If supplied, "Category (From Variable)" option will be ignored.<br />
:* '''Category (From Variable)''' - This option requires you to provide the Id of a Category (Value of h_id column in h_sys_profiles table). This can be used when a field that is driven by a Simple List made up of Categories is set up in a Progressive Capture. This option should only be supplied if "Category" option is not set.<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<!-- ******************************************************************************************* --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="UpdateCustomer"></div><br />
* Update Customer<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmupdatecustomer.png|thumb|Update Customer|link=https://wiki.hornbill.com/images/f/f5/Bpmupdatecustomer.png]]<br />
==== Update Customer ====<br />
Use this node to automatically add or update a request with a Customer<br />
==== Options ====<br />
{{Bullet1|Request ID|This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to Auto}}<br />
{{Bullet1|Co-Worker|Select a Co-worker that will be used as the customer of the request}}<br />
{{Bullet1|Contact|Select a Contact that will be used as the customer of the request}}<br />
{{Bullet1|Co-worker (From Variable)|Use a variable to populated the customer, based on a Co-worker ID}}<br />
{{Bullet1|Contact (From Variable)|Use a variable to populate the customer, based on a contact ID}}<br />
{{Bullet1|System Timeline Update|Select if the default system text will be added to the timeline for this action}}<br />
{{Bullet1|Manual Timeline Update|Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action}}<br />
{{Bullet1|Visibility|Choose what level of visibility will be automatically applied to this update. Choosing anything other than Customer will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals.}}<br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************END OF OPERATION DOCUMENTATION***************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Custom Fields<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Custom Fields<br />
<br />
This provides the ability to update any or all of the custom fields of a request. The input box is single line only and values should be restricted to 255 characters which is the defined max length for all custom fields. When populating custom fields please pay attention to the type of value you are populating, and ensure this is compatible with the type of field you have specified for the corresponding custom field in the request type and service form designer in the user interface. <br />
<br />
[[File:Update_Request_Custom_Fields.png|600px]]<br />
:* '''Custom Field A - T & Custom Field 21 to 40''' - Populate the required custom field(s) with the value(s) that you wish to update the custom field(s) with. This can be text and/or attributes from the Variable Picker.<br />
:* '''Append Text''' - This determines if the supplied value of the custom field, should append any existing value of the custom field. By default this is set to replace any existing value, with the value defined here.<br />
:* '''Format Checkbox Value''' - This option determines whether the value from a checkbox (i.e. Outcome Field from a Human Task) is formatted to remove the square brackets and double quotes. By default, this option is set to "No".<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<!-- **************************************************** START OF UPDATE DETAILS ************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px" id="Details"><br />
* Details<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:updaterequestdetailsbpm.png|thumb|link=https://wiki.hornbill.com/images/9/9e/Updaterequestdetailsbpm.png|Update Request Details BPM]] Use this operation to update the Summary and Description of a request. You can either add a new summary or description or append to the existing values. <br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''Summary'''<br />
:: Set to ''Auto'' if you want to use an output variable from a previous BPM operation where that variable is named ''summary''. If the variable ''summary'' does not exist, no action will be taken. Set to ''Manual'' to provide the information to be used to update the summary. This can include the use of [[Request Variables| Request Variables]]. Set to ''Ignore'' if no action is required.<br />
:* '''Description'''<br />
:: Set to ''Auto'' if you want to use an output variable from a previous BPM operation where that variable is named ''description''. If the variable ''description'' does not exist, no action will be taken. Set to ''Manual'' to provide the information to be used to update the Description. This can include the use of [[Request Variables| Request Variables]]. Set to ''Ignore'' if no action is required.<br />
:* '''Append Text'''<br />
:: Set to ''Auto'' if the update is to replace the existing text. Set to ''Manual'' and select ''Yes'' to append the update to the end of the existing text<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' <br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************************** END OF UPDATE DETAILS ************************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* External Reference<br />
<div class="mw-collapsible-content"><br />
:: Use this operation to update the External Reference field that is held against the requests.<br />
<br />
[[File:bp_update_external_ref.png|600px]]<br />
:* '''External Reference'''<br />
:: Either enter an external reference number or use the variable picker to take the External Reference held in a variable<br />
:* '''System Timeline Update'''<br />
:: Select ''Yes''if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select ''Yes'' to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals.<br />
</div><br />
</div><br />
<br />
<!-- **************************************************** START OF FIRST TIME FIX ************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px" id="Details"><br />
<div id="FirstTimeFix"></div><br />
* First Time Fix<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:firsttimefixbpm.png|thumb|link=https://wiki.hornbill.com/images/f/f8/Firsttimefixbpm.png|First Time Fix]] Use this operation to update the First Time Fix flag on a request. You can apply the rules to set the requirements for a first time fix. This operation should be added at point within the workflow when the request has reached a resolved state. <br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''No Team Reassignments'''<br />
:: Set to ''Yes'' If you wish to include the rule that there must not be any team reassignments in order to be classed as a first time fix. Set to ''Auto'' or ''No'' to exclude this rule.<br />
:* '''No Owner Reassignments'''<br />
:: Set to ''Yes'' If you wish to include the rule that there must not be any owner reassignments in order to be classed as a first time fix. Set to ''Auto'' or ''No'' to exclude this rule.<br />
:* '''No Hold Time'''<br />
:: Set to ''Yes'' If you wish to include the rule that there must not be any point at which this request was placed on hold. Set to ''Auto'' or ''No'' to exclude this rule.<br />
:* '''Max Open Time'''<br />
:: Set to ''Manual'' and add an amount of time to include the rule that the request must be resolved within this time frame to count as a first time fix. Set to ''Auto'' to exclude this rule. Putting a request on-hold does not extend the ''Max Open Time''.<br />
:* '''Include Working Time Calendar'''<br />
:: Set to ''Manual'' and chose a Working Time Calendar to include the use of a Working Time Calendar when calculating the ''Max Open Time''. Set to ''Auto'' to exclude this rule<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' <br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- **************************************************** END OF FIRST TIME FIX ************************************************************** --><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Place On Hold<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
<br />
[[File:bpmplaceonhold.png|thumb|link=https://wiki.hornbill.com/images/5/5c/Bpmplaceonhold.png|Place On Hold]] Use this operation to automatically put a request on-hold when a point within the workflow has been reached.<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''On Hold Period'''<br />
:: Enter the number of Years, Months, Days, Hours, and Minutes that the request will be on hold for.<br />
:* '''On Hold Period Apply Working Time Calendar'''<br />
:: Set this to ''Yes'' to apply the WTC that is associated to the request to be used. This will ensure that the request comes off hold during work hours.<br />
:* '''Reason'''<br />
:: Include information that describes the reason for the request being placed on-hold.<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' <br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals.<br />
:* '''Sub-Status'''<br />
:: Set the sub-status of the request when the request is placed on-hold<br />
|}<br />
</div><br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Priority<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Priority<br />
<br />
Use this node to set the '''Priority'''' of the request. This can be useful when your business process is supporting a specific request catalog item, and the '''Priority''' for such items can be predetermined and therefore can be set. It is also useful to use within a process where a decision node may branch and different '''Priorities''' are possible depending on the path followed. Decide if the setting of the '''Priority''' should also mark the request timeline.<br />
<br />
[[File:Update_Priority.png|600px]]<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Resolution Text<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Resolution Text<br />
<br />
Use this node to set the '''Resolution Text'''' of the request. This can be useful when your business process is supporting a specific request catalog item, and the '''Resolution''' for such items can be predetermined and therefore can be set. <br />
<br />
[[File:Update_Request_Resolution_text.png|600px]]<br />
:* '''Resolution Text''' - The text which will appear in the resolution text box (this can include the use of request variables)<br />
:* '''Overwrite Resolution Text''' - Decide if this option should overwrite and replace any existing text in the resolution field - by default this is set to No<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Service Level<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Service Level<br />
<br />
Use this node to update the Service Level that has been applied to the request. This can be used to apply a Service Level if one has not been allocated or if at a point in your workflow you would like to automatically re-assess the applied Service Level, this will use your Service Level Rules and check for any changes to the request to determine if a change is Service Level is required.<br />
<br />
:* '''There are no options required for this operation.'''<br />
:: Because of how this operation works there are no options to select from. It simply executes the operation. <br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Update Site * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="UpdateSite"></div><br />
* Site<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:bpmupdatesite.png|thumb|link=https://wiki.hornbill.com/images/0/03/Bpmupdatesite.png|Update Site]]<br />
<br />
==== Site ====<br />
Use this node to set the ''Site'' of the request. The configuration options include pre-defining the ''Site'' from the full list of Sites, which have been created in Organisational structure or from a variable.<br />
==== Options ====<br />
:* '''Request ID'''<br />
:: In almost all cases, this should be set to ''Auto'' which will take the global variable for the request ID that the BPM is associated and apply all selected options to this request.<br />
:* '''Site'''<br />
:: Select from the list of available sites as defined under the Organizational Data in Administration<br />
:* '''Site ID (From Variable)'''<br />
:: Use a variable that has been populated from Progressive Capture to set the Site. The Group Picker option on the Custom Progressive Capture form will be the most common way of providing the Site ID in a variable.<br />
:* '''System Timeline Update''' <br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' <br />
::Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility'''<br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than ''Customer'' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
|}<br />
</div><br />
</div><br />
</div><br />
<!-- ************************************************************************************************************** --><br />
<!-- * Update Site (Customer's Site) * --><br />
<!-- ************************************************************************************************************** --><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Site (Customer' Site)<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Site (Customer's Site)<br />
<br />
Use this node to set the '''Site''' of the request to that of the site defined against the customer of the request. Decide if the setting of the '''Site''' should be marked on the requests timeline.<br />
<br />
[[File:Update_Customers_Site.png|600px]]<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
<div id="UpdateRequestSource"></div><br />
* Source<br />
<div class="mw-collapsible-content"><br />
<div style="border:1px solid #e6e6e6; background:#f2f2f2; width:99%; padding:4px; margin-bottom:10px;"><br />
::{|<br />
|- valign="top"<br />
|style="width:700px"|<br />
[[File:updaterequestsourcebpm.png|thumb|link=https://wiki.hornbill.com/images/5/57/Updaterequestsourcebpm.png|Update Request Source BPM]] The Update Request Source operation allows you to automatically set the source of the request. A number of default sources such as Email, Analyst, Self Service, and Post are added and based on the how the request was raised. This BPM Operation lets you over-ride these source names and allows you to add your own.<br />
<br />
:* '''Request Id'''<br />
:: This is a mandatory setting that uses a variable to hold the Request Id of the request that is using this BPM. This should be set to ''Auto''.<br />
:* '''Source'''<br />
:: Either enter the text that you would like to use to represent the source or you can have this automatically provided by using the variable option.<br />
:* '''System Timeline Update'''<br />
:: Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update'''<br />
:: Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' <br />
:: Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals.<br />
|}<br />
</div><br />
</div><br />
</div><br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Status / Sub-status<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Status<br />
<br />
Use this node to set the '''Status''' and or '''Sub-Status''' at one or multiple points in a process. It can be useful to automate the changing of the status based on other process actions, without the need for human intervention. <br />
<br />
[[File:business_process_update_status.png|600px]]<br />
:* '''Status''' - Optionally select the Status you wish the Request to be set too<br />
:* ''' Sub-Status''' - Optionally select the Sub-Status you wish the Request to be set too<br />
:* '''System Timeline Update''' - Select if the default system text will be added to the timeline for this action<br />
:* '''Manual Timeline Update''' - Select Yes to override the default System timeline Text, and add your own text which will appear in the timeline update for this action<br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals. <br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Timeline<br />
<div class="mw-collapsible-content"><br />
::Requests > Update Request > Timeline<br />
<br />
Use this node to update the '''Timeline''' of a request with a predefined comment. This can be useful when it is important to post information to or an update onto a request based on a prior process action. <br />
<br />
[[File:bp_update_timeline.png|600px]]<br />
:* '''Update Text''' - Define the text to appear in the timeline update, this can include variables from the request or related entities using the variable picker<br />
:* '''URL''' - Include a URL which will be embedded into the timeline update of the request. <br />
:* '''Visibility''' - Choose what level of visibility will be automatically applied to this update. Choosing anything other than '''Customer''' will result in the customer not seeing the update in the timeline of their requests on the Service or Customer Portals.<br />
</div><br />
</div><br />
<br />
====Request Timers====<br />
<br />
Use the Request Timer nodes at any stage in the process to either start or stop the Response and or Resolution timers. It is not a perquisite to have to use any timers within processes or to have to use both Response and Resolution timers when timers are used.<br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Start Resolver Timer<br />
<div class="mw-collapsible-content"><br />
::Application > Timer > Start Resolver Timer<br />
<br />
Use this node at the required point in the process to start the resolution timer. When selecting this option, the resolution timer will be based on the '''Priority''' associated to the request. The target and any required escalation actions for the resolution timer can be configured in the Service Manager application '''> Services > Service Levels > Resolve Times'''.<br />
<br />
[[File:at_requestTimers_resolutionTimers_startResolutionTimer.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Stop Resolution Timer<br />
<div class="mw-collapsible-content"><br />
::Application > Timer > Stop Resolver Timer<br />
<br />
Use this node to stop the resolution timer at the required point in the process. <br />
<br />
[[File:at_requestTimers_resolutionTimers_stopResolutionTimer.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Start Response Timer<br />
<div class="mw-collapsible-content"><br />
::Application > Timer > Start Response Timer<br />
<br />
Use this node at the required point in the process to start the response timer. The response timer to use can be selected on the node, and will use the response target and any associated escalation actions which can be configured in the Service Manager application '''> Services > Service Levels > Response Times'''.<br />
<br />
[[File:at_requestTimers_responseTimers_startResponseTimer.png|600px]]<br />
</div><br />
</div><br />
<br />
<div class="mw-collapsible mw-collapsed" data-collapsetext="Show Less" data-expandtext="Read More" style="width:700px"><br />
* Stop Response Timer<br />
<div class="mw-collapsible-content"><br />
::Application > Timer > Stop Response Timer<br />
<br />
Use this node at the required point in the process to stop the response timer.<br />
<br />
[[File:at_requestTimers_responseTimers_stopResponseTimer.png|600px]]<br />
</div><br />
</div><br />
<br />
[[Category:Service Manager]]</div>Victors