This is the first of three articles on Ticket Communications, and they focus on the Create Communication action in the Ticket based applications. The articles do discuss a bit about Roles and Communication Templates but only to see how they are applied, there is scope for other articles on those two applications.

To help you navigate to the right article they are as follows:

  • Ticket Communications (1)
    • Create Communication using People tab
    • Create Communication using Roles tab (but not roles based on a Person Group)
    • Create Communication using a Communication Template
    • Create Communication using Person Groups tab
  • Ticket Communications (2)
    • Create Communication using Person Group Role
      • Broadcast Enabled
      • Broadcast Disabled
    • Create Communication with Attachments
  • Ticket Communications (3)
    • Standard Communication Templates
    • Global Communication Templates
    • Global Ticket Roles
    • Global Ticket Communications
    • System Properties

Create Communication using People tab

We have just received a new Service Request 1336 from Fran Garcia on behalf of Ed Adams.

From the Service Request Details she says “The conference room on the 4th floor is too hot, makes it unusable in the afternoons particularly. My manager Ed uses this conference room a lot for team meetings and with clients. Please can someone review ASAP.”. She has given this an Urgent priority (1 in Reported Priority) and looked up the location CONF400 – Conference Room #400. She sounds great, fancy looking up the location or asset as our script indicates, many can’t be bothered!

I’ve used the action Take Ownership, and this has made me, AJE – Andrew Jeffery, the Owner of the Service Request, the Status has also been changed to QUEUED, which is automatic when ownership is first assigned.

Now I want to send an email acknowledgement to Fran, you can do this from within Maximo using the Create Communication action.

When the Create Communication action opens the Send From defaults to the logged in user’s Primary Email address. You could just type in email addresses in the To, cc or bcc fields, but you are likely to look them up. Next to the To field, the Select Value dialog has three tabs. The People tab allows you to filter for the People registered in Maximo and then you can choose whether to add them to the To, cc or bcc fields on the communication.

When the OK button is used the email address of the selected persons is transferred to the To, cc or bcc fields depending on what you selected. You can then type in the Subject and Message Details. I wrote:

  • Subject – Acknowledge receipt of Service Request 1336
  • Message – Hi Fran,  We received your service request and will be looking at this for you.   Regard – Andrew   0777-18216742.   Andrew.Jeffery@znapz.com

When ready you can use the Send button. Notice the Message has the rich text formatting (RTF) toolbar which includes a spell checker.

Once sent it will appear in the Communication Log which you can find in the Log tab. The email messages that you send can be logged against the record from which they were sent, which is much better than using your normal email message box, as you are keeping a history with the Service Request in Maximo.

Incidentally, a person can have multiple email addresses and if this is the case then in the People tab, they appear multiple times. Only one of these email addresses per person can be marked as Primary and this is the one that is shown on the People application. If a person does not have an email referenced in their person record, then they will not show up in the People tab.

Create Communication using Roles tab

A role is a function that resolves to a person or team. We will create a role for the Reported By Person and Affected Person on a Service Request.

In the Roles application there are a number of standard roles, but not one for the Reported or Affected Persons on a Service Request. Rather than searching for persons that you wish to send an email message to, you could just refer to a role.

I’ve created a new role SRREPPERS – SR Reported Person – and have chosen the type – A set of data related to the record, this is referred to as the DATASET type. There are six types but this one is the most common, it allows you to reference an Object and Attribute that refers to a person or email.

To make it easier to find roles based on an Object it is best to create a naming convention that includes the first two or three characters of the object.

The object is SR and in the Value field there is a lookup for the attributes that are in the SR object or that may be related to it through the relationship hierarchy. I am selecting REPORTEDEMAIL.

The Value field is set to :reportedemail. When the attribute that you have selected represents an email address you need to check the E-mail attribute. For a Service Request it is better to choose the REPORTEDEMAIL because you can create a service request by entering a name and email that does not exist as a Person record. In a minute, I’ll show a different way of doing this for the Affected Person, it is not the preferred way but then this is just an illustration.

I’ve duplicated the role and called it SRAFFPERS – SR Affected Person. This time I have selected the attribute AFFECTEDPERSON. Maximo will look up the primary email of this person, so in this case you leave the attribute E-mail unchecked.

Now when you use the action Create Communication and open the dialog next to the To field, instead of looking up multiple persons from the People tab, in the Roles tab you can filter by SR and select the two roles. SRREPPERS will go to the To field of the message and the SRAFFPERS role will go to the cc field of the message.

The result is that the email addresses of Fran Garcia and Ed Adams have been found by evaluating the roles and they have been entered in the To and cc address fields.

Create Communication using a Communication Template

Our original email message could have been created using a Communication Template that uses the two roles we have created.

When using the Create Communication action you can use the Select Value on the Template field to look up an existing Communication Template. This can either be a static template, or a dynamic one that contains a set of bind variables that resolve to field values when the communication template is applied. The Communication Template I have created is SRACK – Service Request Acknowledgement.

If you look at the Subject – Acknowledge receipt of Service Request 1336 – the “1336” is a value that has been resolved from a bind variable, in this case – :ticketid.

The Communication Template application can be found in the Administration module and in the System Configuration – Platform Configuration module. This article will not go into the details of the Communication Template but just show enough so that you can see the features relevant to the email communication we are creating.

From the top of the screen, you can see that Communication Templates are created against an object, I entered SR in the Applies To field. You also need to say where they will be Accessible From, with options ALL, APPS, ESCALATION and WORKFLOW, I chose ALL. When the communication is sent, we would like a record of it created in the Log – Communication Log tab, so I have checked the Comm Log Entry field.

The two roles we created earlier are in the To/cc fields SRREPPERS, SRAFFPERS, they are entered under the Recipients tab which I’ll show you in a second.

