In my previous posts in this series (New Starter/Leaver Process – Part 1 and New Starter/Leaver Process – Part 2) I described, diagrammatically, a new starter business process that could be implemented in Service Desk Express as shown below:
In the final part of this series I am going to finish it off with the business rules that tie everything together. Before I do so I should mention that I have made some changes to the Function GET_STD_CONFIGS detailed in the previous post. So if you downloaded this before please go ahead and download it again and run it against your Service Desk Express database.
The first business rule we need is to create the new starter ticket (incident) when a client is created:
CL01 – Client Insert Create New Starter Ticket
Conditions
when a Client
Create occurs with
Expression 1 | Comparison Operator | Expression 2 | Logical Operator |
---|---|---|---|
No Conditions |
Actions
Action 1
Method | Module | Form |
---|---|---|
Create | Incident | Incident (base) |
Field Name | Value |
---|---|
Client ID | {TR,Client ID} |
Company ID | {TR,Company ID} |
Group Name | HELPDESK |
Subject ID | ZZNS |
Status ID | OPEN |
Description | New Starter |
Not very exciting but it does the job. Now we need a business rule that is going to send an email to the new starter’s supervisor (a new foreign key in the Client module referencing the Client module called Seq.Supervisor) and create a new work order for the SYSTEM ADMINS to create an Active Directory and Exchange account.
HD01 – New Starter Ticket Stage 01
Conditions
when a Incident
Create occurs with
Expression 1 | Comparison Operator | Expression 2 | Logical Operator |
---|---|---|---|
{TR,Subject ID} | Equals | ZZNS | None |
Actions
Action 1
Method | Module | Form |
---|---|---|
Create | Notifications | Notifications |
Field Name | Value |
---|---|
Subject | Service Desk Notification: New Starter Approval Required |
Body | {TEMPL,HD14} |
Notification Module Descr | SMTP Email |
Client ID | {DB,Clients,Supervisor Client ID,”Sequence” = {TR,Seq.Client}} |
Action 2
Method | Module | Form |
---|---|---|
Create | Work Orders | Work Orders |
Field Name | Value |
---|---|
Incident # | {TR,Incident #} |
Client ID | {TR,Client ID} |
Company ID | {TR,Company ID} |
Group Name | SYSADMINS |
Subject ID | ZZNSEX |
Status ID | OPEN |
Description | Please create a new Active Directory / Exchange account for this new starter. Once complete, please update the client’s email address by clicking the Faces icon near the Client Information at the top of this form and entering the email address created. Thank you. |
Resolution | AD/Email Account Created and Client Successfully Updated. |
Notification Business Rules Template HD14 referenced in the above business rule makes use of a two other templates created in my HTML Email Template post. Make sure you create the _HTML_HEAD and _HTML_FOOT templates otherwise this business rule wont work properly.
HD14 – New Starter Email To Supervisor
Template Name | HD14 |
---|---|
Template Data | {TEMPL,_HTML_HEAD} <P>Dear {DB,Clients,Supervisor First Name,”Sequence” = {TR,Seq.Client}},</P> <P> A new starter request has been raised for {TR,First Name} {TR,Last Name}. As the supervisor of this new starter you are required to specify which equipment configuration they will require. Please click on one of the links below and then send the email generated. </P> <H2>Eqiupment Selection</H2> <TABLE> {MATH,(SELECT _SMDBA_.GET_STD_CONFIGS({TR,Incident #}))} </TABLE> <P> Thank you for your assistance with this service request. </P> {TEMPL,_HTML_FOOT} |
That’s half of our business process complete. The email that is sent will automatically list all the Standard CI Assemblies available complete with hyperlinks such that when the supervisor clicks on their choice it will create an email configured in a way that we can pick up the inbound email and continue the business process. To pick up the inbound email from the supervisor we need a Mail Listen type business rule.
ML01 – New Starter Approval Received
Conditions
when a Mail Listen
Create occurs with
Expression 1 | Comparison Operator | Expression 2 | Logical Operator |
---|---|---|---|
{TR,Subject} | Contains | Service Desk Notification: New Starter Approval Given | None |
Actions
Action 1
Method | Module | Form |
---|---|---|
Create | Work Orders | Work Orders |
Field Name | Value |
---|---|
Incident # | {EXTRACT,^^,{TR,Subject}} |
Client ID | {DB,Incident,Client ID,”Incident #” = {EXTRACT,^^,{TR,Subject}} } |
Company ID | {DB,Incident,Company ID,”Incident #” = {EXTRACT,^^,{TR,Subject}} } |
Group Name | DESKTOPS |
Subject ID | ZZNSWS |
Status ID | OPEN |
Description | Please build a {DB,Standard CI Assembly,Description,”Name” = ‘{EXTRACT,[],{TR,Subject}}’} for the above user.
Additional Comments: |
The above business rule simply creates the new workstation work order for our DESKTOPS team advising them of the choice our supervisor has made. The final business rule is the one that assigns the parent Service Request to the HR team for them to complete the new user induction. The trick here though is how do you know which work order is going to be completed first and how to you know when both work orders have been completed. The answer to the first is that you don’t (although you could take a good guess) and as such you need to allow for the fact that either of the work orders could be the last to be closed and should thus trigger this final business rule.
WO01 – New Starter WOs Completed
Conditions
when a Work Orders
Update occurs with
Expression 1 | Comparison Operator | Expression 2 | Logical Operator |
---|---|---|---|
{DB,Incident,Subject ID,”Incident #” = {TR,Seq.HD #}} | Equals | ZZNS | And |
{MATH,(SELECT COUNT(*) FROM _SMDBA_._WORKORD_ WHERE STATUS = ‘O’ AND HDNUM = {TR,Seq.HD #})} | Equals | 0 | And |
{MATH,(SELECT COUNT(*) FROM _SMDBA_._WORKORD_ WHERE HDNUM = {TR,Seq.HD #})} | Equals | 2 | None |
Actions
Action 1
Method | Module | Form |
---|---|---|
Update | Incident | Incident (base) |
Field Name | Value |
---|---|
Incident # | {TR,Seq.HD #} |
Group Name | HR |
Description | Please provide a new user induction for the above user. |
So essentially what we are doing here is checking that the parent Incident / Service Request is a New Starter one and that the total number of linked Work Orders is 2 and the total number of open linked Work Orders is 0 i.e. they have all been closed.
Summary
Whilst this business process could have been a lot more complicated (I once implemented one with 6 parallel work orders etc.) this series of posts have shown how it is possible to chain business rules together to deliver a real business process. Hope this helps. As always, any feedback, positive or negative is always welcome. Thanks for reading.