The Send From, Subject and Message all contain bind variables, which is something starting with a colon (:).

In the Subject the :ticketid is an attribute bind variable which simply substitutes this for the value of the attribute TICKETID. The subject contains a mix of text and the one bind variable – “Acknowledge receipt of Service Request :ticketid”.

In the Message we have four bind variables. I’ll start with the simplest a relationship bind variable :person.firstname. The PERSON is a relationship you will find in either SR or TICKET objects, in this case the TICKET object. The Service Request object is built on top of Tickets and so you might find a suitable relationship in either object. It says follow the relationship PERSON to its child object (PERSON) and give me the value of its FIRSTNAME attribute. The PERSON relationship is defined with a where clause of personid=:reportedby. The PERSONID in the PERSON object is equal to the REPORTEDBY field in the TICKET object. If it can’t resolve this, we will just get “Hi” instead of “Hi Fran”.

For all the other bind variables I had to first create a relationship which I called USER.

Relationships can be created in the Database Configuration application. For the USER relationship the parent object is TICKET and the child object is PERSON and the Where Clause is “personid=:&PERSONID&”. The bind variable, anything proceeded by a colon (:), in this case, is a special bind variable, :&PERSONID& resolves to the person of the current logged in user. You can read about these special bind variables here: https://www.ibm.com/support/pages/username-appname-and-other-special-bind-variables-you-can-use

Regards – :user.displayname – uses this new relationship to provide the display name of the logged in user, with “Regards – ” being static text.

:user.primaryphone.phonenum – uses the new relationship USER and determines the phone number of the primary phone. This is tracking from the PERSON object to the PHONE object to find the person’s phone number that is marked as primary (ISPRIMARY=:yes). “:yes” is translated to 1 when the underlying SQL is fired.

:user.primaryemail.emailaddress – uses the new relationship USER and determines the email address of the primary email. This is tracking from the PERSON object to the EMAIL object to find the person’s email address that is marked as primary (ISPRIMARY=:yes). The same bind variable was used in the Send From field on the Communication Template.

In the Recipients tab of the Communication Template, the first table window allows you to select one or more Roles. I had used the Select Roles button and found the two roles SRREPPERS – SR Reported Person, and SRAFFPERS – SR Affected Person. Once selected you then check where you wish the resolved emails to be displayed in the message, To, cc or bcc.

A Communication Template can consist of Roles or various combinations of Persons, Person Groups, or specific E-mail addresses. If you end up creating duplicate email addresses when all these recipients are resolved, don’t worry, only one email will be sent to a person.

Create Communication using Person Groups tab

When a Person Group is selected the recipient list is dependent on both the Organization (ORGID) and Site (SITEID) settings on the ticket and the settings of the members of the Person Group. The members of the person group (PERSONGROUPTEAM) can be defined against an organization (USEFORORG) and site (USEFORSITE). The Group, Organization and Site Defaults do not have any effect, it is assumed you wish to broadcast to all relevant members of the person group.

Beware, that the Organization of a Ticket-based application may be hidden, but it does exist, and it will be set in the background if you select a Vendor. The following tests were performed against a Service Request (SR).

The Service Request 1336 is still at the System Level, there is no Organization or Site. When you use the Create Communication action and from the To field’s Select Value, you can choose to apply one or more Person Groups from the Person Groups tab. We picked the SAFETY Person Group.

When the OK button is used only the email Tory.Little@maxdemo.com was selected.

If the SR has no ORGID or SITEID then it will send the communication to those Person Group members who have:

  • no USEFORORG or USEFORSITE.
  • GROUPDEFAULT=1 (added after further tests, see note below)

We have added Vendor BURSAW to Service Request 1336, and the Organization field shows EAGLENA, you can just make out those fields to the right of the dialog, in the background. As before, we used the Create Communication action and from the Person Groups tab selected the SAFETY Person Group.

When the OK button is used the emails of Rebecca.Allen@maximodemo.com, Michael.Small@maximodemo.com, Tory.Little@maxdemo.com were selected.

If the SR has an ORGID but no SITEID then it will send the communication to those Person Group members who have: 

  • no USEFORORG or USEFORSITE
  • or the same USEFORORG value as ORGID.

We have added Site BEDFORD to Service Request 1336. As before, we used the Create Communication action and from the Person Groups tab selected the SAFETY Person Group.

When the OK button is used the emails of andrew.jeffery@znapz.com, Rebecca.Allen@maximodemo.com, Tom.Kazmier@maximodemo.com, Michael.Small@maximodemo.com, Tory.Little@maxdemo.com were selected.

If the SR has an ORGID and a SITEID then it will send the communication to those Person Group members who have: 

  • no USEFORORG or USEFORSITE
  • or the same USEFORORG value as ORGID
  • or the same USEFORSITE value as SITEID
  • GROUPDEFAULT=1 (added after further tests, see note below)

In summary then:

  • If the SR has no ORGID or SITEID then it will send the communication to those Person Group members who have:
    • no USEFORORG or USEFORSITE.
    • GROUPDEFAULT=1
  • If the SR has an ORGID but no SITEID then it will send the communication to those Person Group members who have: 
    • no USEFORORG or USEFORSITE
    • or the same USEFORORG value as ORGID.
  • If the SR has an ORGID and a SITEID then it will send the communication to those Person Group members who have: 
    • no USEFORORG or USEFORSITE
    • or the same USEFORORG value as ORGID
    • or the same USEFORSITE value as SITEID
    • GROUPDEFAULT=1

Note. In the next article I added more people to the Person Group, and I discovered that when there was no Organization or Site on the Service Request the person marked as the Group Default was also included, and so I added this in the summary above, although the illustrations did not show this. I also found that the Group Default was selected when the Service Request referenced a Site, but not when it referenced an Organization.